diff --git a/CHANGELOG.md b/CHANGELOG.md index 1157e4447..bd15cdecd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,36 @@ engine: the file chooser relay and the per-turn browser tokens are in the ### Added +- **Export evaluation run reports as JSON, HTML and Markdown** (`activeagent`, + `actionagent`). `GET /api/evaluation_reports/:run_id`, with the + ingest key and scoped to the tenant like the POST (and refused on a + single-tenant install that set no key), returns a complete run + as the version-1 envelope the collector takes, so a run moves to another + install with one POST and posting it back is an identical retry (200); + `?format=html` returns the run's report page and `?format=md` its + Markdown, and `?download=1` an attachment of any of them. + An imported run exports under its published `run_id`, a dashboard run + under `dashboard-run--`. `ActiveAgent::Evals::Publisher.envelope` + builds the envelope for both the publisher and the export. The dashboard's + run report adds `report.json` and `report.md` (one piece with + `?part=verdict|fix_items|scenario`), and `?download=1` saves any format + as `-run-.`; the run report view and the suite's run + header get *Download HTML / JSON / Markdown*. New rake tasks: + `action_agent:evaluations:export RUN=… [EVALUATION=…] FORMAT=json|html|md [FILE=…]` + and `action_agent:evaluations:import FILE=… [ACCOUNT_ID=…]`. + +- **Copy as Markdown** (`activeagent`, `actionagent`). `Report#to_markdown` + now has the HTML page's content in GitHub-flavored Markdown: the verdict's + rationale, What to fix from `Report#fix_items` (replacing the old + Recommendations list), and every scenario's answers in a `
` block + with a per-model table; table cells escape `|` and line breaks. Its pieces + are public — `verdict_markdown`, `fix_items_markdown(model:)`, + `fix_item_markdown(item)`, `scenario_markdown(key)` — and the dashboard + and the standalone HTML page copy each of them: the whole report, the + verdict with the comparison, What to fix for the filtered model, a fix + card, and a scenario. The HTML page now carries one inline script for + those buttons, with a clipboard fallback. + - **Upload files to a page through the sandbox browser's live view** (`actionagent`, `@activeagents/browser-sidecar`). A file chooser the page opens while someone drives is answered from the driver's own machine diff --git a/actionagent/README.md b/actionagent/README.md index 539e33ad2..bdb2d5805 100644 --- a/actionagent/README.md +++ b/actionagent/README.md @@ -100,6 +100,29 @@ the engine logs a warning at boot and the dashboard renders blank with (and, for an API-only app, re-enable the asset initializer and middleware) and the bundles are served with nothing else to configure. +## Evaluation reports + +An application that runs its own evaluations publishes each report to +`POST /api/evaluation_reports` with `ActiveAgent::Evals::Publisher`, +authenticated with the ingest key. Any complete run comes back out as the +same envelope from `GET /api/evaluation_reports/:run_id`, so it can be +posted to another install; posting it back here is an identical retry. +`?format=html` or `?format=md` returns its report page or Markdown instead, +and `?download=1` an attachment. A +signed-in session reads it at +`/api/evaluations/:id/runs/:run_id/report.json`, the HTML page at +`report`, and GitHub-flavored Markdown at `report.md`, each downloadable with +`?download=1`. From the command line: + +```bash +bin/rails action_agent:evaluations:export RUN= FORMAT=json|html|md [FILE=path] +bin/rails action_agent:evaluations:export EVALUATION= RUN= FORMAT=md +bin/rails action_agent:evaluations:import FILE=run.json [ACCOUNT_ID=] +``` + +See [Publishing an externally executed evaluation](https://docs.activeagents.ai/evals/publication) +for the envelope, the run_id a dashboard run exports under, and every response. + ## Upgrading from activeagent <= 1.1.0 The dashboard used to live inside the framework gem as `ActiveAgent::Dashboard`. diff --git a/actionagent/app/assets/builds/action_agent.js b/actionagent/app/assets/builds/action_agent.js index 7077ba61c..b689038f4 100644 --- a/actionagent/app/assets/builds/action_agent.js +++ b/actionagent/app/assets/builds/action_agent.js @@ -1,97 +1,97 @@ -var ute=Object.create;var bA=Object.defineProperty;var cte=Object.getOwnPropertyDescriptor;var dte=Object.getOwnPropertyNames;var pte=Object.getPrototypeOf,fte=Object.prototype.hasOwnProperty;var jo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mte=(e,t)=>{for(var r in t)bA(e,r,{get:t[r],enumerable:!0})},gte=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of dte(t))!fte.call(e,o)&&o!==r&&bA(e,o,{get:()=>t[o],enumerable:!(n=cte(t,o))||n.enumerable});return e};var Z=(e,t,r)=>(r=e!=null?ute(pte(e)):{},gte(t||!e||!e.__esModule?bA(r,"default",{value:e,enumerable:!0}):r,e));var jj=jo(Vt=>{"use strict";var kA=Symbol.for("react.transitional.element"),hte=Symbol.for("react.portal"),yte=Symbol.for("react.fragment"),vte=Symbol.for("react.strict_mode"),xte=Symbol.for("react.profiler"),bte=Symbol.for("react.consumer"),wte=Symbol.for("react.context"),Ste=Symbol.for("react.forward_ref"),kte=Symbol.for("react.suspense"),_te=Symbol.for("react.memo"),Tj=Symbol.for("react.lazy"),Cte=Symbol.for("react.activity"),Cj=Symbol.iterator;function Ate(e){return e===null||typeof e!="object"?null:(e=Cj&&e[Cj]||e["@@iterator"],typeof e=="function"?e:null)}var Oj={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Pj=Object.assign,Mj={};function Tf(e,t,r){this.props=e,this.context=t,this.refs=Mj,this.updater=r||Oj}Tf.prototype.isReactComponent={};Tf.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")};Tf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ij(){}Ij.prototype=Tf.prototype;function _A(e,t,r){this.props=e,this.context=t,this.refs=Mj,this.updater=r||Oj}var CA=_A.prototype=new Ij;CA.constructor=_A;Pj(CA,Tf.prototype);CA.isPureReactComponent=!0;var Aj=Array.isArray;function SA(){}var cn={H:null,A:null,T:null,S:null},Dj=Object.prototype.hasOwnProperty;function AA(e,t,r){var n=r.ref;return{$$typeof:kA,type:e,key:t,ref:n!==void 0?n:null,props:r}}function Ete(e,t){return AA(e.type,t,e.props)}function EA(e){return typeof e=="object"&&e!==null&&e.$$typeof===kA}function Nte(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var Ej=/\/+/g;function wA(e,t){return typeof e=="object"&&e!==null&&e.key!=null?Nte(""+e.key):t.toString(36)}function Tte(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(SA,SA):(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 Nf(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 kA:case hte:i=!0;break;case Tj:return i=e._init,Nf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+wA(e,0):n,Aj(o)?(r="",i!=null&&(r=i.replace(Ej,"$&/")+"/"),Nf(o,t,r,"",function(u){return u})):o!=null&&(EA(o)&&(o=Ete(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(Ej,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(Aj(e))for(var l=0;l{"use strict";$j.exports=jj()});var Vj=jo(kn=>{"use strict";function PA(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nmb(s,r))lmb(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lmb(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function mb(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}kn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Lj=performance,kn.unstable_now=function(){return Lj.now()}):(NA=Date,zj=NA.now(),kn.unstable_now=function(){return NA.now()-zj});var Lj,NA,zj,Ml=[],qu=[],Mte=1,Mi=null,oa=3,MA=!1,Xh=!1,Zh=!1,IA=!1,Uj=typeof setTimeout=="function"?setTimeout:null,Wj=typeof clearTimeout=="function"?clearTimeout:null,Bj=typeof setImmediate<"u"?setImmediate:null;function gb(e){for(var t=Qs(qu);t!==null;){if(t.callback===null)hb(qu);else if(t.startTime<=e)hb(qu),t.sortIndex=t.expirationTime,PA(Ml,t);else break;t=Qs(qu)}}function DA(e){if(Zh=!1,gb(e),!Xh)if(Qs(Ml)!==null)Xh=!0,Pf||(Pf=!0,Of());else{var t=Qs(qu);t!==null&&jA(DA,t.startTime-e)}}var Pf=!1,Jh=-1,Hj=5,qj=-1;function Kj(){return IA?!0:!(kn.unstable_now()-qje&&Kj());){var n=Mi.callback;if(typeof n=="function"){Mi.callback=null,oa=Mi.priorityLevel;var o=n(Mi.expirationTime<=e);if(e=kn.unstable_now(),typeof o=="function"){Mi.callback=o,gb(e),t=!0;break t}Mi===Qs(Ml)&&hb(Ml),gb(e)}else hb(Ml);Mi=Qs(Ml)}if(Mi!==null)t=!0;else{var a=Qs(qu);a!==null&&jA(DA,a.startTime-e),t=!1}}break e}finally{Mi=null,oa=r,MA=!1}t=void 0}}finally{t?Of():Pf=!1}}}var Of;typeof Bj=="function"?Of=function(){Bj(TA)}:typeof MessageChannel<"u"?(OA=new MessageChannel,Fj=OA.port2,OA.port1.onmessage=TA,Of=function(){Fj.postMessage(null)}):Of=function(){Uj(TA,0)};var OA,Fj;function jA(e,t){Jh=Uj(function(){e(kn.unstable_now())},t)}kn.unstable_IdlePriority=5;kn.unstable_ImmediatePriority=1;kn.unstable_LowPriority=4;kn.unstable_NormalPriority=3;kn.unstable_Profiling=null;kn.unstable_UserBlockingPriority=2;kn.unstable_cancelCallback=function(e){e.callback=null};kn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,PA(qu,e),Qs(Ml)===null&&e===Qs(qu)&&(Zh?(Wj(Jh),Jh=-1):Zh=!0,jA(DA,r-n))):(e.sortIndex=o,PA(Ml,e),Xh||MA||(Xh=!0,Pf||(Pf=!0,Of()))),e};kn.unstable_shouldYield=Kj;kn.unstable_wrapCallback=function(e){var t=oa;return function(){var r=oa;oa=t;try{return e.apply(this,arguments)}finally{oa=r}}}});var Yj=jo((wAe,Gj)=>{"use strict";Gj.exports=Vj()});var Zj=jo(xa=>{"use strict";var Ite=J();function Xj(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function Jj(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Jj)}catch(e){console.error(e)}}Jj(),Qj.exports=Zj()});var c6=jo(W1=>{"use strict";var So=Yj(),_$=J(),$te=Rh();function Ee(e){var t="https://react.dev/errors/"+e;if(1zf||(e.current=bE[zf],bE[zf]=null,zf--)}function rn(e,t){zf++,bE[zf]=e.current,e.current=t}var rl=nl(null),Cy=nl(null),nc=nl(null),Jb=nl(null);function Qb(e,t){switch(rn(nc,t),rn(Cy,e),rn(rl,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?s$(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=s$(t),e=Z8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}zo(rl),rn(rl,e)}function rm(){zo(rl),zo(Cy),zo(nc)}function wE(e){e.memoizedState!==null&&rn(Jb,e);var t=rl.current,r=Z8(t,e.type);t!==r&&(rn(Cy,e),rn(rl,r))}function Rb(e){Cy.current===e&&(zo(rl),zo(Cy)),Jb.current===e&&(zo(Jb),$y._currentValue=Od)}var $A,t4;function Ad(e){if($A===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);$A=t&&t[1]||"",t4=-1()=>(t||e((t={exports:{}}).exports,t),t.exports),wte=(e,t)=>{for(var r in t)EA(e,r,{get:t[r],enumerable:!0})},Ste=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of vte(t))!bte.call(e,o)&&o!==r&&EA(e,o,{get:()=>t[o],enumerable:!(n=yte(t,o))||n.enumerable});return e};var Z=(e,t,r)=>(r=e!=null?hte(xte(e)):{},Ste(t||!e||!e.__esModule?EA(r,"default",{value:e,enumerable:!0}):r,e));var Uj=$o(Vt=>{"use strict";var OA=Symbol.for("react.transitional.element"),kte=Symbol.for("react.portal"),_te=Symbol.for("react.fragment"),Cte=Symbol.for("react.strict_mode"),Ate=Symbol.for("react.profiler"),Ete=Symbol.for("react.consumer"),Nte=Symbol.for("react.context"),Tte=Symbol.for("react.forward_ref"),Ote=Symbol.for("react.suspense"),Pte=Symbol.for("react.memo"),jj=Symbol.for("react.lazy"),Mte=Symbol.for("react.activity"),Pj=Symbol.iterator;function Ite(e){return e===null||typeof e!="object"?null:(e=Pj&&e[Pj]||e["@@iterator"],typeof e=="function"?e:null)}var $j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Lj=Object.assign,zj={};function Mf(e,t,r){this.props=e,this.context=t,this.refs=zj,this.updater=r||$j}Mf.prototype.isReactComponent={};Mf.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")};Mf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Bj(){}Bj.prototype=Mf.prototype;function PA(e,t,r){this.props=e,this.context=t,this.refs=zj,this.updater=r||$j}var MA=PA.prototype=new Bj;MA.constructor=PA;Lj(MA,Mf.prototype);MA.isPureReactComponent=!0;var Mj=Array.isArray;function TA(){}var pn={H:null,A:null,T:null,S:null},Fj=Object.prototype.hasOwnProperty;function IA(e,t,r){var n=r.ref;return{$$typeof:OA,type:e,key:t,ref:n!==void 0?n:null,props:r}}function Dte(e,t){return IA(e.type,t,e.props)}function DA(e){return typeof e=="object"&&e!==null&&e.$$typeof===OA}function jte(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var Ij=/\/+/g;function NA(e,t){return typeof e=="object"&&e!==null&&e.key!=null?jte(""+e.key):t.toString(36)}function $te(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(TA,TA):(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 Pf(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 OA:case kte:i=!0;break;case jj:return i=e._init,Pf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+NA(e,0):n,Mj(o)?(r="",i!=null&&(r=i.replace(Ij,"$&/")+"/"),Pf(o,t,r,"",function(u){return u})):o!=null&&(DA(o)&&(o=Dte(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(Ij,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(Mj(e))for(var l=0;l{"use strict";Wj.exports=Uj()});var Qj=$o(_n=>{"use strict";function zA(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nbb(s,r))lbb(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lbb(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function bb(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}_n.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Hj=performance,_n.unstable_now=function(){return Hj.now()}):(jA=Date,qj=jA.now(),_n.unstable_now=function(){return jA.now()-qj});var Hj,jA,qj,Il=[],Ku=[],Bte=1,Ii=null,oa=3,BA=!1,Rh=!1,ey=!1,FA=!1,Gj=typeof setTimeout=="function"?setTimeout:null,Yj=typeof clearTimeout=="function"?clearTimeout:null,Kj=typeof setImmediate<"u"?setImmediate:null;function wb(e){for(var t=Qs(Ku);t!==null;){if(t.callback===null)Sb(Ku);else if(t.startTime<=e)Sb(Ku),t.sortIndex=t.expirationTime,zA(Il,t);else break;t=Qs(Ku)}}function UA(e){if(ey=!1,wb(e),!Rh)if(Qs(Il)!==null)Rh=!0,Df||(Df=!0,If());else{var t=Qs(Ku);t!==null&&WA(UA,t.startTime-e)}}var Df=!1,ty=-1,Xj=5,Zj=-1;function Jj(){return FA?!0:!(_n.unstable_now()-Zje&&Jj());){var n=Ii.callback;if(typeof n=="function"){Ii.callback=null,oa=Ii.priorityLevel;var o=n(Ii.expirationTime<=e);if(e=_n.unstable_now(),typeof o=="function"){Ii.callback=o,wb(e),t=!0;break t}Ii===Qs(Il)&&Sb(Il),wb(e)}else Sb(Il);Ii=Qs(Il)}if(Ii!==null)t=!0;else{var a=Qs(Ku);a!==null&&WA(UA,a.startTime-e),t=!1}}break e}finally{Ii=null,oa=r,BA=!1}t=void 0}}finally{t?If():Df=!1}}}var If;typeof Kj=="function"?If=function(){Kj($A)}:typeof MessageChannel<"u"?(LA=new MessageChannel,Vj=LA.port2,LA.port1.onmessage=$A,If=function(){Vj.postMessage(null)}):If=function(){Gj($A,0)};var LA,Vj;function WA(e,t){ty=Gj(function(){e(_n.unstable_now())},t)}_n.unstable_IdlePriority=5;_n.unstable_ImmediatePriority=1;_n.unstable_LowPriority=4;_n.unstable_NormalPriority=3;_n.unstable_Profiling=null;_n.unstable_UserBlockingPriority=2;_n.unstable_cancelCallback=function(e){e.callback=null};_n.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,zA(Ku,e),Qs(Il)===null&&e===Qs(Ku)&&(ey?(Yj(ty),ty=-1):ey=!0,WA(UA,r-n))):(e.sortIndex=o,zA(Il,e),Rh||BA||(Rh=!0,Df||(Df=!0,If()))),e};_n.unstable_shouldYield=Jj;_n.unstable_wrapCallback=function(e){var t=oa;return function(){var r=oa;oa=t;try{return e.apply(this,arguments)}finally{oa=r}}}});var e4=$o((EAe,Rj)=>{"use strict";Rj.exports=Qj()});var r4=$o(xa=>{"use strict";var Fte=Q();function t4(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function n4(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n4)}catch(e){console.error(e)}}n4(),o4.exports=r4()});var h6=$o(Y1=>{"use strict";var _o=e4(),O$=Q(),Hte=ny();function Ee(e){var t="https://react.dev/errors/"+e;if(1Uf||(e.current=EE[Uf],EE[Uf]=null,Uf--)}function on(e,t){Uf++,EE[Uf]=e.current,e.current=t}var rl=nl(null),Ty=nl(null),oc=nl(null),n1=nl(null);function o1(e,t){switch(on(oc,t),on(Ty,e),on(rl,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?f$(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=f$(t),e=r6(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Bo(rl),on(rl,e)}function am(){Bo(rl),Bo(Ty),Bo(oc)}function NE(e){e.memoizedState!==null&&on(n1,e);var t=rl.current,r=r6(t,e.type);t!==r&&(on(Ty,e),on(rl,r))}function a1(e){Ty.current===e&&(Bo(rl),Bo(Ty)),n1.current===e&&(Bo(n1),Fy._currentValue=Id)}var HA,s4;function Td(e){if(HA===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);HA=t&&t[1]||"",s4=-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{LA=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Ad(r):""}function Ute(e,t){switch(e.tag){case 26:case 27:case 5:return Ad(e.type);case 16:return Ad("Lazy");case 13:return e.child!==t&&t!==null?Ad("Suspense Fallback"):Ad("Suspense");case 19:return Ad("SuspenseList");case 0:case 15:return zA(e.type,!1);case 11:return zA(e.type.render,!1);case 1:return zA(e.type,!0);case 31:return Ad("Activity");default:return""}}function r4(e){try{var t="",r=null;do t+=Ute(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{qA=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Td(r):""}function Yte(e,t){switch(e.tag){case 26:case 27:case 5:return Td(e.type);case 16:return Td("Lazy");case 13:return e.child!==t&&t!==null?Td("Suspense Fallback"):Td("Suspense");case 19:return Td("SuspenseList");case 0:case 15:return KA(e.type,!1);case 11:return KA(e.type.render,!1);case 1:return KA(e.type,!0);case 31:return Td("Activity");default:return""}}function l4(e){try{var t="",r=null;do t+=Yte(e,r),r=e,e=e.return;while(e);return t}catch(n){return` Error generating stack: `+n.message+` -`+n.stack}}var SE=Object.prototype.hasOwnProperty,pN=So.unstable_scheduleCallback,BA=So.unstable_cancelCallback,Wte=So.unstable_shouldYield,Hte=So.unstable_requestPaint,li=So.unstable_now,qte=So.unstable_getCurrentPriorityLevel,P$=So.unstable_ImmediatePriority,M$=So.unstable_UserBlockingPriority,e1=So.unstable_NormalPriority,Kte=So.unstable_LowPriority,I$=So.unstable_IdlePriority,Vte=So.log,Gte=So.unstable_setDisableYieldValue,Fy=null,ui=null;function Qu(e){if(typeof Vte=="function"&&Gte(e),ui&&typeof ui.setStrictMode=="function")try{ui.setStrictMode(Fy,e)}catch{}}var ci=Math.clz32?Math.clz32:Zte,Yte=Math.log,Xte=Math.LN2;function Zte(e){return e>>>=0,e===0?32:31-(Yte(e)/Xte|0)|0}var xb=256,bb=262144,wb=4194304;function Ed(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 A1(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=Ed(n):(i&=s,i!==0?o=Ed(i):r||(r=s&~e,r!==0&&(o=Ed(r))))):(s=n&~a,s!==0?o=Ed(s):i!==0?o=Ed(i):r||(r=n&~e,r!==0&&(o=Ed(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 Uy(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Jte(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 D$(){var e=wb;return wb<<=1,(wb&62914560)===0&&(wb=4194304),e}function FA(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Wy(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Qte(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 ore=/[\n"\\]/g;function Li(e){return e.replace(ore,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function CE(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=""+Di(t)):e.value!==""+Di(t)&&(e.value=""+Di(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?AE(e,i,Di(t)):r!=null?AE(e,i,Di(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=""+Di(s):e.removeAttribute("name")}function H$(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)){_E(e);return}r=r!=null?""+Di(r):"",t=t!=null?""+Di(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),_E(e)}function AE(e,t,r){t==="number"&&t1(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Zf(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"),NE=!1;if(Vl)try{Mf={},Object.defineProperty(Mf,"passive",{get:function(){NE=!0}}),window.addEventListener("test",Mf,Mf),window.removeEventListener("test",Mf,Mf)}catch{NE=!1}var Mf,Ru=null,vN=null,zb=null;function Y$(){if(zb)return zb;var e,t=vN,r=t.length,n,o="value"in Ru?Ru.value:Ru.textContent,a=o.length;for(e=0;e=py),f4=" ",m4=!1;function Z$(e,t){switch(e){case"keyup":return Mre.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function J$(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Uf=!1;function Dre(e,t){switch(e){case"compositionend":return J$(t);case"keypress":return t.which!==32?null:(m4=!0,f4);case"textInput":return e=t.data,e===f4&&m4?null:e;default:return null}}function jre(e,t){if(Uf)return e==="compositionend"||!bN&&Z$(e,t)?(e=Y$(),zb=vN=Ru=null,Uf=!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=v4(r)}}function tL(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?tL(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function rL(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=t1(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=t1(e.document)}return t}function wN(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 Hre=Vl&&"documentMode"in document&&11>=document.documentMode,Wf=null,TE=null,my=null,OE=!1;function b4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;OE||Wf==null||Wf!==t1(n)||(n=Wf,"selectionStart"in n&&wN(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}),my&&Ny(my,n)||(my=n,n=x1(TE,"onSelect"),0>=i,o-=i,Rs=1<<32-ci(t)+o|r<k?(A=_,_=null):A=_.sibling;var C=p(h,_,v[k],b);if(C===null){_===null&&(_=A);break}e&&_&&C.alternate===null&&t(h,_),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C,_=A}if(k===v.length)return r(h,_),gr&&zl(h,k),S;if(_===null){for(;kk?(A=_,_=null):A=_.sibling;var E=p(h,_,C.value,b);if(E===null){_===null&&(_=A);break}e&&_&&E.alternate===null&&t(h,_),g=a(E,g,k),w===null?S=E:w.sibling=E,w=E,_=A}if(C.done)return r(h,_),gr&&zl(h,k),S;if(_===null){for(;!C.done;k++,C=v.next())C=d(h,C.value,b),C!==null&&(g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return gr&&zl(h,k),S}for(_=n(_);!C.done;k++,C=v.next())C=f(_,h,k,C.value,b),C!==null&&(e&&C.alternate!==null&&_.delete(C.key===null?k:C.key),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return e&&_.forEach(function(I){return t(h,I)}),gr&&zl(h,k),S}function x(h,g,v,b){if(typeof v=="object"&&v!==null&&v.type===Lf&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case vb:e:{for(var S=v.key;g!==null;){if(g.key===S){if(S=v.type,S===Lf){if(g.tag===7){r(h,g.sibling),b=o(g,v.props.children),b.return=h,h=b;break e}}else if(g.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Vu&&Nd(S)===g.type){r(h,g.sibling),b=o(g,v.props),ry(b,v),b.return=h,h=b;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===Lf?(b=Pd(v.props.children,h.mode,b,v.key),b.return=h,h=b):(b=Fb(v.type,v.key,v.props,null,h.mode,b),ry(b,v),b.return=h,h=b)}return i(h);case sy:e:{for(S=v.key;g!==null;){if(g.key===S)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){r(h,g.sibling),b=o(g,v.children||[]),b.return=h,h=b;break e}else{r(h,g);break}else t(h,g);g=g.sibling}b=YA(v,h.mode,b),b.return=h,h=b}return i(h);case Vu:return v=Nd(v),x(h,g,v,b)}if(ly(v))return m(h,g,v,b);if(ey(v)){if(S=ey(v),typeof S!="function")throw Error(Ee(150));return v=S.call(v),y(h,g,v,b)}if(typeof v.then=="function")return x(h,g,Eb(v),b);if(v.$$typeof===Fl)return x(h,g,Ab(h,v),b);Nb(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,g!==null&&g.tag===6?(r(h,g.sibling),b=o(g,v),b.return=h,h=b):(r(h,g),b=GA(v,h.mode,b),b.return=h,h=b),i(h)):r(h,g)}return function(h,g,v,b){try{Py=0;var S=x(h,g,v,b);return Rf=null,S}catch(_){if(_===hm||_===M1)throw _;var w=ii(29,_,null,h.mode);return w.lanes=b,w.return=h,w}}}var Ld=yL(!0),vL=yL(!1),Gu=!1;function ON(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function LE(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 ac(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ic(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Tr&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=n1(e),uL(e,null,r),t}return P1(e,n,t,r),n1(e)}function hy(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,$$(e,r)}}function ZA(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 zE=!1;function yy(){if(zE){var e=Qf;if(e!==null)throw e}}function vy(e,t,r,n){zE=!1;var o=e.updateQueue;Gu=!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?(pr&p)===p:(n&p)===p){p!==0&&p===am&&(zE=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;p=t;var x=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(x,d,p);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,p=typeof m=="function"?m.call(x,d,p):m,p==null)break e;d=fn({},d,p);break e;case 2:Gu=!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),gc|=i,e.lanes=i,e.memoizedState=d}}function xL(e,t){if(typeof e!="function")throw Error(Ee(191,e));e.call(t)}function bL(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=jt.T,s={};jt.T=s,HN(e,!1,t,r);try{var l=o(),u=jt.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=Qre(l,n);xy(e,t,c,di(e))}else xy(e,t,n,di(e))}catch(d){xy(e,t,{then:function(){},status:"rejected",reason:d},di())}finally{Or.p=a,i!==null&&s.types!==null&&(i.types=s.types),jt.T=i}}function one(){}function HE(e,t,r,n){if(e.tag!==5)throw Error(Ee(476));var o=KL(e).queue;qL(e,o,t,Od,r===null?one:function(){return VL(e),r(n)})}function KL(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Od,baseState:Od,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yl,lastRenderedState:Od},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yl,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function VL(e){var t=KL(e);t.next===null&&(t=e.alternate.memoizedState),xy(e,t.next.queue,{},di())}function WN(){return Xo($y)}function GL(){return ro().memoizedState}function YL(){return ro().memoizedState}function ane(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=di();e=ac(r);var n=ic(t,e,r);n!==null&&(Fa(n,t,r),hy(n,t,r)),t={cache:EN()},e.payload=t;return}t=t.return}}function ine(e,t,r){var n=di();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},$1(e)?ZL(t,r):(r=kN(e,t,r,n),r!==null&&(Fa(r,e,n),JL(r,t,n)))}function XL(e,t,r){var n=di();xy(e,t,r,n)}function xy(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if($1(e))ZL(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,pi(s,i))return P1(e,t,o,0),Yr===null&&O1(),!1}catch{}if(r=kN(e,t,o,n),r!==null)return Fa(r,e,n),JL(r,t,n),!0}return!1}function HN(e,t,r,n){if(n={lane:2,revertLane:QN(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},$1(e)){if(t)throw Error(Ee(479))}else t=kN(e,r,n,2),t!==null&&Fa(t,e,2)}function $1(e){var t=e.alternate;return e===Xt||t!==null&&t===Xt}function ZL(e,t){em=u1=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function JL(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,$$(e,r)}}var Iy={readContext:Xo,use:D1,useCallback:Wn,useContext:Wn,useEffect:Wn,useImperativeHandle:Wn,useLayoutEffect:Wn,useInsertionEffect:Wn,useMemo:Wn,useReducer:Wn,useRef:Wn,useState:Wn,useDebugValue:Wn,useDeferredValue:Wn,useTransition:Wn,useSyncExternalStore:Wn,useId:Wn,useHostTransitionStatus:Wn,useFormState:Wn,useActionState:Wn,useOptimistic:Wn,useMemoCache:Wn,useCacheRefresh:Wn};Iy.useEffectEvent=Wn;var QL={readContext:Xo,use:D1,useCallback:function(e,t){return ba().memoizedState=[e,t===void 0?null:t],e},useContext:Xo,useEffect:j4,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Hb(4194308,4,BL.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Hb(4194308,4,e,t)},useInsertionEffect:function(e,t){Hb(4,2,e,t)},useMemo:function(e,t){var r=ba();t=t===void 0?null:t;var n=e();if(zd){Qu(!0);try{e()}finally{Qu(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=ba();if(r!==void 0){var o=r(t);if(zd){Qu(!0);try{r(t)}finally{Qu(!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=ine.bind(null,Xt,e),[n.memoizedState,e]},useRef:function(e){var t=ba();return e={current:e},t.memoizedState=e},useState:function(e){e=UE(e);var t=e.queue,r=XL.bind(null,Xt,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:FN,useDeferredValue:function(e,t){var r=ba();return UN(r,e,t)},useTransition:function(){var e=UE(!1);return e=qL.bind(null,Xt,e.queue,!0,!1),ba().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=Xt,o=ba();if(gr){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),Yr===null)throw Error(Ee(349));(pr&127)!==0||CL(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,j4(EL.bind(null,n,a,e),[e]),n.flags|=2048,sm(9,{destroy:void 0},AL.bind(null,n,a,r,t),null),r},useId:function(){var e=ba(),t=Yr.identifierPrefix;if(gr){var r=el,n=Rs;r=(n&~(1<<32-ci(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=c1++,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[Go]=t,a[Ua]=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(Zo(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&&Dl(t)}}return dn(t),oE(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Dl(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ee(166));if(e=nc.current,If(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=Yo,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[Go]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||X8(e.nodeValue,r)),e||fc(t,!0)}else e=b1(e).createTextNode(n),e[Go]=t,t.stateNode=e}return dn(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=If(t),r!==null){if(e===null){if(!n)throw Error(Ee(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(Ee(557));e[Go]=t}else jd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dn(t),e=!1}else r=XA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(ai(t),t):(ai(t),null);if((t.flags&128)!==0)throw Error(Ee(558))}return dn(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=If(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(Ee(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(Ee(317));o[Go]=t}else jd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dn(t),o=!1}else o=XA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(ai(t),t):(ai(t),null)}return ai(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),Tb(t,t.updateQueue),dn(t),null);case 4:return rm(),e===null&&RN(t.stateNode.containerInfo),dn(t),null;case 10:return ql(t.type),dn(t),null;case 19:if(zo(to),n=t.memoizedState,n===null)return dn(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)ny(n,!1);else{if(Hn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=l1(e),a!==null){for(t.flags|=128,ny(n,!1),e=a.updateQueue,t.updateQueue=e,Tb(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)cL(r,e),r=r.sibling;return rn(to,to.current&1|2),gr&&zl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&li()>m1&&(t.flags|=128,o=!0,ny(n,!1),t.lanes=4194304)}else{if(!o)if(e=l1(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,Tb(t,e),ny(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!gr)return dn(t),null}else 2*li()-n.renderingStartTime>m1&&r!==536870912&&(t.flags|=128,o=!0,ny(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=li(),e.sibling=null,r=to.current,rn(to,o?r&1|2:r&1),gr&&zl(t,n.treeForkCount),e):(dn(t),null);case 22:case 23:return ai(t),PN(),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&&(dn(t),t.subtreeFlags&6&&(t.flags|=8192)):dn(t),r=t.updateQueue,r!==null&&Tb(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&&zo(Md),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),ql(mo),dn(t),null;case 25:return null;case 30:return null}throw Error(Ee(156,t.tag))}function dne(e,t){switch(AN(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ql(mo),rm(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Rb(t),null;case 31:if(t.memoizedState!==null){if(ai(t),t.alternate===null)throw Error(Ee(340));jd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ai(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));jd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return zo(to),null;case 4:return rm(),null;case 10:return ql(t.type),null;case 22:case 23:return ai(t),PN(),e!==null&&zo(Md),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ql(mo),null;case 25:return null;default:return null}}function c8(e,t){switch(AN(t),t.tag){case 3:ql(mo),rm();break;case 26:case 27:case 5:Rb(t);break;case 4:rm();break;case 31:t.memoizedState!==null&&ai(t);break;case 13:ai(t);break;case 19:zo(to);break;case 10:ql(t.type);break;case 22:case 23:ai(t),PN(),e!==null&&zo(Md);break;case 24:ql(mo)}}function Gy(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){Br(t,t.return,s)}}function mc(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){Br(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){Br(t,t.return,c)}}function d8(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{bL(t,r)}catch(n){Br(e,e.return,n)}}}function p8(e,t,r){r.props=Bd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Br(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){Br(e,t,o)}}function tl(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){Br(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){Br(e,t,o)}else r.current=null}function f8(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){Br(e,e.return,o)}}function aE(e,t,r){try{var n=e.stateNode;Pne(n,e.type,r,t),n[Ua]=t}catch(o){Br(e,e.return,o)}}function m8(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&yc(e.type)||e.tag===4}function iE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||m8(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&&yc(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 YE(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=Ul));else if(n!==4&&(n===27&&yc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(YE(e,t,r),e=e.sibling;e!==null;)YE(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&&yc(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 g8(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);Zo(t,n,r),t[Go]=e,t[Ua]=r}catch(a){Br(e,e.return,a)}}var Bl=!1,fo=!1,sE=!1,Y4=typeof WeakSet=="function"?WeakSet:Set,$o=null;function pne(e,t){if(e=e.containerInfo,tN=_1,e=rL(e),wN(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(rN={focusedElem:e,selectionRange:r},_1=!1,$o=t;$o!==null;)if(t=$o,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,$o=e;else for(;$o!==null;){switch(t=$o,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"))),Zo(a,n,r),a[Go]=e,Lo(a),n=a;break e;case"link":var i=h$("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sx&&(i=x,x=y,y=i);var h=x4(s,y),g=x4(s,x);if(h&&g&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==g.node||f.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),f.removeAllRanges(),y>x?(f.addRange(v),f.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),f.addRange(v))}}}}for(d=[],f=s;f=f.parentNode;)f.nodeType===1&&d.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sr?32:r,jt.T=null,r=JE,JE=null;var a=lc,i=Kl;if(wo=0,um=lc=null,Kl=0,(Tr&6)!==0)throw Error(Ee(331));var s=Tr;if(Tr|=4,A8(a.current),k8(a,a.current,i,r),Tr=s,Yy(0,!1),ui&&typeof ui.onPostCommitFiberRoot=="function")try{ui.onPostCommitFiberRoot(Fy,a)}catch{}return!0}finally{Or.p=o,jt.T=n,U8(e,t)}}function Q4(e,t,r){t=zi(r,t),t=KE(e.stateNode,t,2),e=ic(e,t,2),e!==null&&(Wy(e,2),ol(e))}function Br(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"&&(sc===null||!sc.has(n))){e=zi(r,e),r=n8(2),n=ic(t,r,2),n!==null&&(o8(r,n,t,e),Wy(n,2),ol(n));break}}t=t.return}}function uE(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new gne;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)||(XN=!0,o.add(r),e=bne.bind(null,e,t,r),t.then(e,e))}function bne(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Yr===e&&(pr&r)===r&&(Hn===4||Hn===3&&(pr&62914560)===pr&&300>li()-L1?(Tr&2)===0&&cm(e,0):ZN|=r,lm===pr&&(lm=0)),ol(e)}function H8(e,t){t===0&&(t=D$()),e=Hd(e,t),e!==null&&(Wy(e,t),ol(e))}function wne(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),H8(e,r)}function Sne(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(Ee(314))}n!==null&&n.delete(t),H8(e,r)}function kne(e,t){return pN(e,t)}var y1=null,$f=null,RE=!1,v1=!1,cE=!1,rc=0;function ol(e){e!==$f&&e.next===null&&($f===null?y1=$f=e:$f=$f.next=e),v1=!0,RE||(RE=!0,Cne())}function Yy(e,t){if(!cE&&v1){cE=!0;do for(var r=!1,n=y1;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-ci(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,R4(n,a))}else a=pr,a=A1(n,n===Yr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Uy(n,a)||(r=!0,R4(n,a));n=n.next}while(r);cE=!1}}function _ne(){q8()}function q8(){v1=RE=!1;var e=0;rc!==0&&Ine()&&(e=rc);for(var t=li(),r=null,n=y1;n!==null;){var o=n.next,a=K8(n,t);a===0?(n.next=null,r===null?y1=o:r.next=o,o===null&&($f=r)):(r=n,(e!==0||(a&3)!==0)&&(v1=!0)),n=o}wo!==0&&wo!==5||Yy(e,!1),rc!==0&&(rc=0)}function K8(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&&i$(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function e6(e,t,r){var n=vm;if(n&&typeof t=="string"&&t){var o=Li(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),f$.has(o)||(f$.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),Zo(t,"link",e),Lo(t),n.head.appendChild(t)))}}function Wne(e){Jl.D(e),e6("dns-prefetch",e,null)}function Hne(e,t){Jl.C(e,t),e6("preconnect",e,t)}function qne(e,t,r){Jl.L(e,t,r);var n=vm;if(n&&e&&t){var o='link[rel="preload"][as="'+Li(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+Li(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+Li(r.imageSizes)+'"]')):o+='[href="'+Li(e)+'"]';var a=o;switch(t){case"style":a=dm(e);break;case"script":a=xm(e)}Wi.has(a)||(e=fn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),Wi.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(Xy(a))||t==="script"&&n.querySelector(Zy(a))||(t=n.createElement("link"),Zo(t,"link",e),Lo(t),n.head.appendChild(t)))}}function Kne(e,t){Jl.m(e,t);var r=vm;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+Li(n)+'"][href="'+Li(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=xm(e)}if(!Wi.has(a)&&(e=fn({rel:"modulepreload",href:e},t),Wi.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Zy(a)))return}n=r.createElement("link"),Zo(n,"link",e),Lo(n),r.head.appendChild(n)}}}function Vne(e,t,r){Jl.S(e,t,r);var n=vm;if(n&&e){var o=Xf(n).hoistableStyles,a=dm(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(Xy(a)))s.loading=5;else{e=fn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=Wi.get(a))&&eT(e,r);var l=i=n.createElement("link");Lo(l),Zo(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,Gb(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function Gne(e,t){Jl.X(e,t);var r=vm;if(r&&e){var n=Xf(r).hoistableScripts,o=xm(e),a=n.get(o);a||(a=r.querySelector(Zy(o)),a||(e=fn({src:e,async:!0},t),(t=Wi.get(o))&&tT(e,t),a=r.createElement("script"),Lo(a),Zo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function Yne(e,t){Jl.M(e,t);var r=vm;if(r&&e){var n=Xf(r).hoistableScripts,o=xm(e),a=n.get(o);a||(a=r.querySelector(Zy(o)),a||(e=fn({src:e,async:!0,type:"module"},t),(t=Wi.get(o))&&tT(e,t),a=r.createElement("script"),Lo(a),Zo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function m$(e,t,r,n){var o=(o=nc.current)?w1(o):null;if(!o)throw Error(Ee(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=dm(r.href),r=Xf(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=dm(r.href);var a=Xf(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(Xy(e)))&&!a._p&&(i.instance=a,i.state.loading=5),Wi.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},Wi.set(e,r),a||Xne(o,e,r,i.state))),t&&n===null)throw Error(Ee(528,""));return i}if(t&&n!==null)throw Error(Ee(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=xm(r),r=Xf(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(Ee(444,e))}}function dm(e){return'href="'+Li(e)+'"'}function Xy(e){return'link[rel="stylesheet"]['+e+"]"}function t6(e){return fn({},e,{"data-precedence":e.precedence,precedence:null})}function Xne(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}),Zo(t,"link",r),Lo(t),e.head.appendChild(t))}function xm(e){return'[src="'+Li(e)+'"]'}function Zy(e){return"script[async]"+e}function g$(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+Li(r.href)+'"]');if(n)return t.instance=n,Lo(n),n;var o=fn({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),Lo(n),Zo(n,"style",o),Gb(n,r.precedence,e),t.instance=n;case"stylesheet":o=dm(r.href);var a=e.querySelector(Xy(o));if(a)return t.state.loading|=4,t.instance=a,Lo(a),a;n=t6(r),(o=Wi.get(o))&&eT(n,o),a=(e.ownerDocument||e).createElement("link"),Lo(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Zo(a,"link",n),t.state.loading|=4,Gb(a,r.precedence,e),t.instance=a;case"script":return a=xm(r.src),(o=e.querySelector(Zy(a)))?(t.instance=o,Lo(o),o):(n=r,(o=Wi.get(a))&&(n=fn({},r),tT(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),Lo(o),Zo(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(Ee(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,Gb(n,r.precedence,e));return t.instance}function Gb(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 Zne(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 r6(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Jne(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=dm(n.href),a=t.querySelector(Xy(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=S1.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,Lo(a);return}a=t.ownerDocument||t,n=t6(n),(o=Wi.get(o))&&eT(n,o),a=a.createElement("link"),Lo(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Zo(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=S1.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var mE=0;function Qne(e,t){return e.stylesheets&&e.count===0&&Xb(e,e.stylesheets),0mE?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function S1(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xb(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var k1=null;function Xb(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,k1=new Map,t.forEach(Rne,e),k1=null,S1.call(e))}function Rne(e,t){if(!(t.state.loading&4)){var r=k1.get(e);if(r)var n=r.get(null);else{r=new Map,k1.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function d6(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(d6)}catch(e){console.error(e)}}d6(),p6.exports=c6()});var Lz=jo($z=>{"use strict";var Um=J();function Sae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var kae=typeof Object.is=="function"?Object.is:Sae,_ae=Um.useState,Cae=Um.useEffect,Aae=Um.useLayoutEffect,Eae=Um.useDebugValue;function Nae(e,t){var r=t(),n=_ae({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return Aae(function(){o.value=r,o.getSnapshot=t,nO(o)&&a({inst:o})},[e,r,t]),Cae(function(){return nO(o)&&a({inst:o}),e(function(){nO(o)&&a({inst:o})})},[e]),Eae(r),r}function nO(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!kae(e,r)}catch{return!0}}function Tae(e,t){return t()}var Oae=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Tae:Nae;$z.useSyncExternalStore=Um.useSyncExternalStore!==void 0?Um.useSyncExternalStore:Oae});var Bz=jo((lPe,zz)=>{"use strict";zz.exports=Lz()});var Uz=jo(Fz=>{"use strict";var Bw=J(),Pae=Bz();function Mae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Iae=typeof Object.is=="function"?Object.is:Mae,Dae=Pae.useSyncExternalStore,jae=Bw.useRef,$ae=Bw.useEffect,Lae=Bw.useMemo,zae=Bw.useDebugValue;Fz.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=jae(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Lae(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,Iae(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=Dae(e,a[0],a[1]);return $ae(function(){i.hasValue=!0,i.value=s},[s]),zae(s),s}});var Hz=jo((cPe,Wz)=>{"use strict";Wz.exports=Uz()});var O7=jo(T7=>{"use strict";var Sv=J();function Wse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Hse=typeof Object.is=="function"?Object.is:Wse,qse=Sv.useSyncExternalStore,Kse=Sv.useRef,Vse=Sv.useEffect,Gse=Sv.useMemo,Yse=Sv.useDebugValue;T7.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Kse(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Gse(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,Hse(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=qse(e,a[0],a[1]);return Vse(function(){i.hasValue=!0,i.value=s},[s]),Yse(s),s}});var M7=jo((uMe,P7)=>{"use strict";P7.exports=O7()});var QO=jo((nF,XS)=>{(function(e){"use strict";var t=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},n=!0,o="[DecimalError] ",a=o+"Invalid argument: ",i=o+"Exponent out of range: ",s=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,c,d=1e7,p=7,f=9007199254740991,m=s(f/p),y={};y.absoluteValue=y.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},y.comparedTo=y.cmp=function(N){var O,j,T,D,M=this;if(N=new M.constructor(N),M.s!==N.s)return M.s||-N.s;if(M.e!==N.e)return M.e>N.e^M.s<0?1:-1;for(T=M.d.length,D=N.d.length,O=0,j=TN.d[O]^M.s<0?1:-1;return T===D?0:T>D^M.s<0?1:-1},y.decimalPlaces=y.dp=function(){var N=this,O=N.d.length-1,j=(O-N.e)*p;if(O=N.d[O],O)for(;O%10==0;O/=10)j--;return j<0?0:j},y.dividedBy=y.div=function(N){return v(this,new this.constructor(N))},y.dividedToIntegerBy=y.idiv=function(N){var O=this,j=O.constructor;return C(v(O,new j(N),0,1),j.precision)},y.equals=y.eq=function(N){return!this.cmp(N)},y.exponent=function(){return S(this)},y.greaterThan=y.gt=function(N){return this.cmp(N)>0},y.greaterThanOrEqualTo=y.gte=function(N){return this.cmp(N)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return this.s===0},y.lessThan=y.lt=function(N){return this.cmp(N)<0},y.lessThanOrEqualTo=y.lte=function(N){return this.cmp(N)<1},y.logarithm=y.log=function(N){var O,j=this,T=j.constructor,D=T.precision,M=D+5;if(N===void 0)N=new T(10);else if(N=new T(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(j.s<1)throw Error(o+(j.s?"NaN":"-Infinity"));return j.eq(c)?new T(0):(n=!1,O=v(k(j,M),k(N,M),M),n=!0,C(O,D))},y.minus=y.sub=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?E(O,N):x(O,(N.s=-N.s,N))},y.modulo=y.mod=function(N){var O,j=this,T=j.constructor,D=T.precision;if(N=new T(N),!N.s)throw Error(o+"NaN");return j.s?(n=!1,O=v(j,N,0,1).times(N),n=!0,j.minus(O)):C(new T(j),D)},y.naturalExponential=y.exp=function(){return b(this)},y.naturalLogarithm=y.ln=function(){return k(this)},y.negated=y.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},y.plus=y.add=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?x(O,N):E(O,(N.s=-N.s,N))},y.precision=y.sd=function(N){var O,j,T,D=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(O=S(D)+1,T=D.d.length-1,j=T*p+1,T=D.d[T],T){for(;T%10==0;T/=10)j--;for(T=D.d[0];T>=10;T/=10)j++}return N&&O>j?O:j},y.squareRoot=y.sqrt=function(){var N,O,j,T,D,M,K,V=this,L=V.constructor;if(V.s<1){if(!V.s)return new L(0);throw Error(o+"NaN")}for(N=S(V),n=!1,D=Math.sqrt(+V),D==0||D==1/0?(O=g(V.d),(O.length+N)%2==0&&(O+="0"),D=Math.sqrt(O),N=s((N+1)/2)-(N<0||N%2),D==1/0?O="5e"+N:(O=D.toExponential(),O=O.slice(0,O.indexOf("e")+1)+N),T=new L(O)):T=new L(D.toString()),j=L.precision,D=K=j+3;;)if(M=T,T=M.plus(v(V,M,K+2)).times(.5),g(M.d).slice(0,K)===(O=g(T.d)).slice(0,K)){if(O=O.slice(K-3,K+1),D==K&&O=="4999"){if(C(M,j+1,0),M.times(M).eq(V)){T=M;break}}else if(O!="9999")break;K+=4}return n=!0,C(T,j)},y.times=y.mul=function(N){var O,j,T,D,M,K,V,L,G,W=this,ie=W.constructor,Ie=W.d,ge=(N=new ie(N)).d;if(!W.s||!N.s)return new ie(0);for(N.s*=W.s,j=W.e+N.e,L=Ie.length,G=ge.length,L=0;){for(O=0,D=L+T;D>T;)V=M[D]+ge[T]*Ie[D-T-1]+O,M[D--]=V%d|0,O=V/d|0;M[D]=(M[D]+O)%d|0}for(;!M[--K];)M.pop();return O?++j:M.shift(),N.d=M,N.e=j,n?C(N,ie.precision):N},y.toDecimalPlaces=y.todp=function(N,O){var j=this,T=j.constructor;return j=new T(j),N===void 0?j:(h(N,0,t),O===void 0?O=T.rounding:h(O,0,8),C(j,N+S(j)+1,O))},y.toExponential=function(N,O){var j,T=this,D=T.constructor;return N===void 0?j=I(T,!0):(h(N,0,t),O===void 0?O=D.rounding:h(O,0,8),T=C(new D(T),N+1,O),j=I(T,!0,N+1)),j},y.toFixed=function(N,O){var j,T,D=this,M=D.constructor;return N===void 0?I(D):(h(N,0,t),O===void 0?O=M.rounding:h(O,0,8),T=C(new M(D),N+S(D)+1,O),j=I(T.abs(),!1,N+S(T)+1),D.isneg()&&!D.isZero()?"-"+j:j)},y.toInteger=y.toint=function(){var N=this,O=N.constructor;return C(new O(N),S(N)+1,O.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(N){var O,j,T,D,M,K,V=this,L=V.constructor,G=12,W=+(N=new L(N));if(!N.s)return new L(c);if(V=new L(V),!V.s){if(N.s<1)throw Error(o+"Infinity");return V}if(V.eq(c))return V;if(T=L.precision,N.eq(c))return C(V,T);if(O=N.e,j=N.d.length-1,K=O>=j,M=V.s,K){if((j=W<0?-W:W)<=f){for(D=new L(c),O=Math.ceil(T/p+4),n=!1;j%2&&(D=D.times(V),Q(D.d,O)),j=s(j/2),j!==0;)V=V.times(V),Q(V.d,O);return n=!0,N.s<0?new L(c).div(D):C(D,T)}}else if(M<0)throw Error(o+"NaN");return M=M<0&&N.d[Math.max(O,j)]&1?-1:1,V.s=1,n=!1,D=N.times(k(V,T+G)),n=!0,D=b(D),D.s=M,D},y.toPrecision=function(N,O){var j,T,D=this,M=D.constructor;return N===void 0?(j=S(D),T=I(D,j<=M.toExpNeg||j>=M.toExpPos)):(h(N,1,t),O===void 0?O=M.rounding:h(O,0,8),D=C(new M(D),N,O),j=S(D),T=I(D,N<=j||j<=M.toExpNeg,N)),T},y.toSignificantDigits=y.tosd=function(N,O){var j=this,T=j.constructor;return N===void 0?(N=T.precision,O=T.rounding):(h(N,1,t),O===void 0?O=T.rounding:h(O,0,8)),C(new T(j),N,O)},y.toString=y.valueOf=y.val=y.toJSON=function(){var N=this,O=S(N),j=N.constructor;return I(N,O<=j.toExpNeg||O>=j.toExpPos)};function x(N,O){var j,T,D,M,K,V,L,G,W=N.constructor,ie=W.precision;if(!N.s||!O.s)return O.s||(O=new W(N)),n?C(O,ie):O;if(L=N.d,G=O.d,K=N.e,D=O.e,L=L.slice(),M=K-D,M){for(M<0?(T=L,M=-M,V=G.length):(T=G,D=K,V=L.length),K=Math.ceil(ie/p),V=K>V?K+1:V+1,M>V&&(M=V,T.length=1),T.reverse();M--;)T.push(0);T.reverse()}for(V=L.length,M=G.length,V-M<0&&(M=V,T=G,G=L,L=T),j=0;M;)j=(L[--M]=L[M]+G[M]+j)/d|0,L[M]%=d;for(j&&(L.unshift(j),++D),V=L.length;L[--V]==0;)L.pop();return O.d=L,O.e=D,n?C(O,ie):O}function h(N,O,j){if(N!==~~N||Nj)throw Error(a+N)}function g(N){var O,j,T,D=N.length-1,M="",K=N[0];if(D>0){for(M+=K,O=1;OK?1:-1;else for(V=L=0;VD[V]?1:-1;break}return L}function j(T,D,M){for(var K=0;M--;)T[M]-=K,K=T[M]1;)T.shift()}return function(T,D,M,K){var V,L,G,W,ie,Ie,ge,ce,R,ee,z,te,U,P,Y,B,se,ne,he=T.constructor,et=T.s==D.s?1:-1,it=T.d,ve=D.d;if(!T.s)return new he(T);if(!D.s)throw Error(o+"Division by zero");for(L=T.e-D.e,se=ve.length,Y=it.length,ge=new he(et),ce=ge.d=[],G=0;ve[G]==(it[G]||0);)++G;if(ve[G]>(it[G]||0)&&--L,M==null?te=M=he.precision:K?te=M+(S(T)-S(D))+1:te=M,te<0)return new he(0);if(te=te/p+2|0,G=0,se==1)for(W=0,ve=ve[0],te++;(G1&&(ve=N(ve,W),it=N(it,W),se=ve.length,Y=it.length),P=se,R=it.slice(0,se),ee=R.length;ee=d/2&&++B;do W=0,V=O(ve,R,se,ee),V<0?(z=R[0],se!=ee&&(z=z*d+(R[1]||0)),W=z/B|0,W>1?(W>=d&&(W=d-1),ie=N(ve,W),Ie=ie.length,ee=R.length,V=O(ie,R,Ie,ee),V==1&&(W--,j(ie,se16)throw Error(i+S(N));if(!N.s)return new W(c);for(O==null?(n=!1,V=ie):V=O,K=new W(.03125);N.abs().gte(.1);)N=N.times(K),G+=5;for(T=Math.log(l(2,G))/Math.LN10*2+5|0,V+=T,j=D=M=new W(c),W.precision=V;;){if(D=C(D.times(N),V),j=j.times(++L),K=M.plus(v(D,j,V)),g(K.d).slice(0,V)===g(M.d).slice(0,V)){for(;G--;)M=C(M.times(M),V);return W.precision=ie,O==null?(n=!0,C(M,ie)):M}M=K}}function S(N){for(var O=N.e*p,j=N.d[0];j>=10;j/=10)O++;return O}function w(N,O,j){if(O>N.LN10.sd())throw n=!0,j&&(N.precision=j),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),O)}function _(N){for(var O="";N--;)O+="0";return O}function k(N,O){var j,T,D,M,K,V,L,G,W,ie=1,Ie=10,ge=N,ce=ge.d,R=ge.constructor,ee=R.precision;if(ge.s<1)throw Error(o+(ge.s?"NaN":"-Infinity"));if(ge.eq(c))return new R(0);if(O==null?(n=!1,G=ee):G=O,ge.eq(10))return O==null&&(n=!0),w(R,G);if(G+=Ie,R.precision=G,j=g(ce),T=j.charAt(0),M=S(ge),Math.abs(M)<15e14){for(;T<7&&T!=1||T==1&&j.charAt(1)>3;)ge=ge.times(N),j=g(ge.d),T=j.charAt(0),ie++;M=S(ge),T>1?(ge=new R("0."+j),M++):ge=new R(T+"."+j.slice(1))}else return L=w(R,G+2,ee).times(M+""),ge=k(new R(T+"."+j.slice(1)),G-Ie).plus(L),R.precision=ee,O==null?(n=!0,C(ge,ee)):ge;for(V=K=ge=v(ge.minus(c),ge.plus(c),G),W=C(ge.times(ge),G),D=3;;){if(K=C(K.times(W),G),L=V.plus(v(K,new R(D),G)),g(L.d).slice(0,G)===g(V.d).slice(0,G))return V=V.times(2),M!==0&&(V=V.plus(w(R,G+2,ee).times(M+""))),V=v(V,new R(ie),G),R.precision=ee,O==null?(n=!0,C(V,ee)):V;V=L,D+=2}}function A(N,O){var j,T,D;for((j=O.indexOf("."))>-1&&(O=O.replace(".","")),(T=O.search(/e/i))>0?(j<0&&(j=T),j+=+O.slice(T+1),O=O.substring(0,T)):j<0&&(j=O.length),T=0;O.charCodeAt(T)===48;)++T;for(D=O.length;O.charCodeAt(D-1)===48;)--D;if(O=O.slice(T,D),O){if(D-=T,j=j-T-1,N.e=s(j/p),N.d=[],T=(j+1)%p,j<0&&(T+=p),Tm||N.e<-m))throw Error(i+j)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,O,j){var T,D,M,K,V,L,G,W,ie=N.d;for(K=1,M=ie[0];M>=10;M/=10)K++;if(T=O-K,T<0)T+=p,D=O,G=ie[W=0];else{if(W=Math.ceil((T+1)/p),M=ie.length,W>=M)return N;for(G=M=ie[W],K=1;M>=10;M/=10)K++;T%=p,D=T-p+K}if(j!==void 0&&(M=l(10,K-D-1),V=G/M%10|0,L=O<0||ie[W+1]!==void 0||G%M,L=j<4?(V||L)&&(j==0||j==(N.s<0?3:2)):V>5||V==5&&(j==4||L||j==6&&(T>0?D>0?G/l(10,K-D):0:ie[W-1])%10&1||j==(N.s<0?8:7))),O<1||!ie[0])return L?(M=S(N),ie.length=1,O=O-M-1,ie[0]=l(10,(p-O%p)%p),N.e=s(-O/p)||0):(ie.length=1,ie[0]=N.e=N.s=0),N;if(T==0?(ie.length=W,M=1,W--):(ie.length=W+1,M=l(10,p-T),ie[W]=D>0?(G/l(10,K-D)%l(10,D)|0)*M:0),L)for(;;)if(W==0){(ie[0]+=M)==d&&(ie[0]=1,++N.e);break}else{if(ie[W]+=M,ie[W]!=d)break;ie[W--]=0,M=1}for(T=ie.length;ie[--T]===0;)ie.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+S(N));return N}function E(N,O){var j,T,D,M,K,V,L,G,W,ie,Ie=N.constructor,ge=Ie.precision;if(!N.s||!O.s)return O.s?O.s=-O.s:O=new Ie(N),n?C(O,ge):O;if(L=N.d,ie=O.d,T=O.e,G=N.e,L=L.slice(),K=G-T,K){for(W=K<0,W?(j=L,K=-K,V=ie.length):(j=ie,T=G,V=L.length),D=Math.max(Math.ceil(ge/p),V)+2,K>D&&(K=D,j.length=1),j.reverse(),D=K;D--;)j.push(0);j.reverse()}else{for(D=L.length,V=ie.length,W=D0;--D)L[V++]=0;for(D=ie.length;D>K;){if(L[--D]0?M=M.charAt(0)+"."+M.slice(1)+_(T):K>1&&(M=M.charAt(0)+"."+M.slice(1)),M=M+(D<0?"e":"e+")+D):D<0?(M="0."+_(-D-1)+M,j&&(T=j-K)>0&&(M+=_(T))):D>=K?(M+=_(D+1-K),j&&(T=j-D-1)>0&&(M=M+"."+_(T))):((T=D+1)0&&(D+1===K&&(M+="."),M+=_(T))),N.s<0?"-"+M:M}function Q(N,O){if(N.length>O)return N.length=O,!0}function $(N){var O,j,T;function D(M){var K=this;if(!(K instanceof D))return new D(M);if(K.constructor=D,M instanceof D){K.s=M.s,K.e=M.e,K.d=(M=M.d)?M.slice():M;return}if(typeof M=="number"){if(M*0!==0)throw Error(a+M);if(M>0)K.s=1;else if(M<0)M=-M,K.s=-1;else{K.s=0,K.e=0,K.d=[0];return}if(M===~~M&&M<1e7){K.e=0,K.d=[M];return}return A(K,M.toString())}else if(typeof M!="string")throw Error(a+M);if(M.charCodeAt(0)===45?(M=M.slice(1),K.s=-1):K.s=1,u.test(M))A(K,M);else throw Error(a+M)}if(D.prototype=y,D.ROUND_UP=0,D.ROUND_DOWN=1,D.ROUND_CEIL=2,D.ROUND_FLOOR=3,D.ROUND_HALF_UP=4,D.ROUND_HALF_DOWN=5,D.ROUND_HALF_EVEN=6,D.ROUND_HALF_CEIL=7,D.ROUND_HALF_FLOOR=8,D.clone=$,D.config=D.set=F,N===void 0&&(N={}),N)for(T=["precision","rounding","toExpNeg","toExpPos","LN10"],O=0;O=D[O+1]&&T<=D[O+2])this[j]=T;else throw Error(a+j+": "+T);if((T=N[j="LN10"])!==void 0)if(T==Math.LN10)this[j]=new this(T);else throw Error(a+j+": "+T);return this}r=$(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof XS<"u"&&XS.exports?XS.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(nF)});var QW=jo((Jze,L5)=>{"use strict";var Jme=Object.prototype.hasOwnProperty,Aa="~";function fx(){}Object.create&&(fx.prototype=Object.create(null),new fx().__proto__||(Aa=!1));function Qme(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function JW(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Qme(r,n||e,o),i=Aa?Aa+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function x_(e,t){--e._eventsCount===0?e._events=new fx:delete e._events[t]}function la(){this._events=new fx,this._eventsCount=0}la.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Jme.call(r,n)&&t.push(Aa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};la.prototype.listeners=function(t){var r=Aa?Aa+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,a=n.length,i=new Array(a);o{"use strict";var G5=Symbol.for("react.transitional.element"),Y5=Symbol.for("react.portal"),I_=Symbol.for("react.fragment"),D_=Symbol.for("react.strict_mode"),j_=Symbol.for("react.profiler"),$_=Symbol.for("react.consumer"),L_=Symbol.for("react.context"),z_=Symbol.for("react.forward_ref"),B_=Symbol.for("react.suspense"),F_=Symbol.for("react.suspense_list"),U_=Symbol.for("react.memo"),W_=Symbol.for("react.lazy"),Lhe=Symbol.for("react.view_transition"),zhe=Symbol.for("react.client.reference");function ns(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case G5:switch(e=e.type,e){case I_:case j_:case D_:case B_:case F_:case Lhe:return e;default:switch(e=e&&e.$$typeof,e){case L_:case z_:case W_:case U_:return e;case $_:return e;default:return t}}case Y5:return t}}}Jr.ContextConsumer=$_;Jr.ContextProvider=L_;Jr.Element=G5;Jr.ForwardRef=z_;Jr.Fragment=I_;Jr.Lazy=W_;Jr.Memo=U_;Jr.Portal=Y5;Jr.Profiler=j_;Jr.StrictMode=D_;Jr.Suspense=B_;Jr.SuspenseList=F_;Jr.isContextConsumer=function(e){return ns(e)===$_};Jr.isContextProvider=function(e){return ns(e)===L_};Jr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===G5};Jr.isForwardRef=function(e){return ns(e)===z_};Jr.isFragment=function(e){return ns(e)===I_};Jr.isLazy=function(e){return ns(e)===W_};Jr.isMemo=function(e){return ns(e)===U_};Jr.isPortal=function(e){return ns(e)===Y5};Jr.isProfiler=function(e){return ns(e)===j_};Jr.isStrictMode=function(e){return ns(e)===D_};Jr.isSuspense=function(e){return ns(e)===B_};Jr.isSuspenseList=function(e){return ns(e)===F_};Jr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===I_||e===j_||e===D_||e===B_||e===F_||typeof e=="object"&&e!==null&&(e.$$typeof===W_||e.$$typeof===U_||e.$$typeof===L_||e.$$typeof===$_||e.$$typeof===z_||e.$$typeof===zhe||e.getModuleId!==void 0)};Jr.typeOf=ns});var cq=jo((R7e,uq)=>{"use strict";uq.exports=lq()});var Yee=Z(J()),Xee=Z(f6());var Nt=Z(J());var pt=Z(J());var kr=Z(J()),Kd={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"}},Jy={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"}},bm={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 soe=({id:e="mascot"})=>kr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},kr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},kr.default.createElement("g",{fillRule:"nonzero"},kr.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"})),kr.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"}),kr.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"}),kr.default.createElement("g",{transform:"translate(75.105, 196.182)"},kr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),kr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),kr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),kr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),kr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),kr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),kr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),kr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),kr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},kr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},kr.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"})),kr.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"})),kr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},kr.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"})),kr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},kr.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"}),kr.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 In({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return kr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&kr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Kd[c];return d?kr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),kr.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"},kr.default.createElement("title",null,"ActiveAgent"),kr.default.createElement(soe,null)),n&&r.length>0&&kr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=Jy[c];return d?kr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var Ha=Z(J());var Ns=Z(J()),m6=(0,Ns.createContext)();function g6({children:e}){let[t,r]=(0,Ns.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Ns.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Ns.useEffect)(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)"),a=i=>{localStorage.getItem("dashboard-theme")||r(i.matches)};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)},[]);let n=()=>r(!t);return Ns.default.createElement(m6.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function ut(){let e=(0,Ns.useContext)(m6);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function wm({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=Ha.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 Ha.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"}},Ha.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},Ha.default.createElement("div",{style:{minWidth:0}},Ha.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&&Ha.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&Ha.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&Ha.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>Ha.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},Ha.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),Ha.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&Ha.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&Ha.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function iT(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var al="~ estimated from tokens \xD7 model rates",H1=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),v6=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),Ts=e=>H1(e)?`${v6(Number(e)*100)}%`:"\u2014",qn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${v6(n*100/r)}%`},aa=e=>Ts(e),q1=e=>`pass \u2265 ${Ts(e)}`,Pr=(e,{estimated:t=!1}={})=>{if(!H1(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},h6=e=>Math.round(Number(e)||0).toLocaleString("en-US"),y6=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},loe=["pattern","default"],Sm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!H1(r.input)||!H1(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${h6(e)} in \xD7 ${y6(r.input)} + ${h6(t)} out \xD7 ${y6(r.output)} \xB7 ${n} rate${loe.includes(n)?" (fallback rate)":""}`};var uoe=[{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 sT({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,pt.useState)(""),[f,m]=(0,pt.useState)(""),[y,x]=(0,pt.useState)(""),h=e.filter(k=>{let A=!d||k.name.toLowerCase().includes(d.toLowerCase())||k.description?.toLowerCase().includes(d.toLowerCase()),C=!f||k.provider===f,E=!y||k.status===y;return A&&C&&E}),g=k=>{let A=new Date(k),E=new Date-A,I=Math.floor(E/(1e3*60*60*24));return I===0?"Today":I===1?"Yesterday":I<7?`${I} days ago`:A.toLocaleDateString()},v=k=>{switch(k){case"active":return"bg-green-100 text-green-700";case"draft":return"bg-yellow-100 text-yellow-700";case"archived":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},b=k=>k==null?"\u2014":k<1e3?`${Math.round(k)}ms`:`${(k/1e3).toFixed(1)}s`,S=k=>k==null?"\u2014":k>=1e6?`${(k/1e6).toFixed(1)}M`:k>=1e3?`${(k/1e3).toFixed(1)}k`:`${k}`,w=k=>k==null?"\u2014":k>0&&k<.01?"<$0.01":`$${k.toFixed(2)}`,_=k=>{if(!k)return"\u2014";let A=Math.floor((new Date-new Date(k))/(1e3*60*60*24));return A<=0?"Today":A<30?`${A}d ago`:new Date(k).toLocaleDateString()};return pt.default.createElement("div",{className:"space-y-6"},pt.default.createElement("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},pt.default.createElement("div",{className:"flex-1 flex items-center space-x-4"},pt.default.createElement("div",{className:"relative flex-1 max-w-md"},pt.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:k=>p(k.target.value),className:"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),pt.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"},pt.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"}))),pt.default.createElement("select",{value:f,onChange:k=>m(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},pt.default.createElement("option",{value:""},"All Providers"),t.providers?.map(k=>pt.default.createElement("option",{key:k,value:k},k.charAt(0).toUpperCase()+k.slice(1)))),pt.default.createElement("select",{value:y,onChange:k=>x(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},pt.default.createElement("option",{value:""},"All Status"),pt.default.createElement("option",{value:"active"},"Active"),pt.default.createElement("option",{value:"draft"},"Draft"),pt.default.createElement("option",{value:"archived"},"Archived")),pt.default.createElement("select",{value:l,onChange:k=>u?.(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500",title:"Rank agents by their scorecard"},uoe.map(k=>pt.default.createElement("option",{key:k.value,value:k.value},k.label)))),pt.default.createElement("div",{className:"flex items-center space-x-3"},pt.default.createElement("button",{onClick:s,disabled:c,className:"p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors"},pt.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"}))),pt.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"},pt.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"})),pt.default.createElement("span",null,"Browse Templates")),pt.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"},pt.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),pt.default.createElement("span",null,"New Agent")))),h.length>0?pt.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(k=>{let A=k.stats||{},C=A.run_sources||[],E=C.length?`Counted from ${C.map(I=>I==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return pt.default.createElement(wm,{key:k.id,name:k.name,subtitle:k.description||"No description",badge:pt.default.createElement("span",{className:`px-2 py-0.5 text-xs font-medium rounded-full ${v(k.status)}`},k.status),onClick:()=>r(k),stats:[{label:`Runs ${A.window_days||30}d`,value:A.runs??0,title:E},{label:"Success",value:A.success_rate!=null?`${Math.round(A.success_rate)}%`:"\u2014",tone:iT(A.success_rate!=null?A.success_rate/100:null)},{label:"Avg time",value:b(A.avg_duration_ms)},{label:"Eval",title:A.eval_samples_evaluated?`${qn(A.eval_samples_passed,A.eval_samples_evaluated)} passed over ${A.eval_runs??"the"} current evaluation${A.eval_runs===1?"":"s"}${A.eval_not_counted?` \xB7 ${A.eval_not_counted} stale or archived not counted`:""}`:A.eval_not_counted?`${A.eval_not_counted} evaluation${A.eval_not_counted===1?"":"s"} stale or archived, none counted`:"No evaluation counted yet",value:Ts(A.eval_score),tone:iT(A.eval_score)},{label:"Tokens",value:S(A.tokens)},{label:"Cost",value:w(A.cost),title:"Estimated from token counts at each model's published rates",tone:A.cost==null?"muted":void 0}],footer:pt.default.createElement(pt.default.Fragment,null,pt.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},pt.default.createElement("span",{style:{padding:"2px 6px",borderRadius:"4px",background:"rgba(128,128,128,0.15)",whiteSpace:"nowrap",flexShrink:0}},k.provider),pt.default.createElement("span",{title:k.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},k.model)),pt.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${g(k.updatedAt||k.updated_at)}`},A.last_run_at?`Last run ${_(A.last_run_at)}`:`Updated ${g(k.updatedAt||k.updated_at)}`)),actions:pt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},pt.default.createElement("button",{onClick:I=>{I.stopPropagation(),a(k.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),pt.default.createElement("button",{onClick:I=>{I.stopPropagation(),i(k.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):pt.default.createElement("div",{className:"text-center py-16"},pt.default.createElement("div",{className:"inline-block mb-4"},pt.default.createElement(In,{size:100})),pt.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},e.length===0?"No agents yet":"No matching agents"),pt.default.createElement("p",{className:"text-gray-500 mb-6"},e.length===0?"Create your first AI agent to get started":"Try adjusting your search or filters"),e.length===0&&pt.default.createElement("div",{className:"flex items-center justify-center space-x-4"},pt.default.createElement("button",{onClick:o,className:"inline-flex items-center space-x-2 px-6 py-3 border-2 border-red-500 text-red-600 rounded-lg hover:bg-red-50 transition-colors"},pt.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"})),pt.default.createElement("span",null,"Browse Templates")),pt.default.createElement("span",{className:"text-gray-400"},"or"),pt.default.createElement("button",{onClick:n,className:"inline-flex items-center space-x-2 px-6 py-3 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},pt.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),pt.default.createElement("span",null,"Create From Scratch")))))}var xe=Z(J());var Bo={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 Pt={mono:"'SF Mono', 'Fira Code', 'Consolas', monospace",sizes:{xs:"10px",sm:"11px",base:"13px",md:"14px",lg:"16px",xl:"20px",xxl:"24px"},weights:{normal:400,medium:500,semibold:600,bold:700}};function x6(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 km={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"]},K1=Object.keys(km),coe=300*1e3,b6=x6(doe,{ttlMs:coe,keep:e=>e!==null});async function w6(e){return await b6(e)??(km[e]||[])}function lT(){b6.clear()}async function doe(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 V1=Z(J());function vc(e){let[t,r]=(0,V1.useState)(km),n=e.join(",");return(0,V1.useEffect)(()=>{let o=!1;return e.forEach(a=>{w6(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var xc=Z(J());function Ql({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,xc.useId)();return xc.default.createElement(xc.default.Fragment,null,xc.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}),xc.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>xc.default.createElement("option",{key:u,value:u}))))}var poe=["agent_defined","dashboard","mcp"],uT={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},foe={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},Y1=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],cT=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`},Qy=(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`},moe="sandbox:",Vd=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(moe))),Ry=e=>Vd(e)&&!e.known,X1=e=>!!e&&!e.known&&!Vd(e);function S6(e){return Ry(e)?"this sandbox is no longer running, so it offers no tools \u2014 switch it off, and start a new sandbox from Settings \u2192 Integrations to enable its runtime":Vd(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var _m=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 G1(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=_m(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 k6=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=k6(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 C6(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(goe(e,t).map(o=>({...o,on:!0})))}function A6(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=k6(n),s=C6(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return poe.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:uT[u],meta:`${foe[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 E6(e,t,r,{range:n="7d"}={}){let o=C6(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 N6(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function dT(e,t=[]){let r=N6(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 pT(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 T6(e=[],t,r=[]){let n=(e||[]).map(String),o=dT(t,n);if(!o)return n;let a=new Set(pT(n,N6(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 O6(e,t,r){let n=G1(e,t.mcpServers),o=G1(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 P6(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=_m(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=_m(i);s&&!a.has(s)&&o.push(i)}),o}function M6(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 fT(e){return(e?.tools||[]).filter(t=>t.editable&&t.implemented!==!1)}var hoe=["terminal","filesystem","edit","database"],Z1=(e=[])=>e.some(t=>hoe.includes(t)),yoe={terminal:["run_command"],filesystem:["write_file"],edit:["edit_file"],slack:["slack_post_message"]},Cm=(e=[])=>[...new Set(e.flatMap(t=>yoe[t]||[]))];function I6(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 mT(e,t=[]){if(!e)return[...t];let r=new Set(fT(e).map(n=>n.key));return t.filter(n=>r.has(n))}var gT=(e=[],t)=>e.some(r=>_m(r)===t);function D6(e=[],t){return gT(e,t.key)?e.filter(r=>_m(r)!==t.key):[...e,{key:t.key,name:t.name}]}function j6(e){let t=e.workspace_agents||0;return t?`${t} agent${t===1?"":"s"}`:null}var J1=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],ev={...Jy,agents:{emoji:"\u{1F91D}",label:"Delegate to agents"},ask:{emoji:"\u{1F64B}",label:"Ask the user"}},voe=["name","slug","description","provider","model"];function hT({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,xe.useState)(0),[s,l]=(0,xe.useState)({name:"",description:"",provider:"openai",model:km.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=vc([s.provider]),c=(0,xe.useMemo)(()=>{let _=o?.model&&o.provider;return!_||!u[_]?u:{...u,[_]:[...new Set([o.model,...u[_]])]}},[u]),d=c[s.provider];(0,xe.useEffect)(()=>{d?.length&&l(_=>d.includes(_.model)?_:{..._,model:d[0]})},[d]);let[p,f]=(0,xe.useState)(null),[m,y]=(0,xe.useState)(null);(0,xe.useEffect)(()=>{fetch("/api/agents/tool_roster").then(_=>{if(!_.ok)throw new Error(`HTTP ${_.status}`);return _.json()}).then(_=>{f(_),l(k=>({...k,tools:mT(_,k.tools)}))}).catch(_=>y(_.message))},[]);let[x,h]=(0,xe.useState)(null),g=(_,k)=>{l(A=>({...A,[_]:k}))},v=(_,k)=>{l(A=>{let C=A[_]||[],E=C.includes(k)?C.filter(I=>I!==k):[...C,k];return{...A,[_]:E}})},b=_=>{if(g("preset_type",_),bm[_]){let k=bm[_];g("instruction_sets",[...k.instructions]),g("tools",mT(p,k.tools))}},S=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},w=async()=>{h(null);let _=await t({...s,approval_required_tools:Cm(s.tools)});_&&(h(_),Object.keys(_.fieldErrors||{}).some(k=>voe.includes(k))&&i(0))};return xe.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&xe.default.createElement("div",{className:"mb-4 p-4 rounded-lg border border-red-200 bg-red-50 text-sm text-gray-700"},"Prepared by your workspace assistant. Review the instructions, model, and tools before creating this agent."),xe.default.createElement("div",{className:"mb-8"},xe.default.createElement("div",{className:"flex items-center justify-between"},J1.map((_,k)=>xe.default.createElement("div",{key:_.id,className:"flex items-center"},xe.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${kxe.default.createElement("li",{key:_},_)))),xe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&xe.default.createElement(xoe,{formData:s,updateField:g,providerModels:c,fieldErrors:x?.fieldErrors||{}}),a===1&&xe.default.createElement(boe,{formData:s,meta:e,roster:p,rosterError:m,toggleArrayItem:v,updateField:g,selectPreset:b}),a===2&&xe.default.createElement(woe,{formData:s,roster:p})),xe.default.createElement("div",{className:"flex justify-between mt-6"},xe.default.createElement("button",{onClick:a===0?r:()=>i(a-1),className:"px-6 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition-colors"},a===0?"Cancel":"Back"),xe.default.createElement("button",{onClick:a===J1.length-1?w:()=>i(a+1),disabled:!S()||n,className:`px-6 py-2 rounded-lg transition-colors ${S()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===J1.length-1?"Create Agent":"Continue")))}function Q1({messages:e}){return e.length?xe.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function xoe({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),xe.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),xe.default.createElement("input",{type:"text",value:e.name,onChange:a=>t("name",a.target.value),placeholder:"My Awesome Agent",className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(Q1,{messages:o("name","slug")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),xe.default.createElement("textarea",{value:e.description,onChange:a=>t("description",a.target.value),placeholder:"What does this agent do?",rows:3,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(Q1,{messages:o("description")})),xe.default.createElement("div",{className:"grid grid-cols-2 gap-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),xe.default.createElement("select",{value:e.provider,onChange:a=>{t("provider",a.target.value),t("model",r[a.target.value][0])},className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},Object.keys(r).map(a=>xe.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),xe.default.createElement(Q1,{messages:o("provider")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),xe.default.createElement(Ql,{value:e.model,models:r[e.provider],onChange:a=>t("model",a),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"}),xe.default.createElement(Q1,{messages:o("model")}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),xe.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:a=>t("model_config",{...e.model_config,temperature:parseFloat(a.target.value)}),className:"w-full accent-red-500"}),xe.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},xe.default.createElement("span",null,"Precise"),xe.default.createElement("span",null,"Creative")))))}function boe({formData:e,meta:t,roster:r,rosterError:n,toggleArrayItem:o,updateField:a,selectPreset:i}){let s=Object.keys(bm),l=Object.keys(Kd),u=fT(r),{callable:c,unavailable:d}=I6(r);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),xe.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex flex-col items-center"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(p=>{let f=Kd[p];return f?xe.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})),xe.default.createElement(In,{size:120}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(p=>{let f=Jy[p];return f?xe.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(p=>xe.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"}`},xe.default.createElement("span",{className:"capitalize"},p.replace(/([A-Z])/g," $1").trim()))))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Instructions"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},l.map(p=>{let f=Kd[p];return xe.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"}`},xe.default.createElement("span",null,f.emoji),xe.default.createElement("span",null,f.label))}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Tools"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Functions the model can call")),n&&xe.default.createElement("p",{className:"text-sm text-red-600"},"Could not load the tools this workspace offers: ",n),!r&&!n&&xe.default.createElement("p",{className:"text-sm text-gray-400"},"Loading tools\u2026"),xe.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-tools"},u.map(p=>xe.default.createElement($6,{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}))),Z1(e.tools)&&xe.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.")),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"MCP servers"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Every tool the server serves is offered")),r&&c.length===0&&xe.default.createElement("p",{className:"text-sm text-gray-500"},"No MCP server this workspace can call yet. Register one with its URL in ",xe.default.createElement("code",null,"ActionAgent.mcp_catalog"),", or boot a project's checkout to offer its app runtime."),xe.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-mcp-servers"},c.map(p=>xe.default.createElement($6,{key:p.key,testId:`builder-mcp-${p.key}`,on:gT(e.mcp_servers,p.key),onClick:()=>a("mcp_servers",D6(e.mcp_servers,p)),emoji:p.runtime?"\u{1F4E6}":"\u{1F50C}",label:p.name,hint:j6(p),title:[p.description,p.transport].filter(Boolean).join(" \xB7 ")}))),d.length>0&&xe.default.createElement("details",{className:"mt-3 text-sm","data-testid":"builder-mcp-unavailable"},xe.default.createElement("summary",{className:"cursor-pointer text-gray-500"},d.length," catalog server",d.length===1?"":"s"," a run can't call"),xe.default.createElement("ul",{className:"mt-2 space-y-1"},d.map(p=>xe.default.createElement("li",{key:p.key,className:"text-xs text-gray-500"},xe.default.createElement("span",{className:"font-medium text-gray-700"},p.name)," \u2014 ",p.unavailable_reason))))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),xe.default.createElement("textarea",{value:e.instructions,onChange: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 woe({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 xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),xe.default.createElement("div",{className:"grid grid-cols-2 gap-8"},xe.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(n=>{let o=Kd[n];return o?xe.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),xe.default.createElement(In,{size:100}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(n=>{let o=Jy[n];return o?xe.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),xe.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),xe.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),xe.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),xe.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(n=>{let o=Kd[n];return o?xe.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},o.emoji," ",o.label):null}):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(n=>xe.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)):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),Cm(e.tools).length>0&&xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Waits for your approval"),xe.default.createElement("p",{className:"text-gray-900 text-sm font-mono"},Cm(e.tools).join(", "))),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"MCP servers"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.mcp_servers.length>0?e.mcp_servers.map(n=>xe.default.createElement("span",{key:r(n),className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r(n))):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),xe.default.createElement("pre",{className:"mt-2 p-4 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap font-mono"},e.instructions)))}function $6({on:e,onClick:t,emoji:r,label:n,hint:o,title:a,testId:i}){return xe.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"}`},xe.default.createElement("span",null,r),xe.default.createElement("span",null,n),o&&xe.default.createElement("span",{className:`text-xs ${e?"text-red-100":"text-gray-400"}`},"\xB7 ",o))}var _e=Z(J());var Hi=e=>({cardBg:e?"#1f1f1f":"#ffffff",cardBorder:e?"#2a2a2a":"#e5e7eb",borderStrong:e?"rgba(255,255,255,0.2)":"#d1d5db",mutedBg:e?"rgba(255,255,255,0.06)":"#f3f4f6",innerBg:e?"rgba(255,255,255,0.04)":"#f9fafb",textPrimary:e?"#ffffff":"#111827",textCell:e?"rgba(255,255,255,0.75)":"#4b5563",textSecondary:e?"rgba(255,255,255,0.6)":"#6b7280",textMuted:e?"rgba(255,255,255,0.4)":"#9ca3af",inputBg:e?"rgba(255,255,255,0.06)":"#ffffff",inputBorder:e?"rgba(255,255,255,0.2)":"#d1d5db",trackBg:e?"rgba(255,255,255,0.1)":"#f3f4f6"}),Jo="#ef4444";var q=Z(J());var R1=Z(J()),U6=Z(J());function L6(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=Aoe(e,Coe),d=a||{width:n,height:o,x:0,y:0},p=bt("recharts-surface",i);return R1.createElement("svg",xT({},gn(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),R1.createElement("title",null,l),R1.createElement("desc",null,u),r)});var ew=Z(J());var Noe=["children","className"];function bT(){return bT=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=Toe(e,Noe),a=bt("recharts-layer",n);return ew.createElement("g",bT({className:a},gn(o),{ref:t}),r)});var bi=Z(J()),ES=Z(J()),U7=Z(Rh());function tw(e){return e==="__proto__"}var Poe=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function rw(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:Poe.test(e);default:return!1}}function Am(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function wT(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(wT).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function Em(e){if(Array.isArray(e))return e.map(Am);if(typeof e=="symbol")return[e];e=wT(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]:Ioe,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function ko(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+qi(s)+a:o+a},"")}var Xr=e=>e===0?0:e>0?1:-1,Uo=e=>typeof e=="number"&&e!=+e,Rl=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,je=e=>(typeof e=="number"||e instanceof Number)&&!Uo(e),wa=e=>je(e)||typeof e=="string",Doe=0,eu=e=>{var t=++Doe;return"".concat(e||"").concat(t)},Dn=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(!je(t)&&typeof t!="string")return n;var a;if(Rl(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return Uo(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},ST=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):Fo(n,t))===r)}var ar=e=>e===null||typeof e>"u",tu=e=>ar(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function _o(e){return e!=null}function Sa(){}function nv(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 W6(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 il(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=nv(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,y=(f+m)/2,x=(d+p)/2,h=f+d/2,g=c>=0?1:-1,v=g*o,b=g>0?"end":"start",S=g>0?"start":"end",w=d>=0?1:-1,_=w*o,k=w>0?"end":"start",A=w>0?"start":"end",C=a;if(r==="top"){var E={x:f+d/2,y:u-v,horizontalAnchor:"middle",verticalAnchor:b};return i&&C&&(E.height=Math.max(u-C.y,0),E.width=d),E}if(r==="bottom"){var I={x:m+p/2,y:u+c+v,horizontalAnchor:"middle",verticalAnchor:S};return i&&C&&(I.height=Math.max(C.y+C.height-(u+c),0),I.width=p),I}if(r==="left"){var Q={x:y-_,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"};return i&&C&&(Q.width=Math.max(Q.x-C.x,0),Q.height=c),Q}if(r==="right"){var $={x:y+x+_,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"};return i&&C&&($.width=Math.max(C.x+C.width-$.x,0),$.height=c),$}var F=i&&C?{width:x,height:c}:{};return r==="insideLeft"?il({x:y+_,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"},F):r==="insideRight"?il({x:y+x-_,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},F):r==="insideTop"?il({x:f+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:S},F):r==="insideBottom"?il({x:m+p/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:b},F):r==="insideTopLeft"?il({x:f+_,y:u+v,horizontalAnchor:A,verticalAnchor:S},F):r==="insideTopRight"?il({x:f+d-_,y:u+v,horizontalAnchor:k,verticalAnchor:S},F):r==="insideBottomLeft"?il({x:m+_,y:u+c-v,horizontalAnchor:A,verticalAnchor:b},F):r==="insideBottomRight"?il({x:m+p-_,y:u+c-v,horizontalAnchor:k,verticalAnchor:b},F):r&&typeof r=="object"&&(je(r.x)||Rl(r.x))&&(je(r.y)||Rl(r.y))?il({x:l+Dn(r.x,x),y:u+Dn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},F):il({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},F)},zoe=["top","left","right","bottom"];function ov(e){return e==null?!1:typeof e=="object"?!0:zoe.includes(e)}var aw=Z(J()),kT=(0,aw.createContext)(null),H6=()=>(0,aw.useContext)(kT);var ka=Z(J());var lz=Z(J());function Mr(e){return function(){return e}}var _T=Math.cos;var av=Math.sin,Wo=Math.sqrt;var Gd=Math.PI,$Ee=Gd/2,Nm=2*Gd;var CT=Math.PI,AT=2*CT,Yd=1e-6,Boe=AT-Yd;function q6(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return q6;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oYd)if(!(Math.abs(d*l-u*c)>Yd)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,y=l*l+u*u,x=f*f+m*m,h=Math.sqrt(y),g=Math.sqrt(p),v=a*Math.tan((CT-Math.acos((y+p-x)/(2*h*g)))/2),b=v/g,S=v/h;Math.abs(b-1)>Yd&&this._append`L${t+b*c},${r+b*d}`,this._append`A${a},${a},0,0,${+(d*f>c*m)},${this._x1=t+S*l},${this._y1=r+S*u}`}}arc(t,r,n,o,a,i){if(t=+t,r=+r,n=+n,i=!!i,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),l=n*Math.sin(o),u=t+s,c=r+l,d=1^i,p=i?o-a:a-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Yd||Math.abs(this._y1-c)>Yd)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%AT+AT),p>Boe?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>Yd&&this._append`A${n},${n},0,${+(p>=CT)},${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 K6(){return new Xd}K6.prototype=Xd.prototype;function Tm(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 Xd(t)}var qEe=Array.prototype.slice;function Om(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function V6(e){this._context=e}V6.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 bc(e){return new V6(e)}function iw(e){return e[0]}function sw(e){return e[1]}function iv(e,t){var r=Mr(!0),n=null,o=bc,a=null,i=Tm(s);e=typeof e=="function"?e:e===void 0?iw:Mr(e),t=typeof t=="function"?t:t===void 0?sw:Mr(t);function s(l){var u,c=(l=Om(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(v[m],b[m]);s.lineEnd(),s.areaEnd()}h&&(v[p]=+e(x,p,d),b[p]=+t(x,p,d),s.point(n?+n(x,p,d):v[p],r?+r(x,p,d):b[p]))}if(g)return s=null,g+""||null}function c(){return iv().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Mr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Mr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Mr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Mr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Mr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Mr(+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:Mr(!!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 lw=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 ET(e){return new lw(e,!0)}function NT(e){return new lw(e,!1)}var Mm={draw(e,t){let r=Wo(t/Gd);e.moveTo(r,0),e.arc(0,0,r,0,Nm)}};var TT={draw(e,t){let r=Wo(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 G6=Wo(1/3),Uoe=G6*2,OT={draw(e,t){let r=Wo(t/Uoe),n=r*G6;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var PT={draw(e,t){let r=Wo(t),n=-r/2;e.rect(n,n,r,r)}};var Woe=.8908130915292852,Y6=av(Gd/10)/av(7*Gd/10),Hoe=av(Nm/10)*Y6,qoe=-_T(Nm/10)*Y6,MT={draw(e,t){let r=Wo(t*Woe),n=Hoe*r,o=qoe*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Nm*a/5,s=_T(i),l=av(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var IT=Wo(3),DT={draw(e,t){let r=-Wo(t/(IT*3));e.moveTo(0,r*2),e.lineTo(-IT*r,-r),e.lineTo(IT*r,-r),e.closePath()}};var Ki=-.5,Vi=Wo(3)/2,jT=1/Wo(12),Koe=(jT/2+1)*3,$T={draw(e,t){let r=Wo(t/Koe),n=r/2,o=r*jT,a=n,i=r*jT+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(Ki*n-Vi*o,Vi*n+Ki*o),e.lineTo(Ki*a-Vi*i,Vi*a+Ki*i),e.lineTo(Ki*s-Vi*l,Vi*s+Ki*l),e.lineTo(Ki*n+Vi*o,Ki*o-Vi*n),e.lineTo(Ki*a+Vi*i,Ki*i-Vi*a),e.lineTo(Ki*s+Vi*l,Ki*l-Vi*s),e.closePath()}};function uw(e,t){let r=null,n=Tm(o);e=typeof e=="function"?e:Mr(e||Mm),t=typeof t=="function"?t:Mr(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:Mr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Mr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function Im(){}function Dm(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 X6(e){this._context=e}X6.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:Dm(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:Dm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function LT(e){return new X6(e)}function Z6(e){this._context=e}Z6.prototype={areaStart:Im,areaEnd:Im,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:Dm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function zT(e){return new Z6(e)}function J6(e){this._context=e}J6.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:Dm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function BT(e){return new J6(e)}function Q6(e){this._context=e}Q6.prototype={areaStart:Im,areaEnd:Im,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 FT(e){return new Q6(e)}function R6(e){return e<0?-1:1}function ez(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(R6(a)+R6(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function tz(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function UT(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 cw(e){this._context=e}cw.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:UT(this,this._t0,tz(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,UT(this,tz(this,r=ez(this,e,t)),r);break;default:UT(this,this._t0,r=ez(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function rz(e){this._context=new nz(e)}(rz.prototype=Object.create(cw.prototype)).point=function(e,t){cw.prototype.point.call(this,t,e)};function nz(e){this._context=e}nz.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 WT(e){return new cw(e)}function HT(e){return new rz(e)}function az(e){this._context=e}az.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=oz(e),o=oz(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 KT(e){return new dw(e,.5)}function VT(e){return new dw(e,0)}function GT(e){return new dw(e,1)}function gi(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 Voe(e,t){return e[t]}function Goe(e){let t=[];return t.key=e,t}function YT(){var e=Mr([]),t=jm,r=gi,n=Voe;function o(a){var i=Array.from(e.apply(this,arguments),Goe),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(tu(e));return uz[t]||Mm},nae=(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*tae;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}},oae=(e,t)=>{uz["symbol".concat(tu(e))]=t},RT=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=Roe(e,Xoe),l=sz(sz({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=rae(u),x=uw().type(y).size(nae(o,i,u)),h=x();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=gn(l);return je(p)&&je(f)&&je(o)?lz.createElement("path",QT({},m,{className:bt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};RT.registerSymbol=oae;var cz=Z(J());var pw=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,$m=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,cz.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{tv(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},aae=(e,t,r)=>n=>(e(t,r,n),null),ru=(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];tv(o)&&typeof a=="function"&&(n||(n={}),n[o]=aae(a,t,r))}),n};function dz(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 iae(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function fw(){return fw=Object.assign?Object.assign.bind():function(e){for(var t=1;t>>=0,e===0?32:31-(tre(e)/rre|0)|0}var Cb=256,Ab=262144,Eb=4194304;function Od(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 M1(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=Od(n):(i&=s,i!==0?o=Od(i):r||(r=s&~e,r!==0&&(o=Od(r))))):(s=n&~a,s!==0?o=Od(s):i!==0?o=Od(i):r||(r=n&~e,r!==0&&(o=Od(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 Ky(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ore(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 F$(){var e=Eb;return Eb<<=1,(Eb&62914560)===0&&(Eb=4194304),e}function GA(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Vy(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function are(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 dre=/[\n"\\]/g;function zi(e){return e.replace(dre,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function ME(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=""+ji(t)):e.value!==""+ji(t)&&(e.value=""+ji(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?IE(e,i,ji(t)):r!=null?IE(e,i,ji(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=""+ji(s):e.removeAttribute("name")}function X$(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)){PE(e);return}r=r!=null?""+ji(r):"",t=t!=null?""+ji(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),PE(e)}function IE(e,t,r){t==="number"&&s1(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Rf(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"),jE=!1;if(Gl)try{jf={},Object.defineProperty(jf,"passive",{get:function(){jE=!0}}),window.addEventListener("test",jf,jf),window.removeEventListener("test",jf,jf)}catch{jE=!1}var jf,ec=null,CN=null,qb=null;function eL(){if(qb)return qb;var e,t=CN,r=t.length,n,o="value"in ec?ec.value:ec.textContent,a=o.length;for(e=0;e=hy),x4=" ",b4=!1;function rL(e,t){switch(e){case"keyup":return Bre.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nL(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var qf=!1;function Ure(e,t){switch(e){case"compositionend":return nL(t);case"keypress":return t.which!==32?null:(b4=!0,x4);case"textInput":return e=t.data,e===x4&&b4?null:e;default:return null}}function Wre(e,t){if(qf)return e==="compositionend"||!EN&&rL(e,t)?(e=eL(),qb=CN=ec=null,qf=!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=_4(r)}}function sL(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?sL(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function lL(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=s1(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=s1(e.document)}return t}function NN(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 Zre=Gl&&"documentMode"in document&&11>=document.documentMode,Kf=null,$E=null,vy=null,LE=!1;function A4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;LE||Kf==null||Kf!==s1(n)||(n=Kf,"selectionStart"in n&&NN(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}),vy&&My(vy,n)||(vy=n,n=C1($E,"onSelect"),0>=i,o-=i,Rs=1<<32-ci(t)+o|r<_?(A=w,w=null):A=w.sibling;var C=p(h,w,v[_],b);if(C===null){w===null&&(w=A);break}e&&w&&C.alternate===null&&t(h,w),g=a(C,g,_),S===null?k=C:S.sibling=C,S=C,w=A}if(_===v.length)return r(h,w),gr&&Bl(h,_),k;if(w===null){for(;__?(A=w,w=null):A=w.sibling;var E=p(h,w,C.value,b);if(E===null){w===null&&(w=A);break}e&&w&&E.alternate===null&&t(h,w),g=a(E,g,_),S===null?k=E:S.sibling=E,S=E,w=A}if(C.done)return r(h,w),gr&&Bl(h,_),k;if(w===null){for(;!C.done;_++,C=v.next())C=d(h,C.value,b),C!==null&&(g=a(C,g,_),S===null?k=C:S.sibling=C,S=C);return gr&&Bl(h,_),k}for(w=n(w);!C.done;_++,C=v.next())C=f(w,h,_,C.value,b),C!==null&&(e&&C.alternate!==null&&w.delete(C.key===null?_:C.key),g=a(C,g,_),S===null?k=C:S.sibling=C,S=C);return e&&w.forEach(function(I){return t(h,I)}),gr&&Bl(h,_),k}function x(h,g,v,b){if(typeof v=="object"&&v!==null&&v.type===Ff&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case _b:e:{for(var k=v.key;g!==null;){if(g.key===k){if(k=v.type,k===Ff){if(g.tag===7){r(h,g.sibling),b=o(g,v.props.children),b.return=h,h=b;break e}}else if(g.elementType===k||typeof k=="object"&&k!==null&&k.$$typeof===Gu&&Pd(k)===g.type){r(h,g.sibling),b=o(g,v.props),iy(b,v),b.return=h,h=b;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===Ff?(b=Dd(v.props.children,h.mode,b,v.key),b.return=h,h=b):(b=Vb(v.type,v.key,v.props,null,h.mode,b),iy(b,v),b.return=h,h=b)}return i(h);case dy:e:{for(k=v.key;g!==null;){if(g.key===k)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){r(h,g.sibling),b=o(g,v.children||[]),b.return=h,h=b;break e}else{r(h,g);break}else t(h,g);g=g.sibling}b=tE(v,h.mode,b),b.return=h,h=b}return i(h);case Gu:return v=Pd(v),x(h,g,v,b)}if(py(v))return m(h,g,v,b);if(oy(v)){if(k=oy(v),typeof k!="function")throw Error(Ee(150));return v=k.call(v),y(h,g,v,b)}if(typeof v.then=="function")return x(h,g,Ib(v),b);if(v.$$typeof===Ul)return x(h,g,Mb(h,v),b);Db(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,g!==null&&g.tag===6?(r(h,g.sibling),b=o(g,v),b.return=h,h=b):(r(h,g),b=eE(v,h.mode,b),b.return=h,h=b),i(h)):r(h,g)}return function(h,g,v,b){try{jy=0;var k=x(h,g,v,b);return rm=null,k}catch(w){if(w===xm||w===z1)throw w;var S=ii(29,w,null,h.mode);return S.lanes=b,S.return=h,S}}}var Fd=kL(!0),_L=kL(!1),Yu=!1;function LN(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function qE(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 ic(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function sc(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Tr&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=u1(e),gL(e,null,r),t}return L1(e,n,t,r),u1(e)}function by(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,W$(e,r)}}function nE(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 KE=!1;function wy(){if(KE){var e=tm;if(e!==null)throw e}}function Sy(e,t,r,n){KE=!1;var o=e.updateQueue;Yu=!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?(pr&p)===p:(n&p)===p){p!==0&&p===lm&&(KE=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;p=t;var x=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(x,d,p);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,p=typeof m=="function"?m.call(x,d,p):m,p==null)break e;d=gn({},d,p);break e;case 2:Yu=!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),hc|=i,e.lanes=i,e.memoizedState=d}}function CL(e,t){if(typeof e!="function")throw Error(Ee(191,e));e.call(t)}function AL(e,t){var r=e.callbacks;if(r!==null)for(e.callbacks=null,e=0;ea?a:8;var i=$t.T,s={};$t.T=s,ZN(e,!1,t,r);try{var l=o(),u=$t.S;if(u!==null&&u(s,l),l!==null&&typeof l=="object"&&typeof l.then=="function"){var c=ane(l,n);ky(e,t,c,di(e))}else ky(e,t,n,di(e))}catch(d){ky(e,t,{then:function(){},status:"rejected",reason:d},di())}finally{Or.p=a,i!==null&&s.types!==null&&(i.types=s.types),$t.T=i}}function dne(){}function ZE(e,t,r,n){if(e.tag!==5)throw Error(Ee(476));var o=JL(e).queue;ZL(e,o,t,Id,r===null?dne:function(){return QL(e),r(n)})}function JL(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Id,baseState:Id,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xl,lastRenderedState:Id},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xl,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function QL(e){var t=JL(e);t.next===null&&(t=e.alternate.memoizedState),ky(e,t.next.queue,{},di())}function XN(){return Zo(Fy)}function RL(){return no().memoizedState}function e8(){return no().memoizedState}function pne(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=di();e=ic(r);var n=sc(t,e,r);n!==null&&(Fa(n,t,r),by(n,t,r)),t={cache:DN()},e.payload=t;return}t=t.return}}function fne(e,t,r){var n=di();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},W1(e)?r8(t,r):(r=ON(e,t,r,n),r!==null&&(Fa(r,e,n),n8(r,t,n)))}function t8(e,t,r){var n=di();ky(e,t,r,n)}function ky(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(W1(e))r8(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,pi(s,i))return L1(e,t,o,0),Xr===null&&$1(),!1}catch{}if(r=ON(e,t,o,n),r!==null)return Fa(r,e,n),n8(r,t,n),!0}return!1}function ZN(e,t,r,n){if(n={lane:2,revertLane:aT(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},W1(e)){if(t)throw Error(Ee(479))}else t=ON(e,r,n,2),t!==null&&Fa(t,e,2)}function W1(e){var t=e.alternate;return e===Xt||t!==null&&t===Xt}function r8(e,t){nm=g1=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function n8(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,W$(e,r)}}var Ly={readContext:Zo,use:F1,useCallback:Hn,useContext:Hn,useEffect:Hn,useImperativeHandle:Hn,useLayoutEffect:Hn,useInsertionEffect:Hn,useMemo:Hn,useReducer:Hn,useRef:Hn,useState:Hn,useDebugValue:Hn,useDeferredValue:Hn,useTransition:Hn,useSyncExternalStore:Hn,useId:Hn,useHostTransitionStatus:Hn,useFormState:Hn,useActionState:Hn,useOptimistic:Hn,useMemoCache:Hn,useCacheRefresh:Hn};Ly.useEffectEvent=Hn;var o8={readContext:Zo,use:F1,useCallback:function(e,t){return ba().memoizedState=[e,t===void 0?null:t],e},useContext:Zo,useEffect:U4,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Xb(4194308,4,KL.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Xb(4194308,4,e,t)},useInsertionEffect:function(e,t){Xb(4,2,e,t)},useMemo:function(e,t){var r=ba();t=t===void 0?null:t;var n=e();if(Ud){Ru(!0);try{e()}finally{Ru(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=ba();if(r!==void 0){var o=r(t);if(Ud){Ru(!0);try{r(t)}finally{Ru(!1)}}}else o=t;return n.memoizedState=n.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},n.queue=e,e=e.dispatch=fne.bind(null,Xt,e),[n.memoizedState,e]},useRef:function(e){var t=ba();return e={current:e},t.memoizedState=e},useState:function(e){e=YE(e);var t=e.queue,r=t8.bind(null,Xt,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:GN,useDeferredValue:function(e,t){var r=ba();return YN(r,e,t)},useTransition:function(){var e=YE(!1);return e=ZL.bind(null,Xt,e.queue,!0,!1),ba().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=Xt,o=ba();if(gr){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),Xr===null)throw Error(Ee(349));(pr&127)!==0||PL(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,U4(IL.bind(null,n,a,e),[e]),n.flags|=2048,cm(9,{destroy:void 0},ML.bind(null,n,a,r,t),null),r},useId:function(){var e=ba(),t=Xr.identifierPrefix;if(gr){var r=el,n=Rs;r=(n&~(1<<32-ci(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[Yo]=t,a[Ua]=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(Jo(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&&jl(t)}}return fn(t),dE(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&jl(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ee(166));if(e=oc.current,$f(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=Xo,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[Yo]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||t6(e.nodeValue,r)),e||mc(t,!0)}else e=A1(e).createTextNode(n),e[Yo]=t,t.stateNode=e}return fn(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=$f(t),r!==null){if(e===null){if(!n)throw Error(Ee(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(Ee(557));e[Yo]=t}else zd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;fn(t),e=!1}else r=rE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(ai(t),t):(ai(t),null);if((t.flags&128)!==0)throw Error(Ee(558))}return fn(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=$f(t),n!==null&&n.dehydrated!==null){if(e===null){if(!o)throw Error(Ee(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(Ee(317));o[Yo]=t}else zd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;fn(t),o=!1}else o=rE(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(ai(t),t):(ai(t),null)}return ai(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),jb(t,t.updateQueue),fn(t),null);case 4:return am(),e===null&&iT(t.stateNode.containerInfo),fn(t),null;case 10:return Kl(t.type),fn(t),null;case 19:if(Bo(ro),n=t.memoizedState,n===null)return fn(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)sy(n,!1);else{if(qn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=m1(e),a!==null){for(t.flags|=128,sy(n,!1),e=a.updateQueue,t.updateQueue=e,jb(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)hL(r,e),r=r.sibling;return on(ro,ro.current&1|2),gr&&Bl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&li()>b1&&(t.flags|=128,o=!0,sy(n,!1),t.lanes=4194304)}else{if(!o)if(e=m1(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,jb(t,e),sy(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!gr)return fn(t),null}else 2*li()-n.renderingStartTime>b1&&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=li(),e.sibling=null,r=ro.current,on(ro,o?r&1|2:r&1),gr&&Bl(t,n.treeForkCount),e):(fn(t),null);case 22:case 23:return ai(t),zN(),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&&(fn(t),t.subtreeFlags&6&&(t.flags|=8192)):fn(t),r=t.updateQueue,r!==null&&jb(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&&Bo(jd),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Kl(ho),fn(t),null;case 25:return null;case 30:return null}throw Error(Ee(156,t.tag))}function vne(e,t){switch(IN(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Kl(ho),am(),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(ai(t),t.alternate===null)throw Error(Ee(340));zd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ai(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));zd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(ro),null;case 4:return am(),null;case 10:return Kl(t.type),null;case 22:case 23:return ai(t),zN(),e!==null&&Bo(jd),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Kl(ho),null;case 25:return null;default:return null}}function h8(e,t){switch(IN(t),t.tag){case 3:Kl(ho),am();break;case 26:case 27:case 5:a1(t);break;case 4:am();break;case 31:t.memoizedState!==null&&ai(t);break;case 13:ai(t);break;case 19:Bo(ro);break;case 10:Kl(t.type);break;case 22:case 23:ai(t),zN(),e!==null&&Bo(jd);break;case 24:Kl(ho)}}function Jy(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){Br(t,t.return,s)}}function gc(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){Br(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){Br(t,t.return,c)}}function y8(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{AL(t,r)}catch(n){Br(e,e.return,n)}}}function v8(e,t,r){r.props=Wd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Br(e,t,n)}}function _y(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){Br(e,t,o)}}function tl(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){Br(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){Br(e,t,o)}else r.current=null}function x8(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){Br(e,e.return,o)}}function pE(e,t,r){try{var n=e.stateNode;zne(n,e.type,r,t),n[Ua]=t}catch(o){Br(e,e.return,o)}}function b8(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&vc(e.type)||e.tag===4}function fE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||b8(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&&vc(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 tN(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=Wl));else if(n!==4&&(n===27&&vc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(tN(e,t,r),e=e.sibling;e!==null;)tN(e,t,r),e=e.sibling}function x1(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&&vc(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(x1(e,t,r),e=e.sibling;e!==null;)x1(e,t,r),e=e.sibling}function w8(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);Jo(t,n,r),t[Yo]=e,t[Ua]=r}catch(a){Br(e,e.return,a)}}var Fl=!1,go=!1,mE=!1,e$=typeof WeakSet=="function"?WeakSet:Set,Lo=null;function xne(e,t){if(e=e.containerInfo,lN=O1,e=lL(e),NN(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(uN={focusedElem:e,selectionRange:r},O1=!1,Lo=t;Lo!==null;)if(t=Lo,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Lo=e;else for(;Lo!==null;){switch(t=Lo,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"))),Jo(a,n,r),a[Yo]=e,zo(a),n=a;break e;case"link":var i=S$("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sx&&(i=x,x=y,y=i);var h=C4(s,y),g=C4(s,x);if(h&&g&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==g.node||f.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),f.removeAllRanges(),y>x?(f.addRange(v),f.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),f.addRange(v))}}}}for(d=[],f=s;f=f.parentNode;)f.nodeType===1&&d.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sr?32:r,$t.T=null,r=oN,oN=null;var a=uc,i=Vl;if(ko=0,pm=uc=null,Vl=0,(Tr&6)!==0)throw Error(Ee(331));var s=Tr;if(Tr|=4,M8(a.current),T8(a,a.current,i,r),Tr=s,Qy(0,!1),ui&&typeof ui.onPostCommitFiberRoot=="function")try{ui.onPostCommitFiberRoot(qy,a)}catch{}return!0}finally{Or.p=o,$t.T=n,G8(e,t)}}function o$(e,t,r){t=Bi(r,t),t=QE(e.stateNode,t,2),e=sc(e,t,2),e!==null&&(Vy(e,2),ol(e))}function Br(e,t,r){if(e.tag===3)o$(e,e,r);else for(;t!==null;){if(t.tag===3){o$(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(lc===null||!lc.has(n))){e=Bi(r,e),r=u8(2),n=sc(t,r,2),n!==null&&(c8(r,n,t,e),Vy(n,2),ol(n));break}}t=t.return}}function hE(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new Sne;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)||(rT=!0,o.add(r),e=Ene.bind(null,e,t,r),t.then(e,e))}function Ene(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Xr===e&&(pr&r)===r&&(qn===4||qn===3&&(pr&62914560)===pr&&300>li()-H1?(Tr&2)===0&&fm(e,0):nT|=r,dm===pr&&(dm=0)),ol(e)}function X8(e,t){t===0&&(t=F$()),e=Vd(e,t),e!==null&&(Vy(e,t),ol(e))}function Nne(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),X8(e,r)}function Tne(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(Ee(314))}n!==null&&n.delete(t),X8(e,r)}function One(e,t){return xN(e,t)}var k1=null,Bf=null,iN=!1,_1=!1,yE=!1,nc=0;function ol(e){e!==Bf&&e.next===null&&(Bf===null?k1=Bf=e:Bf=Bf.next=e),_1=!0,iN||(iN=!0,Mne())}function Qy(e,t){if(!yE&&_1){yE=!0;do for(var r=!1,n=k1;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-ci(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,a$(n,a))}else a=pr,a=M1(n,n===Xr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Ky(n,a)||(r=!0,a$(n,a));n=n.next}while(r);yE=!1}}function Pne(){Z8()}function Z8(){_1=iN=!1;var e=0;nc!==0&&Fne()&&(e=nc);for(var t=li(),r=null,n=k1;n!==null;){var o=n.next,a=J8(n,t);a===0?(n.next=null,r===null?k1=o:r.next=o,o===null&&(Bf=r)):(r=n,(e!==0||(a&3)!==0)&&(_1=!0)),n=o}ko!==0&&ko!==5||Qy(e,!1),nc!==0&&(nc=0)}function J8(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&&p$(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function i6(e,t,r){var n=wm;if(n&&typeof t=="string"&&t){var o=zi(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),x$.has(o)||(x$.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),Jo(t,"link",e),zo(t),n.head.appendChild(t)))}}function Xne(e){Ql.D(e),i6("dns-prefetch",e,null)}function Zne(e,t){Ql.C(e,t),i6("preconnect",e,t)}function Jne(e,t,r){Ql.L(e,t,r);var n=wm;if(n&&e&&t){var o='link[rel="preload"][as="'+zi(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+zi(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+zi(r.imageSizes)+'"]')):o+='[href="'+zi(e)+'"]';var a=o;switch(t){case"style":a=mm(e);break;case"script":a=Sm(e)}Hi.has(a)||(e=gn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),Hi.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(Ry(a))||t==="script"&&n.querySelector(ev(a))||(t=n.createElement("link"),Jo(t,"link",e),zo(t),n.head.appendChild(t)))}}function Qne(e,t){Ql.m(e,t);var r=wm;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+zi(n)+'"][href="'+zi(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=Sm(e)}if(!Hi.has(a)&&(e=gn({rel:"modulepreload",href:e},t),Hi.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(ev(a)))return}n=r.createElement("link"),Jo(n,"link",e),zo(n),r.head.appendChild(n)}}}function Rne(e,t,r){Ql.S(e,t,r);var n=wm;if(n&&e){var o=Qf(n).hoistableStyles,a=mm(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(Ry(a)))s.loading=5;else{e=gn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=Hi.get(a))&&sT(e,r);var l=i=n.createElement("link");zo(l),Jo(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,Rb(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function eoe(e,t){Ql.X(e,t);var r=wm;if(r&&e){var n=Qf(r).hoistableScripts,o=Sm(e),a=n.get(o);a||(a=r.querySelector(ev(o)),a||(e=gn({src:e,async:!0},t),(t=Hi.get(o))&&lT(e,t),a=r.createElement("script"),zo(a),Jo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function toe(e,t){Ql.M(e,t);var r=wm;if(r&&e){var n=Qf(r).hoistableScripts,o=Sm(e),a=n.get(o);a||(a=r.querySelector(ev(o)),a||(e=gn({src:e,async:!0,type:"module"},t),(t=Hi.get(o))&&lT(e,t),a=r.createElement("script"),zo(a),Jo(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function b$(e,t,r,n){var o=(o=oc.current)?E1(o):null;if(!o)throw Error(Ee(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=mm(r.href),r=Qf(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=mm(r.href);var a=Qf(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(Ry(e)))&&!a._p&&(i.instance=a,i.state.loading=5),Hi.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},Hi.set(e,r),a||roe(o,e,r,i.state))),t&&n===null)throw Error(Ee(528,""));return i}if(t&&n!==null)throw Error(Ee(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Sm(r),r=Qf(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(Ee(444,e))}}function mm(e){return'href="'+zi(e)+'"'}function Ry(e){return'link[rel="stylesheet"]['+e+"]"}function s6(e){return gn({},e,{"data-precedence":e.precedence,precedence:null})}function roe(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}),Jo(t,"link",r),zo(t),e.head.appendChild(t))}function Sm(e){return'[src="'+zi(e)+'"]'}function ev(e){return"script[async]"+e}function w$(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+zi(r.href)+'"]');if(n)return t.instance=n,zo(n),n;var o=gn({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),zo(n),Jo(n,"style",o),Rb(n,r.precedence,e),t.instance=n;case"stylesheet":o=mm(r.href);var a=e.querySelector(Ry(o));if(a)return t.state.loading|=4,t.instance=a,zo(a),a;n=s6(r),(o=Hi.get(o))&&sT(n,o),a=(e.ownerDocument||e).createElement("link"),zo(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Jo(a,"link",n),t.state.loading|=4,Rb(a,r.precedence,e),t.instance=a;case"script":return a=Sm(r.src),(o=e.querySelector(ev(a)))?(t.instance=o,zo(o),o):(n=r,(o=Hi.get(a))&&(n=gn({},r),lT(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),zo(o),Jo(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(Ee(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,Rb(n,r.precedence,e));return t.instance}function Rb(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 noe(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 l6(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function ooe(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=mm(n.href),a=t.querySelector(Ry(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=N1.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,zo(a);return}a=t.ownerDocument||t,n=s6(n),(o=Hi.get(o))&&sT(n,o),a=a.createElement("link"),zo(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Jo(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=N1.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var wE=0;function aoe(e,t){return e.stylesheets&&e.count===0&&t1(e,e.stylesheets),0wE?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function N1(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)t1(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var T1=null;function t1(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,T1=new Map,t.forEach(ioe,e),T1=null,N1.call(e))}function ioe(e,t){if(!(t.state.loading&4)){var r=T1.get(e);if(r)var n=r.get(null);else{r=new Map,T1.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function y6(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(y6)}catch(e){console.error(e)}}y6(),v6.exports=h6()});var Hz=$o(Wz=>{"use strict";var qm=Q();function Tae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Oae=typeof Object.is=="function"?Object.is:Tae,Pae=qm.useState,Mae=qm.useEffect,Iae=qm.useLayoutEffect,Dae=qm.useDebugValue;function jae(e,t){var r=t(),n=Pae({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return Iae(function(){o.value=r,o.getSnapshot=t,cO(o)&&a({inst:o})},[e,r,t]),Mae(function(){return cO(o)&&a({inst:o}),e(function(){cO(o)&&a({inst:o})})},[e]),Dae(r),r}function cO(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Oae(e,r)}catch{return!0}}function $ae(e,t){return t()}var Lae=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?$ae:jae;Wz.useSyncExternalStore=qm.useSyncExternalStore!==void 0?qm.useSyncExternalStore:Lae});var Kz=$o((mPe,qz)=>{"use strict";qz.exports=Hz()});var Gz=$o(Vz=>{"use strict";var Kw=Q(),zae=Kz();function Bae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Fae=typeof Object.is=="function"?Object.is:Bae,Uae=zae.useSyncExternalStore,Wae=Kw.useRef,Hae=Kw.useEffect,qae=Kw.useMemo,Kae=Kw.useDebugValue;Vz.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Wae(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=qae(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,Fae(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=Uae(e,a[0],a[1]);return Hae(function(){i.hasValue=!0,i.value=s},[s]),Kae(s),s}});var Xz=$o((hPe,Yz)=>{"use strict";Yz.exports=Gz()});var $7=$o(j7=>{"use strict";var Av=Q();function Xse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Zse=typeof Object.is=="function"?Object.is:Xse,Jse=Av.useSyncExternalStore,Qse=Av.useRef,Rse=Av.useEffect,ele=Av.useMemo,tle=Av.useDebugValue;j7.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Qse(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=ele(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,Zse(c,f))return m;var y=n(f);return o!==void 0&&o(m,y)?(c=f,m):(c=f,d=y)}var u=!1,c,d,p=r===void 0?null:r;return[function(){return l(t())},p===null?void 0:function(){return l(p())}]},[t,r,n,o]);var s=Jse(e,a[0],a[1]);return Rse(function(){i.hasValue=!0,i.value=s},[s]),tle(s),s}});var z7=$o((g5e,L7)=>{"use strict";L7.exports=$7()});var aP=$o((uF,tk)=>{(function(e){"use strict";var t=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},n=!0,o="[DecimalError] ",a=o+"Invalid argument: ",i=o+"Exponent out of range: ",s=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,c,d=1e7,p=7,f=9007199254740991,m=s(f/p),y={};y.absoluteValue=y.abs=function(){var N=new this.constructor(this);return N.s&&(N.s=1),N},y.comparedTo=y.cmp=function(N){var T,D,O,j,M=this;if(N=new M.constructor(N),M.s!==N.s)return M.s||-N.s;if(M.e!==N.e)return M.e>N.e^M.s<0?1:-1;for(O=M.d.length,j=N.d.length,T=0,D=ON.d[T]^M.s<0?1:-1;return O===j?0:O>j^M.s<0?1:-1},y.decimalPlaces=y.dp=function(){var N=this,T=N.d.length-1,D=(T-N.e)*p;if(T=N.d[T],T)for(;T%10==0;T/=10)D--;return D<0?0:D},y.dividedBy=y.div=function(N){return v(this,new this.constructor(N))},y.dividedToIntegerBy=y.idiv=function(N){var T=this,D=T.constructor;return C(v(T,new D(N),0,1),D.precision)},y.equals=y.eq=function(N){return!this.cmp(N)},y.exponent=function(){return k(this)},y.greaterThan=y.gt=function(N){return this.cmp(N)>0},y.greaterThanOrEqualTo=y.gte=function(N){return this.cmp(N)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return this.s===0},y.lessThan=y.lt=function(N){return this.cmp(N)<0},y.lessThanOrEqualTo=y.lte=function(N){return this.cmp(N)<1},y.logarithm=y.log=function(N){var T,D=this,O=D.constructor,j=O.precision,M=j+5;if(N===void 0)N=new O(10);else if(N=new O(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(D.s<1)throw Error(o+(D.s?"NaN":"-Infinity"));return D.eq(c)?new O(0):(n=!1,T=v(_(D,M),_(N,M),M),n=!0,C(T,j))},y.minus=y.sub=function(N){var T=this;return N=new T.constructor(N),T.s==N.s?E(T,N):x(T,(N.s=-N.s,N))},y.modulo=y.mod=function(N){var T,D=this,O=D.constructor,j=O.precision;if(N=new O(N),!N.s)throw Error(o+"NaN");return D.s?(n=!1,T=v(D,N,0,1).times(N),n=!0,D.minus(T)):C(new O(D),j)},y.naturalExponential=y.exp=function(){return b(this)},y.naturalLogarithm=y.ln=function(){return _(this)},y.negated=y.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},y.plus=y.add=function(N){var T=this;return N=new T.constructor(N),T.s==N.s?x(T,N):E(T,(N.s=-N.s,N))},y.precision=y.sd=function(N){var T,D,O,j=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(T=k(j)+1,O=j.d.length-1,D=O*p+1,O=j.d[O],O){for(;O%10==0;O/=10)D--;for(O=j.d[0];O>=10;O/=10)D++}return N&&T>D?T:D},y.squareRoot=y.sqrt=function(){var N,T,D,O,j,M,H,G=this,z=G.constructor;if(G.s<1){if(!G.s)return new z(0);throw Error(o+"NaN")}for(N=k(G),n=!1,j=Math.sqrt(+G),j==0||j==1/0?(T=g(G.d),(T.length+N)%2==0&&(T+="0"),j=Math.sqrt(T),N=s((N+1)/2)-(N<0||N%2),j==1/0?T="5e"+N:(T=j.toExponential(),T=T.slice(0,T.indexOf("e")+1)+N),O=new z(T)):O=new z(j.toString()),D=z.precision,j=H=D+3;;)if(M=O,O=M.plus(v(G,M,H+2)).times(.5),g(M.d).slice(0,H)===(T=g(O.d)).slice(0,H)){if(T=T.slice(H-3,H+1),j==H&&T=="4999"){if(C(M,D+1,0),M.times(M).eq(G)){O=M;break}}else if(T!="9999")break;H+=4}return n=!0,C(O,D)},y.times=y.mul=function(N){var T,D,O,j,M,H,G,z,V,K=this,ie=K.constructor,Ie=K.d,ge=(N=new ie(N)).d;if(!K.s||!N.s)return new ie(0);for(N.s*=K.s,D=K.e+N.e,z=Ie.length,V=ge.length,z=0;){for(T=0,j=z+O;j>O;)G=M[j]+ge[O]*Ie[j-O-1]+T,M[j--]=G%d|0,T=G/d|0;M[j]=(M[j]+T)%d|0}for(;!M[--H];)M.pop();return T?++D:M.shift(),N.d=M,N.e=D,n?C(N,ie.precision):N},y.toDecimalPlaces=y.todp=function(N,T){var D=this,O=D.constructor;return D=new O(D),N===void 0?D:(h(N,0,t),T===void 0?T=O.rounding:h(T,0,8),C(D,N+k(D)+1,T))},y.toExponential=function(N,T){var D,O=this,j=O.constructor;return N===void 0?D=I(O,!0):(h(N,0,t),T===void 0?T=j.rounding:h(T,0,8),O=C(new j(O),N+1,T),D=I(O,!0,N+1)),D},y.toFixed=function(N,T){var D,O,j=this,M=j.constructor;return N===void 0?I(j):(h(N,0,t),T===void 0?T=M.rounding:h(T,0,8),O=C(new M(j),N+k(j)+1,T),D=I(O.abs(),!1,N+k(O)+1),j.isneg()&&!j.isZero()?"-"+D:D)},y.toInteger=y.toint=function(){var N=this,T=N.constructor;return C(new T(N),k(N)+1,T.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(N){var T,D,O,j,M,H,G=this,z=G.constructor,V=12,K=+(N=new z(N));if(!N.s)return new z(c);if(G=new z(G),!G.s){if(N.s<1)throw Error(o+"Infinity");return G}if(G.eq(c))return G;if(O=z.precision,N.eq(c))return C(G,O);if(T=N.e,D=N.d.length-1,H=T>=D,M=G.s,H){if((D=K<0?-K:K)<=f){for(j=new z(c),T=Math.ceil(O/p+4),n=!1;D%2&&(j=j.times(G),J(j.d,T)),D=s(D/2),D!==0;)G=G.times(G),J(G.d,T);return n=!0,N.s<0?new z(c).div(j):C(j,O)}}else if(M<0)throw Error(o+"NaN");return M=M<0&&N.d[Math.max(T,D)]&1?-1:1,G.s=1,n=!1,j=N.times(_(G,O+V)),n=!0,j=b(j),j.s=M,j},y.toPrecision=function(N,T){var D,O,j=this,M=j.constructor;return N===void 0?(D=k(j),O=I(j,D<=M.toExpNeg||D>=M.toExpPos)):(h(N,1,t),T===void 0?T=M.rounding:h(T,0,8),j=C(new M(j),N,T),D=k(j),O=I(j,N<=D||D<=M.toExpNeg,N)),O},y.toSignificantDigits=y.tosd=function(N,T){var D=this,O=D.constructor;return N===void 0?(N=O.precision,T=O.rounding):(h(N,1,t),T===void 0?T=O.rounding:h(T,0,8)),C(new O(D),N,T)},y.toString=y.valueOf=y.val=y.toJSON=function(){var N=this,T=k(N),D=N.constructor;return I(N,T<=D.toExpNeg||T>=D.toExpPos)};function x(N,T){var D,O,j,M,H,G,z,V,K=N.constructor,ie=K.precision;if(!N.s||!T.s)return T.s||(T=new K(N)),n?C(T,ie):T;if(z=N.d,V=T.d,H=N.e,j=T.e,z=z.slice(),M=H-j,M){for(M<0?(O=z,M=-M,G=V.length):(O=V,j=H,G=z.length),H=Math.ceil(ie/p),G=H>G?H+1:G+1,M>G&&(M=G,O.length=1),O.reverse();M--;)O.push(0);O.reverse()}for(G=z.length,M=V.length,G-M<0&&(M=G,O=V,V=z,z=O),D=0;M;)D=(z[--M]=z[M]+V[M]+D)/d|0,z[M]%=d;for(D&&(z.unshift(D),++j),G=z.length;z[--G]==0;)z.pop();return T.d=z,T.e=j,n?C(T,ie):T}function h(N,T,D){if(N!==~~N||ND)throw Error(a+N)}function g(N){var T,D,O,j=N.length-1,M="",H=N[0];if(j>0){for(M+=H,T=1;TH?1:-1;else for(G=z=0;Gj[G]?1:-1;break}return z}function D(O,j,M){for(var H=0;M--;)O[M]-=H,H=O[M]1;)O.shift()}return function(O,j,M,H){var G,z,V,K,ie,Ie,ge,de,R,ee,L,te,F,P,Y,B,oe,ne,he=O.constructor,tt=O.s==j.s?1:-1,it=O.d,ve=j.d;if(!O.s)return new he(O);if(!j.s)throw Error(o+"Division by zero");for(z=O.e-j.e,oe=ve.length,Y=it.length,ge=new he(tt),de=ge.d=[],V=0;ve[V]==(it[V]||0);)++V;if(ve[V]>(it[V]||0)&&--z,M==null?te=M=he.precision:H?te=M+(k(O)-k(j))+1:te=M,te<0)return new he(0);if(te=te/p+2|0,V=0,oe==1)for(K=0,ve=ve[0],te++;(V1&&(ve=N(ve,K),it=N(it,K),oe=ve.length,Y=it.length),P=oe,R=it.slice(0,oe),ee=R.length;ee=d/2&&++B;do K=0,G=T(ve,R,oe,ee),G<0?(L=R[0],oe!=ee&&(L=L*d+(R[1]||0)),K=L/B|0,K>1?(K>=d&&(K=d-1),ie=N(ve,K),Ie=ie.length,ee=R.length,G=T(ie,R,Ie,ee),G==1&&(K--,D(ie,oe16)throw Error(i+k(N));if(!N.s)return new K(c);for(T==null?(n=!1,G=ie):G=T,H=new K(.03125);N.abs().gte(.1);)N=N.times(H),V+=5;for(O=Math.log(l(2,V))/Math.LN10*2+5|0,G+=O,D=j=M=new K(c),K.precision=G;;){if(j=C(j.times(N),G),D=D.times(++z),H=M.plus(v(j,D,G)),g(H.d).slice(0,G)===g(M.d).slice(0,G)){for(;V--;)M=C(M.times(M),G);return K.precision=ie,T==null?(n=!0,C(M,ie)):M}M=H}}function k(N){for(var T=N.e*p,D=N.d[0];D>=10;D/=10)T++;return T}function S(N,T,D){if(T>N.LN10.sd())throw n=!0,D&&(N.precision=D),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),T)}function w(N){for(var T="";N--;)T+="0";return T}function _(N,T){var D,O,j,M,H,G,z,V,K,ie=1,Ie=10,ge=N,de=ge.d,R=ge.constructor,ee=R.precision;if(ge.s<1)throw Error(o+(ge.s?"NaN":"-Infinity"));if(ge.eq(c))return new R(0);if(T==null?(n=!1,V=ee):V=T,ge.eq(10))return T==null&&(n=!0),S(R,V);if(V+=Ie,R.precision=V,D=g(de),O=D.charAt(0),M=k(ge),Math.abs(M)<15e14){for(;O<7&&O!=1||O==1&&D.charAt(1)>3;)ge=ge.times(N),D=g(ge.d),O=D.charAt(0),ie++;M=k(ge),O>1?(ge=new R("0."+D),M++):ge=new R(O+"."+D.slice(1))}else return z=S(R,V+2,ee).times(M+""),ge=_(new R(O+"."+D.slice(1)),V-Ie).plus(z),R.precision=ee,T==null?(n=!0,C(ge,ee)):ge;for(G=H=ge=v(ge.minus(c),ge.plus(c),V),K=C(ge.times(ge),V),j=3;;){if(H=C(H.times(K),V),z=G.plus(v(H,new R(j),V)),g(z.d).slice(0,V)===g(G.d).slice(0,V))return G=G.times(2),M!==0&&(G=G.plus(S(R,V+2,ee).times(M+""))),G=v(G,new R(ie),V),R.precision=ee,T==null?(n=!0,C(G,ee)):G;G=z,j+=2}}function A(N,T){var D,O,j;for((D=T.indexOf("."))>-1&&(T=T.replace(".","")),(O=T.search(/e/i))>0?(D<0&&(D=O),D+=+T.slice(O+1),T=T.substring(0,O)):D<0&&(D=T.length),O=0;T.charCodeAt(O)===48;)++O;for(j=T.length;T.charCodeAt(j-1)===48;)--j;if(T=T.slice(O,j),T){if(j-=O,D=D-O-1,N.e=s(D/p),N.d=[],O=(D+1)%p,D<0&&(O+=p),Om||N.e<-m))throw Error(i+D)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,T,D){var O,j,M,H,G,z,V,K,ie=N.d;for(H=1,M=ie[0];M>=10;M/=10)H++;if(O=T-H,O<0)O+=p,j=T,V=ie[K=0];else{if(K=Math.ceil((O+1)/p),M=ie.length,K>=M)return N;for(V=M=ie[K],H=1;M>=10;M/=10)H++;O%=p,j=O-p+H}if(D!==void 0&&(M=l(10,H-j-1),G=V/M%10|0,z=T<0||ie[K+1]!==void 0||V%M,z=D<4?(G||z)&&(D==0||D==(N.s<0?3:2)):G>5||G==5&&(D==4||z||D==6&&(O>0?j>0?V/l(10,H-j):0:ie[K-1])%10&1||D==(N.s<0?8:7))),T<1||!ie[0])return z?(M=k(N),ie.length=1,T=T-M-1,ie[0]=l(10,(p-T%p)%p),N.e=s(-T/p)||0):(ie.length=1,ie[0]=N.e=N.s=0),N;if(O==0?(ie.length=K,M=1,K--):(ie.length=K+1,M=l(10,p-O),ie[K]=j>0?(V/l(10,H-j)%l(10,j)|0)*M:0),z)for(;;)if(K==0){(ie[0]+=M)==d&&(ie[0]=1,++N.e);break}else{if(ie[K]+=M,ie[K]!=d)break;ie[K--]=0,M=1}for(O=ie.length;ie[--O]===0;)ie.pop();if(n&&(N.e>m||N.e<-m))throw Error(i+k(N));return N}function E(N,T){var D,O,j,M,H,G,z,V,K,ie,Ie=N.constructor,ge=Ie.precision;if(!N.s||!T.s)return T.s?T.s=-T.s:T=new Ie(N),n?C(T,ge):T;if(z=N.d,ie=T.d,O=T.e,V=N.e,z=z.slice(),H=V-O,H){for(K=H<0,K?(D=z,H=-H,G=ie.length):(D=ie,O=V,G=z.length),j=Math.max(Math.ceil(ge/p),G)+2,H>j&&(H=j,D.length=1),D.reverse(),j=H;j--;)D.push(0);D.reverse()}else{for(j=z.length,G=ie.length,K=j0;--j)z[G++]=0;for(j=ie.length;j>H;){if(z[--j]0?M=M.charAt(0)+"."+M.slice(1)+w(O):H>1&&(M=M.charAt(0)+"."+M.slice(1)),M=M+(j<0?"e":"e+")+j):j<0?(M="0."+w(-j-1)+M,D&&(O=D-H)>0&&(M+=w(O))):j>=H?(M+=w(j+1-H),D&&(O=D-j-1)>0&&(M=M+"."+w(O))):((O=j+1)0&&(j+1===H&&(M+="."),M+=w(O))),N.s<0?"-"+M:M}function J(N,T){if(N.length>T)return N.length=T,!0}function $(N){var T,D,O;function j(M){var H=this;if(!(H instanceof j))return new j(M);if(H.constructor=j,M instanceof j){H.s=M.s,H.e=M.e,H.d=(M=M.d)?M.slice():M;return}if(typeof M=="number"){if(M*0!==0)throw Error(a+M);if(M>0)H.s=1;else if(M<0)M=-M,H.s=-1;else{H.s=0,H.e=0,H.d=[0];return}if(M===~~M&&M<1e7){H.e=0,H.d=[M];return}return A(H,M.toString())}else if(typeof M!="string")throw Error(a+M);if(M.charCodeAt(0)===45?(M=M.slice(1),H.s=-1):H.s=1,u.test(M))A(H,M);else throw Error(a+M)}if(j.prototype=y,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=U,N===void 0&&(N={}),N)for(O=["precision","rounding","toExpNeg","toExpPos","LN10"],T=0;T=j[T+1]&&O<=j[T+2])this[D]=O;else throw Error(a+D+": "+O);if((O=N[D="LN10"])!==void 0)if(O==Math.LN10)this[D]=new this(O);else throw Error(a+D+": "+O);return this}r=$(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof tk<"u"&&tk.exports?tk.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(uF)});var oH=$o((nBe,qM)=>{"use strict";var oge=Object.prototype.hasOwnProperty,Aa="~";function yx(){}Object.create&&(yx.prototype=Object.create(null),new yx().__proto__||(Aa=!1));function age(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function nH(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new age(r,n||e,o),i=Aa?Aa+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function C_(e,t){--e._eventsCount===0?e._events=new yx:delete e._events[t]}function la(){this._events=new yx,this._eventsCount=0}la.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)oge.call(r,n)&&t.push(Aa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};la.prototype.listeners=function(t){var r=Aa?Aa+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,a=n.length,i=new Array(a);o{"use strict";var e5=Symbol.for("react.transitional.element"),t5=Symbol.for("react.portal"),B_=Symbol.for("react.fragment"),F_=Symbol.for("react.strict_mode"),U_=Symbol.for("react.profiler"),W_=Symbol.for("react.consumer"),H_=Symbol.for("react.context"),q_=Symbol.for("react.forward_ref"),K_=Symbol.for("react.suspense"),V_=Symbol.for("react.suspense_list"),G_=Symbol.for("react.memo"),Y_=Symbol.for("react.lazy"),qhe=Symbol.for("react.view_transition"),Khe=Symbol.for("react.client.reference");function os(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case e5:switch(e=e.type,e){case B_:case U_:case F_:case K_:case V_:case qhe:return e;default:switch(e=e&&e.$$typeof,e){case H_:case q_:case Y_:case G_:return e;case W_:return e;default:return t}}case t5:return t}}}Qr.ContextConsumer=W_;Qr.ContextProvider=H_;Qr.Element=e5;Qr.ForwardRef=q_;Qr.Fragment=B_;Qr.Lazy=Y_;Qr.Memo=G_;Qr.Portal=t5;Qr.Profiler=U_;Qr.StrictMode=F_;Qr.Suspense=K_;Qr.SuspenseList=V_;Qr.isContextConsumer=function(e){return os(e)===W_};Qr.isContextProvider=function(e){return os(e)===H_};Qr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===e5};Qr.isForwardRef=function(e){return os(e)===q_};Qr.isFragment=function(e){return os(e)===B_};Qr.isLazy=function(e){return os(e)===Y_};Qr.isMemo=function(e){return os(e)===G_};Qr.isPortal=function(e){return os(e)===t5};Qr.isProfiler=function(e){return os(e)===U_};Qr.isStrictMode=function(e){return os(e)===F_};Qr.isSuspense=function(e){return os(e)===K_};Qr.isSuspenseList=function(e){return os(e)===V_};Qr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===B_||e===U_||e===F_||e===K_||e===V_||typeof e=="object"&&e!==null&&(e.$$typeof===Y_||e.$$typeof===G_||e.$$typeof===H_||e.$$typeof===W_||e.$$typeof===q_||e.$$typeof===Khe||e.getModuleId!==void 0)};Qr.typeOf=os});var hq=$o((a9e,gq)=>{"use strict";gq.exports=mq()});var tte=Z(Q()),rte=Z(x6());var Nt=Z(Q());var ft=Z(Q());var kr=Z(Q()),Yd={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"}},tv={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"}},km={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 moe=({id:e="mascot"})=>kr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},kr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},kr.default.createElement("g",{fillRule:"nonzero"},kr.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"})),kr.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"}),kr.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"}),kr.default.createElement("g",{transform:"translate(75.105, 196.182)"},kr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),kr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),kr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),kr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),kr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),kr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),kr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),kr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),kr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},kr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},kr.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"})),kr.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"})),kr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},kr.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"})),kr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},kr.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"}),kr.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 In({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return kr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&kr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Yd[c];return d?kr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),kr.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"},kr.default.createElement("title",null,"ActiveAgent"),kr.default.createElement(moe,null)),n&&r.length>0&&kr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=tv[c];return d?kr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var Ha=Z(Q());var Ns=Z(Q()),b6=(0,Ns.createContext)();function w6({children:e}){let[t,r]=(0,Ns.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Ns.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Ns.useEffect)(()=>{let o=window.matchMedia("(prefers-color-scheme: dark)"),a=i=>{localStorage.getItem("dashboard-theme")||r(i.matches)};return o.addEventListener("change",a),()=>o.removeEventListener("change",a)},[]);let n=()=>r(!t);return Ns.default.createElement(b6.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function ut(){let e=(0,Ns.useContext)(b6);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function _m({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=Ha.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 Ha.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"}},Ha.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},Ha.default.createElement("div",{style:{minWidth:0}},Ha.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&&Ha.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&Ha.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&Ha.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>Ha.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},Ha.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),Ha.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&Ha.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&Ha.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function fT(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var al="~ estimated from tokens \xD7 model rates",X1=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),_6=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),Ts=e=>X1(e)?`${_6(Number(e)*100)}%`:"\u2014",Kn=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${_6(n*100/r)}%`},aa=e=>Ts(e),Z1=e=>`pass \u2265 ${Ts(e)}`,Pr=(e,{estimated:t=!1}={})=>{if(!X1(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},S6=e=>Math.round(Number(e)||0).toLocaleString("en-US"),k6=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},goe=["pattern","default"],Cm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!X1(r.input)||!X1(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${S6(e)} in \xD7 ${k6(r.input)} + ${S6(t)} out \xD7 ${k6(r.output)} \xB7 ${n} rate${goe.includes(n)?" (fallback rate)":""}`};var hoe=[{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 mT({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,ft.useState)(""),[f,m]=(0,ft.useState)(""),[y,x]=(0,ft.useState)(""),h=e.filter(_=>{let A=!d||_.name.toLowerCase().includes(d.toLowerCase())||_.description?.toLowerCase().includes(d.toLowerCase()),C=!f||_.provider===f,E=!y||_.status===y;return A&&C&&E}),g=_=>{let A=new Date(_),E=new Date-A,I=Math.floor(E/(1e3*60*60*24));return I===0?"Today":I===1?"Yesterday":I<7?`${I} days ago`:A.toLocaleDateString()},v=_=>{switch(_){case"active":return"bg-green-100 text-green-700";case"draft":return"bg-yellow-100 text-yellow-700";case"archived":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},b=_=>_==null?"\u2014":_<1e3?`${Math.round(_)}ms`:`${(_/1e3).toFixed(1)}s`,k=_=>_==null?"\u2014":_>=1e6?`${(_/1e6).toFixed(1)}M`:_>=1e3?`${(_/1e3).toFixed(1)}k`:`${_}`,S=_=>_==null?"\u2014":_>0&&_<.01?"<$0.01":`$${_.toFixed(2)}`,w=_=>{if(!_)return"\u2014";let A=Math.floor((new Date-new Date(_))/(1e3*60*60*24));return A<=0?"Today":A<30?`${A}d ago`:new Date(_).toLocaleDateString()};return ft.default.createElement("div",{className:"space-y-6"},ft.default.createElement("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},ft.default.createElement("div",{className:"flex-1 flex items-center space-x-4"},ft.default.createElement("div",{className:"relative flex-1 max-w-md"},ft.default.createElement("input",{type:"text",placeholder:"Search agents...",value:d,onChange:_=>p(_.target.value),className:"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),ft.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"},ft.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"}))),ft.default.createElement("select",{value:f,onChange:_=>m(_.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},ft.default.createElement("option",{value:""},"All Providers"),t.providers?.map(_=>ft.default.createElement("option",{key:_,value:_},_.charAt(0).toUpperCase()+_.slice(1)))),ft.default.createElement("select",{value:y,onChange:_=>x(_.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},ft.default.createElement("option",{value:""},"All Status"),ft.default.createElement("option",{value:"active"},"Active"),ft.default.createElement("option",{value:"draft"},"Draft"),ft.default.createElement("option",{value:"archived"},"Archived")),ft.default.createElement("select",{value:l,onChange:_=>u?.(_.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500",title:"Rank agents by their scorecard"},hoe.map(_=>ft.default.createElement("option",{key:_.value,value:_.value},_.label)))),ft.default.createElement("div",{className:"flex items-center space-x-3"},ft.default.createElement("button",{onClick:s,disabled:c,className:"p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors"},ft.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"}))),ft.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"},ft.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"})),ft.default.createElement("span",null,"Browse Templates")),ft.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"},ft.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),ft.default.createElement("span",null,"New Agent")))),h.length>0?ft.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(_=>{let A=_.stats||{},C=A.run_sources||[],E=C.length?`Counted from ${C.map(I=>I==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return ft.default.createElement(_m,{key:_.id,name:_.name,subtitle:_.description||"No description",badge:ft.default.createElement("span",{className:`px-2 py-0.5 text-xs font-medium rounded-full ${v(_.status)}`},_.status),onClick:()=>r(_),stats:[{label:`Runs ${A.window_days||30}d`,value:A.runs??0,title:E},{label:"Success",value:A.success_rate!=null?`${Math.round(A.success_rate)}%`:"\u2014",tone:fT(A.success_rate!=null?A.success_rate/100:null)},{label:"Avg time",value:b(A.avg_duration_ms)},{label:"Eval",title:A.eval_samples_evaluated?`${Kn(A.eval_samples_passed,A.eval_samples_evaluated)} passed over ${A.eval_runs??"the"} current evaluation${A.eval_runs===1?"":"s"}${A.eval_not_counted?` \xB7 ${A.eval_not_counted} stale or archived not counted`:""}`:A.eval_not_counted?`${A.eval_not_counted} evaluation${A.eval_not_counted===1?"":"s"} stale or archived, none counted`:"No evaluation counted yet",value:Ts(A.eval_score),tone:fT(A.eval_score)},{label:"Tokens",value:k(A.tokens)},{label:"Cost",value:S(A.cost),title:"Estimated from token counts at each model's published rates",tone:A.cost==null?"muted":void 0}],footer:ft.default.createElement(ft.default.Fragment,null,ft.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},ft.default.createElement("span",{style:{padding:"2px 6px",borderRadius:"4px",background:"rgba(128,128,128,0.15)",whiteSpace:"nowrap",flexShrink:0}},_.provider),ft.default.createElement("span",{title:_.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},_.model)),ft.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${g(_.updatedAt||_.updated_at)}`},A.last_run_at?`Last run ${w(A.last_run_at)}`:`Updated ${g(_.updatedAt||_.updated_at)}`)),actions:ft.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},ft.default.createElement("button",{onClick:I=>{I.stopPropagation(),a(_.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),ft.default.createElement("button",{onClick:I=>{I.stopPropagation(),i(_.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):ft.default.createElement("div",{className:"text-center py-16"},ft.default.createElement("div",{className:"inline-block mb-4"},ft.default.createElement(In,{size:100})),ft.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},e.length===0?"No agents yet":"No matching agents"),ft.default.createElement("p",{className:"text-gray-500 mb-6"},e.length===0?"Create your first AI agent to get started":"Try adjusting your search or filters"),e.length===0&&ft.default.createElement("div",{className:"flex items-center justify-center space-x-4"},ft.default.createElement("button",{onClick:o,className:"inline-flex items-center space-x-2 px-6 py-3 border-2 border-red-500 text-red-600 rounded-lg hover:bg-red-50 transition-colors"},ft.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"})),ft.default.createElement("span",null,"Browse Templates")),ft.default.createElement("span",{className:"text-gray-400"},"or"),ft.default.createElement("button",{onClick:n,className:"inline-flex items-center space-x-2 px-6 py-3 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},ft.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),ft.default.createElement("span",null,"Create From Scratch")))))}var xe=Z(Q());var Fo={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 Pt={mono:"'SF Mono', 'Fira Code', 'Consolas', monospace",sizes:{xs:"10px",sm:"11px",base:"13px",md:"14px",lg:"16px",xl:"20px",xxl:"24px"},weights:{normal:400,medium:500,semibold:600,bold:700}};function C6(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 Am={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"]},J1=Object.keys(Am),yoe=300*1e3,A6=C6(voe,{ttlMs:yoe,keep:e=>e!==null});async function E6(e){return await A6(e)??(Am[e]||[])}function gT(){A6.clear()}async function voe(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 Q1=Z(Q());function xc(e){let[t,r]=(0,Q1.useState)(Am),n=e.join(",");return(0,Q1.useEffect)(()=>{let o=!1;return e.forEach(a=>{E6(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var bc=Z(Q());function Rl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,bc.useId)();return bc.default.createElement(bc.default.Fragment,null,bc.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}),bc.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>bc.default.createElement("option",{key:u,value:u}))))}var xoe=["agent_defined","dashboard","mcp"],hT={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},boe={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},ew=[{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`},rv=(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`},woe="sandbox:",Xd=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(woe))),nv=e=>Xd(e)&&!e.known,tw=e=>!!e&&!e.known&&!Xd(e);function N6(e){return nv(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":Xd(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var Em=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 R1(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=Em(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 T6=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function O6(e,t,{query:r="",filter:n=null}={}){let o=T6(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 P6(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(Soe(e,t).map(o=>({...o,on:!0})))}function M6(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=T6(n),s=P6(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return xoe.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:hT[u],meta:`${boe[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 I6(e,t,r,{range:n="7d"}={}){let o=P6(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 D6(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function vT(e,t=[]){let r=D6(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 xT(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 j6(e=[],t,r=[]){let n=(e||[]).map(String),o=vT(t,n);if(!o)return n;let a=new Set(xT(n,D6(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 $6(e,t,r){let n=R1(e,t.mcpServers),o=R1(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 L6(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=Em(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=Em(i);s&&!a.has(s)&&o.push(i)}),o}function z6(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 bT(e){return(e?.tools||[]).filter(t=>t.editable&&t.implemented!==!1)}var koe=["terminal","filesystem","edit","database"],rw=(e=[])=>e.some(t=>koe.includes(t)),_oe={terminal:["run_command"],filesystem:["write_file"],edit:["edit_file"],slack:["slack_post_message"]},Nm=(e=[])=>[...new Set(e.flatMap(t=>_oe[t]||[]))];function B6(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 wT(e,t=[]){if(!e)return[...t];let r=new Set(bT(e).map(n=>n.key));return t.filter(n=>r.has(n))}var ST=(e=[],t)=>e.some(r=>Em(r)===t);function F6(e=[],t){return ST(e,t.key)?e.filter(r=>Em(r)!==t.key):[...e,{key:t.key,name:t.name}]}function U6(e){let t=e.workspace_agents||0;return t?`${t} agent${t===1?"":"s"}`:null}var nw=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],ov={...tv,agents:{emoji:"\u{1F91D}",label:"Delegate to agents"},ask:{emoji:"\u{1F64B}",label:"Ask the user"}},Coe=["name","slug","description","provider","model"];function kT({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,xe.useState)(0),[s,l]=(0,xe.useState)({name:"",description:"",provider:"openai",model:Am.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=xc([s.provider]),c=(0,xe.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,xe.useEffect)(()=>{d?.length&&l(w=>d.includes(w.model)?w:{...w,model:d[0]})},[d]);let[p,f]=(0,xe.useState)(null),[m,y]=(0,xe.useState)(null);(0,xe.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:wT(w,_.tools)}))}).catch(w=>y(w.message))},[]);let[x,h]=(0,xe.useState)(null),g=(w,_)=>{l(A=>({...A,[w]:_}))},v=(w,_)=>{l(A=>{let C=A[w]||[],E=C.includes(_)?C.filter(I=>I!==_):[...C,_];return{...A,[w]:E}})},b=w=>{if(g("preset_type",w),km[w]){let _=km[w];g("instruction_sets",[..._.instructions]),g("tools",wT(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:Nm(s.tools)});w&&(h(w),Object.keys(w.fieldErrors||{}).some(_=>Coe.includes(_))&&i(0))};return xe.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&xe.default.createElement("div",{className:"mb-4 p-4 rounded-lg border border-red-200 bg-red-50 text-sm text-gray-700"},"Prepared by your workspace assistant. Review the instructions, model, and tools before creating this agent."),xe.default.createElement("div",{className:"mb-8"},xe.default.createElement("div",{className:"flex items-center justify-between"},nw.map((w,_)=>xe.default.createElement("div",{key:w.id,className:"flex items-center"},xe.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${_xe.default.createElement("li",{key:w},w)))),xe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&xe.default.createElement(Aoe,{formData:s,updateField:g,providerModels:c,fieldErrors:x?.fieldErrors||{}}),a===1&&xe.default.createElement(Eoe,{formData:s,meta:e,roster:p,rosterError:m,toggleArrayItem:v,updateField:g,selectPreset:b}),a===2&&xe.default.createElement(Noe,{formData:s,roster:p})),xe.default.createElement("div",{className:"flex justify-between mt-6"},xe.default.createElement("button",{onClick:a===0?r:()=>i(a-1),className:"px-6 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50 transition-colors"},a===0?"Cancel":"Back"),xe.default.createElement("button",{onClick:a===nw.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===nw.length-1?"Create Agent":"Continue")))}function ow({messages:e}){return e.length?xe.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function Aoe({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),xe.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),xe.default.createElement("input",{type:"text",value:e.name,onChange:a=>t("name",a.target.value),placeholder:"My Awesome Agent",className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(ow,{messages:o("name","slug")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),xe.default.createElement("textarea",{value:e.description,onChange:a=>t("description",a.target.value),placeholder:"What does this agent do?",rows:3,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent"}),xe.default.createElement(ow,{messages:o("description")})),xe.default.createElement("div",{className:"grid grid-cols-2 gap-4"},xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),xe.default.createElement("select",{value:e.provider,onChange:a=>{t("provider",a.target.value),t("model",r[a.target.value][0])},className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},Object.keys(r).map(a=>xe.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),xe.default.createElement(ow,{messages:o("provider")})),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),xe.default.createElement(Rl,{value:e.model,models:r[e.provider],onChange:a=>t("model",a),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"}),xe.default.createElement(ow,{messages:o("model")}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),xe.default.createElement("input",{type:"range",min:"0",max:"1",step:"0.1",value:e.model_config.temperature,onChange:a=>t("model_config",{...e.model_config,temperature:parseFloat(a.target.value)}),className:"w-full accent-red-500"}),xe.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},xe.default.createElement("span",null,"Precise"),xe.default.createElement("span",null,"Creative")))))}function Eoe({formData:e,meta:t,roster:r,rosterError:n,toggleArrayItem:o,updateField:a,selectPreset:i}){let s=Object.keys(km),l=Object.keys(Yd),u=bT(r),{callable:c,unavailable:d}=B6(r);return xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),xe.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex flex-col items-center"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(p=>{let f=Yd[p];return f?xe.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})),xe.default.createElement(In,{size:120}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(p=>{let f=tv[p];return f?xe.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(p=>xe.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"}`},xe.default.createElement("span",{className:"capitalize"},p.replace(/([A-Z])/g," $1").trim()))))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Instructions"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),xe.default.createElement("div",{className:"flex flex-wrap gap-2"},l.map(p=>{let f=Yd[p];return xe.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"}`},xe.default.createElement("span",null,f.emoji),xe.default.createElement("span",null,f.label))}))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"Tools"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Functions the model can call")),n&&xe.default.createElement("p",{className:"text-sm text-red-600"},"Could not load the tools this workspace offers: ",n),!r&&!n&&xe.default.createElement("p",{className:"text-sm text-gray-400"},"Loading tools\u2026"),xe.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-tools"},u.map(p=>xe.default.createElement(W6,{key:p.key,testId:`builder-tool-${p.key}`,on:e.tools.includes(p.key),onClick:()=>o("tools",p.key),emoji:ov[p.key]?.emoji||"\u{1F9F1}",label:ov[p.key]?.label||p.name,title:p.description||p.name}))),rw(e.tools)&&xe.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.")),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},xe.default.createElement("strong",null,"MCP servers"),xe.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Every tool the server serves is offered")),r&&c.length===0&&xe.default.createElement("p",{className:"text-sm text-gray-500"},"No MCP server this workspace can call yet. Register one with its URL in ",xe.default.createElement("code",null,"ActionAgent.mcp_catalog"),", or boot a project's checkout to offer its app runtime."),xe.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-mcp-servers"},c.map(p=>xe.default.createElement(W6,{key:p.key,testId:`builder-mcp-${p.key}`,on:ST(e.mcp_servers,p.key),onClick:()=>a("mcp_servers",F6(e.mcp_servers,p)),emoji:p.runtime?"\u{1F4E6}":"\u{1F50C}",label:p.name,hint:U6(p),title:[p.description,p.transport].filter(Boolean).join(" \xB7 ")}))),d.length>0&&xe.default.createElement("details",{className:"mt-3 text-sm","data-testid":"builder-mcp-unavailable"},xe.default.createElement("summary",{className:"cursor-pointer text-gray-500"},d.length," catalog server",d.length===1?"":"s"," a run can't call"),xe.default.createElement("ul",{className:"mt-2 space-y-1"},d.map(p=>xe.default.createElement("li",{key:p.key,className:"text-xs text-gray-500"},xe.default.createElement("span",{className:"font-medium text-gray-700"},p.name)," \u2014 ",p.unavailable_reason))))),xe.default.createElement("div",null,xe.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),xe.default.createElement("textarea",{value:e.instructions,onChange: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 Noe({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 xe.default.createElement("div",{className:"space-y-6"},xe.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),xe.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),xe.default.createElement("div",{className:"grid grid-cols-2 gap-8"},xe.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},xe.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(n=>{let o=Yd[n];return o?xe.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),xe.default.createElement(In,{size:100}),xe.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(n=>{let o=tv[n];return o?xe.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),xe.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),xe.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),xe.default.createElement("div",{className:"space-y-4"},xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),xe.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),xe.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(n=>{let o=Yd[n];return o?xe.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},o.emoji," ",o.label):null}):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(n=>xe.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},ov[n]?`${ov[n].emoji} ${ov[n].label}`:n)):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),Nm(e.tools).length>0&&xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Waits for your approval"),xe.default.createElement("p",{className:"text-gray-900 text-sm font-mono"},Nm(e.tools).join(", "))),xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"MCP servers"),xe.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.mcp_servers.length>0?e.mcp_servers.map(n=>xe.default.createElement("span",{key:r(n),className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r(n))):xe.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&xe.default.createElement("div",null,xe.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),xe.default.createElement("pre",{className:"mt-2 p-4 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap font-mono"},e.instructions)))}function W6({on:e,onClick:t,emoji:r,label:n,hint:o,title:a,testId:i}){return xe.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"}`},xe.default.createElement("span",null,r),xe.default.createElement("span",null,n),o&&xe.default.createElement("span",{className:`text-xs ${e?"text-red-100":"text-gray-400"}`},"\xB7 ",o))}var _e=Z(Q());var qi=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"}),Qo="#ef4444";var q=Z(Q());var aw=Z(Q()),G6=Z(Q());function H6(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=Ioe(e,Moe),d=a||{width:n,height:o,x:0,y:0},p=bt("recharts-surface",i);return aw.createElement("svg",AT({},yn(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),aw.createElement("title",null,l),aw.createElement("desc",null,u),r)});var iw=Z(Q());var joe=["children","className"];function ET(){return ET=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=$oe(e,joe),a=bt("recharts-layer",n);return iw.createElement("g",ET({className:a},yn(o),{ref:t}),r)});var bi=Z(Q()),IS=Z(Q()),G7=Z(ny());function sw(e){return e==="__proto__"}var zoe=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function lw(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:zoe.test(e);default:return!1}}function Tm(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function NT(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(NT).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function Om(e){if(Array.isArray(e))return e.map(Tm);if(typeof e=="symbol")return[e];e=NT(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]:Foe,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function Co(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+Ki(s)+a:o+a},"")}var Zr=e=>e===0?0:e>0?1:-1,Wo=e=>typeof e=="number"&&e!=+e,eu=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,je=e=>(typeof e=="number"||e instanceof Number)&&!Wo(e),wa=e=>je(e)||typeof e=="string",Uoe=0,tu=e=>{var t=++Uoe;return"".concat(e||"").concat(t)},Dn=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(!je(t)&&typeof t!="string")return n;var a;if(eu(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return Wo(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},TT=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):Uo(n,t))===r)}var ar=e=>e===null||typeof e>"u",ru=e=>ar(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function Ao(e){return e!=null}function Sa(){}function sv(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 Y6(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function il(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=sv(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,y=(f+m)/2,x=(d+p)/2,h=f+d/2,g=c>=0?1:-1,v=g*o,b=g>0?"end":"start",k=g>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 E={x:f+d/2,y:u-v,horizontalAnchor:"middle",verticalAnchor:b};return i&&C&&(E.height=Math.max(u-C.y,0),E.width=d),E}if(r==="bottom"){var I={x:m+p/2,y:u+c+v,horizontalAnchor:"middle",verticalAnchor:k};return i&&C&&(I.height=Math.max(C.y+C.height-(u+c),0),I.width=p),I}if(r==="left"){var J={x:y-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return i&&C&&(J.width=Math.max(J.x-C.x,0),J.height=c),J}if(r==="right"){var $={x:y+x+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"};return i&&C&&($.width=Math.max(C.x+C.width-$.x,0),$.height=c),$}var U=i&&C?{width:x,height:c}:{};return r==="insideLeft"?il({x:y+w,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"},U):r==="insideRight"?il({x:y+x-w,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},U):r==="insideTop"?il({x:f+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:k},U):r==="insideBottom"?il({x:m+p/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:b},U):r==="insideTopLeft"?il({x:f+w,y:u+v,horizontalAnchor:A,verticalAnchor:k},U):r==="insideTopRight"?il({x:f+d-w,y:u+v,horizontalAnchor:_,verticalAnchor:k},U):r==="insideBottomLeft"?il({x:m+w,y:u+c-v,horizontalAnchor:A,verticalAnchor:b},U):r==="insideBottomRight"?il({x:m+p-w,y:u+c-v,horizontalAnchor:_,verticalAnchor:b},U):r&&typeof r=="object"&&(je(r.x)||eu(r.x))&&(je(r.y)||eu(r.y))?il({x:l+Dn(r.x,x),y:u+Dn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},U):il({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},U)},Koe=["top","left","right","bottom"];function lv(e){return e==null?!1:typeof e=="object"?!0:Koe.includes(e)}var dw=Z(Q()),OT=(0,dw.createContext)(null),X6=()=>(0,dw.useContext)(OT);var ka=Z(Q());var mz=Z(Q());function Mr(e){return function(){return e}}var PT=Math.cos;var uv=Math.sin,Ho=Math.sqrt;var Zd=Math.PI,WEe=Zd/2,Pm=2*Zd;var MT=Math.PI,IT=2*MT,Jd=1e-6,Voe=IT-Jd;function Z6(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Z6;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oJd)if(!(Math.abs(d*l-u*c)>Jd)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,y=l*l+u*u,x=f*f+m*m,h=Math.sqrt(y),g=Math.sqrt(p),v=a*Math.tan((MT-Math.acos((y+p-x)/(2*h*g)))/2),b=v/g,k=v/h;Math.abs(b-1)>Jd&&this._append`L${t+b*c},${r+b*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)>Jd||Math.abs(this._y1-c)>Jd)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%IT+IT),p>Voe?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>Jd&&this._append`A${n},${n},0,${+(p>=MT)},${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 J6(){return new Qd}J6.prototype=Qd.prototype;function Mm(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 Qd(t)}var ZEe=Array.prototype.slice;function Im(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Q6(e){this._context=e}Q6.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 wc(e){return new Q6(e)}function pw(e){return e[0]}function fw(e){return e[1]}function cv(e,t){var r=Mr(!0),n=null,o=wc,a=null,i=Mm(s);e=typeof e=="function"?e:e===void 0?pw:Mr(e),t=typeof t=="function"?t:t===void 0?fw:Mr(t);function s(l){var u,c=(l=Im(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(v[m],b[m]);s.lineEnd(),s.areaEnd()}h&&(v[p]=+e(x,p,d),b[p]=+t(x,p,d),s.point(n?+n(x,p,d):v[p],r?+r(x,p,d):b[p]))}if(g)return s=null,g+""||null}function c(){return cv().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Mr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Mr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Mr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Mr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Mr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Mr(+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:Mr(!!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 mw=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 DT(e){return new mw(e,!0)}function jT(e){return new mw(e,!1)}var jm={draw(e,t){let r=Ho(t/Zd);e.moveTo(r,0),e.arc(0,0,r,0,Pm)}};var $T={draw(e,t){let r=Ho(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 R6=Ho(1/3),Yoe=R6*2,LT={draw(e,t){let r=Ho(t/Yoe),n=r*R6;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var zT={draw(e,t){let r=Ho(t),n=-r/2;e.rect(n,n,r,r)}};var Xoe=.8908130915292852,ez=uv(Zd/10)/uv(7*Zd/10),Zoe=uv(Pm/10)*ez,Joe=-PT(Pm/10)*ez,BT={draw(e,t){let r=Ho(t*Xoe),n=Zoe*r,o=Joe*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Pm*a/5,s=PT(i),l=uv(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var FT=Ho(3),UT={draw(e,t){let r=-Ho(t/(FT*3));e.moveTo(0,r*2),e.lineTo(-FT*r,-r),e.lineTo(FT*r,-r),e.closePath()}};var Vi=-.5,Gi=Ho(3)/2,WT=1/Ho(12),Qoe=(WT/2+1)*3,HT={draw(e,t){let r=Ho(t/Qoe),n=r/2,o=r*WT,a=n,i=r*WT+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(Vi*n-Gi*o,Gi*n+Vi*o),e.lineTo(Vi*a-Gi*i,Gi*a+Vi*i),e.lineTo(Vi*s-Gi*l,Gi*s+Vi*l),e.lineTo(Vi*n+Gi*o,Vi*o-Gi*n),e.lineTo(Vi*a+Gi*i,Vi*i-Gi*a),e.lineTo(Vi*s+Gi*l,Vi*l-Gi*s),e.closePath()}};function gw(e,t){let r=null,n=Mm(o);e=typeof e=="function"?e:Mr(e||jm),t=typeof t=="function"?t:Mr(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:Mr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Mr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function $m(){}function Lm(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 tz(e){this._context=e}tz.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:Lm(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:Lm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function qT(e){return new tz(e)}function rz(e){this._context=e}rz.prototype={areaStart:$m,areaEnd:$m,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:Lm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function KT(e){return new rz(e)}function nz(e){this._context=e}nz.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:Lm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function VT(e){return new nz(e)}function oz(e){this._context=e}oz.prototype={areaStart:$m,areaEnd:$m,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 GT(e){return new oz(e)}function az(e){return e<0?-1:1}function iz(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(az(a)+az(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function sz(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function YT(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 hw(e){this._context=e}hw.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:YT(this,this._t0,sz(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,YT(this,sz(this,r=iz(this,e,t)),r);break;default:YT(this,this._t0,r=iz(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function lz(e){this._context=new uz(e)}(lz.prototype=Object.create(hw.prototype)).point=function(e,t){hw.prototype.point.call(this,t,e)};function uz(e){this._context=e}uz.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 XT(e){return new hw(e)}function ZT(e){return new lz(e)}function dz(e){this._context=e}dz.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=cz(e),o=cz(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 QT(e){return new yw(e,.5)}function RT(e){return new yw(e,0)}function eO(e){return new yw(e,1)}function gi(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 Roe(e,t){return e[t]}function eae(e){let t=[];return t.key=e,t}function tO(){var e=Mr([]),t=zm,r=gi,n=Roe;function o(a){var i=Array.from(e.apply(this,arguments),eae),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(ru(e));return gz[t]||jm},cae=(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*lae;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}},dae=(e,t)=>{gz["symbol".concat(ru(e))]=t},iO=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=iae(e,rae),l=fz(fz({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=uae(u),x=gw().type(y).size(cae(o,i,u)),h=x();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=yn(l);return je(p)&&je(f)&&je(o)?mz.createElement("path",aO({},m,{className:bt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};iO.registerSymbol=dae;var hz=Z(Q());var vw=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Bm=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,hz.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{av(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},pae=(e,t,r)=>n=>(e(t,r,n),null),nu=(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];av(o)&&typeof a=="function"&&(n||(n={}),n[o]=pae(a,t,r))}),n};function yz(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 fae(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function xw(){return xw=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var f,m,y=d.formatter||o,x=bt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?fz({},s):{};h.color=d.inactive?a:h.color||d.color,(f=h.whiteSpace)!==null&&f!==void 0||(h.whiteSpace="normal"),(m=h.overflowWrap)!==null&&m!==void 0||(h.overflowWrap="break-word");var g=y?y(d.value,d,p):d.value;return ka.createElement("li",fw({className:x,style:u,key:"legend-item-".concat(p)},ru(e,d,p)),ka.createElement(rv,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},ka.createElement(gae,{data:d,iconType:i,inactiveColor:a})),ka.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var mz=e=>{var t=nr(e,fae),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 ka.createElement("ul",{className:"recharts-default-legend",style:a},ka.createElement(hae,fw({},t,{payload:r})))};function gz(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function nu(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var gw="[object RegExp]",Lm="[object String]",zm="[object Number]",Bm="[object Boolean]",hw="[object Arguments]",yw="[object Symbol]",vw="[object Date]",xw="[object Map]",bw="[object Set]",ww="[object Array]",xz="[object Function]",Sw="[object ArrayBuffer]",Fm="[object Object]",bz="[object Error]",kw="[object DataView]",_w="[object Uint8Array]",Cw="[object Uint8ClampedArray]",Aw="[object Uint16Array]",Ew="[object Uint32Array]",wz="[object BigUint64Array]",Nw="[object Int8Array]",Tw="[object Int16Array]",Ow="[object Int32Array]",Sz="[object BigInt64Array]",Pw="[object Float32Array]",Mw="[object Float64Array]";var eO=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function uv(e){return typeof eO.Buffer<"u"&&eO.Buffer.isBuffer(e)}function kz(e,t){return wc(e,void 0,e,new Map,t)}function wc(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(sv(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{}):tO(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:tO(o,a,n,u,!1)},new Map,!0)}function tO(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return vae(e,t,r,n);case"function":return Object.keys(t).length>0?tO(e,{...t},r,n,o):Sc(e,t);default:return Iw(e)?o?typeof t=="string"?t==="":!0:Sc(e,t):Sc(e,t)}}function vae(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return Cz(e,t,r,n);if(t instanceof Map)return xae(e,t,r,n);if(t instanceof Set)return bae(e,t,r,n);let o=Object.keys(t);if(e==null||sv(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 Az(e){return e=_z(e),t=>Dw(t,e)}function Ez(e,t){return kz(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(nu(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),Yi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case zm:case Lm:case Bm:{let s=new e.constructor(e?.valueOf());return Yi(s,e),s}case hw:{let s={};return Yi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function Nz(e){return Ez(e)}var wae=/^(?:0|[1-9]\d*)$/;function jw(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function $w(e){return e!=null&&typeof e!="function"&&Iz(e.length)}function Dz(e){return typeof e=="object"&&e!==null}function jz(e){return Dz(e)&&$w(e)}function Lw(e,t=mw){return jz(e)?gz(Array.from(e),hz(Mz(t),1)):[]}function zw(e,t,r){return t===!0?Lw(e,r):typeof t=="function"?Lw(e,t):e}var Kz=Z(Hz()),dv=Z(J());var qz=Z(J()),cv=(0,qz.createContext)(null);var Bae=e=>e,Dt=()=>{var e=(0,dv.useContext)(cv);return e?e.store.dispatch:Bae},Fw=()=>{},Fae=()=>Fw,Uae=(e,t)=>e===t;function $e(e){var t=(0,dv.useContext)(cv),r=(0,dv.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:Fw,[t,e]);return(0,Kz.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Fae,t?t.store.getState:Fw,t?t.store.getState:Fw,r,Uae)}function Wae(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function Hae(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 Vz=e=>Array.isArray(e)?e:[e];function qae(e){let t=Array.isArray(e[0])?e[0]:e;return Hae(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Kae(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Vae:WeakRef,Yz=Gae(),Yae=0,Gz=1;function Uw(){return{s:Yae,v:void 0,o:null,p:null}}function Xae(e){return e instanceof Yz?e.deref():e}function Xz(e,t={}){let r=Uw(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=Uw(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function Zae(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()),Wae(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=Xz,argsMemoizeOptions:m=[]}=c,y=Vz(p),x=Vz(m),h=qae(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,b=f(function(){i++;let w=Kae(h,arguments);return s=g.apply(null,w),s},...x);return Object.assign(b,{resultFunc:u,memoizedResultFunc:g,dependencies:h,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>s,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:d,argsMemoize:f})};return Object.assign(n,{withTypes:()=>n}),n}var ae=Zae(Xz);function Zz(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=Jz(e),o=Jz(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function Ww(e){return typeof e=="symbol"||e instanceof Symbol}var Jae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Qae=/^\w*$/;function Rz(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||Ww(e)?!0:typeof e=="string"&&(Qae.test(e)||!Jae.test(e))||t!=null&&Object.hasOwn(t,e)}function eB(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)||Rz(s)?s:{key:s,path:Em(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 ou(e,...t){let r=t.length;return r>1&&pv(e,t[0],t[1])?t=[]:r>2&&pv(t[0],t[1],t[2])&&(t=[t[0]]),eB(e,Zz(t),["asc"])}var oO=e=>e.legend.settings,tB=e=>e.legend.size,Rae=e=>e.legend.payload,rB=ae([Rae,oO],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?ou(n,r):n});function nB(){return $e(rB)}var au=Z(J());function eie(e,t){return oie(e)||nie(e,t)||rie(e,t)||tie()}function tie(){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 rie(e,t){if(e){if(typeof e=="string")return oB(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)?oB(e,t):void 0}}function oB(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rHw||Math.abs(e.left-t.left)>Hw||Math.abs(e.top-t.top)>Hw||Math.abs(e.width-t.width)>Hw}function iB(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function qw(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,au.useState)({height:0,left:0,top:0,width:0}),r=eie(t,2),n=r[0],o=r[1],a=(0,au.useRef)(null),i=(0,au.useRef)(n);i.current=n;var s=(0,au.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=iB(l);if(aB(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=iB(l);aB(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,au.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var S7=Z(J());function Qo(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 aie=typeof Symbol=="function"&&Symbol.observable||"@@observable",sB=aie,aO=()=>Math.random().toString(36).substring(7).split("").join("."),iie={INIT:`@@redux/INIT${aO()}`,REPLACE:`@@redux/REPLACE${aO()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${aO()}`},Kw=iie;function Vw(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 iO(e,t,r){if(typeof e!="function")throw new Error(Qo(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Qo(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Qo(1));return r(iO)(e,t)}let n=e,o=t,a=new Map,i=a,s=0,l=!1;function u(){i===a&&(i=new Map,a.forEach((x,h)=>{i.set(h,x)}))}function c(){if(l)throw new Error(Qo(3));return o}function d(x){if(typeof x!="function")throw new Error(Qo(4));if(l)throw new Error(Qo(5));let h=!0;u();let g=s++;return i.set(g,x),function(){if(h){if(l)throw new Error(Qo(6));h=!1,u(),i.delete(g),a=null}}}function p(x){if(!Vw(x))throw new Error(Qo(7));if(typeof x.type>"u")throw new Error(Qo(8));if(typeof x.type!="string")throw new Error(Qo(17));if(l)throw new Error(Qo(9));try{l=!0,o=n(o,x)}finally{l=!1}return(a=i).forEach(g=>{g()}),x}function f(x){if(typeof x!="function")throw new Error(Qo(10));n=x,p({type:Kw.REPLACE})}function m(){let x=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(Qo(11));function g(){let b=h;b.next&&b.next(c())}return g(),{unsubscribe:x(g)}},[sB](){return this}}}return p({type:Kw.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[sB]:m}}function sie(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:Kw.INIT})>"u")throw new Error(Qo(12));if(typeof r(void 0,{type:Kw.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Qo(13))})}function Gw(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let x=l&&l.type;throw new Error(Qo(14))}c[p]=y,u=u||y!==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 lB(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(Qo(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 sO(e){return Vw(e)&&"type"in e&&typeof e.type=="string"}var yB=Symbol.for("immer-nothing"),uB=Symbol.for("immer-draftable"),ia=Symbol.for("immer-state");function Os(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var hi=Object,Hm=hi.getPrototypeOf,Jw="constructor",nS="prototype",dO="configurable",Qw="enumerable",Xw="writable",mv="value",sl=e=>!!e&&!!e[ia];function yi(e){return e?vB(e)||aS(e)||!!e[uB]||!!e[Jw]?.[uB]||iS(e)||sS(e):!1}var lie=hi[nS][Jw].toString(),cB=new WeakMap;function vB(e){if(!e||!xO(e))return!1;let t=Hm(e);if(t===null||t===hi[nS])return!0;let r=hi.hasOwnProperty.call(t,Jw)&&t[Jw];if(r===Object)return!0;if(!Wm(r))return!1;let n=cB.get(r);return n===void 0&&(n=Function.toString.call(r),cB.set(r,n)),n===lie}function oS(e,t,r=!0){yv(e)===0?(r?Reflect.ownKeys(e):hi.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function yv(e){let t=e[ia];return t?t.type_:aS(e)?1:iS(e)?2:sS(e)?3:0}var lO=(e,t,r=yv(e))=>r===2?e.has(t):hi[nS].hasOwnProperty.call(e,t),pO=(e,t,r=yv(e))=>r===2?e.get(t):e[t],Rw=(e,t,r,n=yv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function uie(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var aS=Array.isArray,iS=e=>e instanceof Map,sS=e=>e instanceof Set,xO=e=>typeof e=="object",Wm=e=>typeof e=="function",uO=e=>typeof e=="boolean";function cie(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var iu=e=>e.copy_||e.base_;var bO=e=>e.modified_?e.copy_:e.base_;function fO(e,t){if(iS(e))return new Map(e);if(sS(e))return new Set(e);if(aS(e))return Array[nS].slice.call(e);let r=vB(e);if(t===!0||t==="class_only"&&!r){let n=hi.getOwnPropertyDescriptors(e);delete n[ia];let o=Reflect.ownKeys(n);for(let a=0;a1&&hi.defineProperties(e,{set:Yw,add:Yw,clear:Yw,delete:Yw}),hi.freeze(e),t&&oS(e,(r,n)=>{wO(n,!0)},!1)),e}function die(){Os(2)}var Yw={[mv]:die};function lS(e){return e===null||!xO(e)?!0:hi.isFrozen(e)}var eS="MapSet",mO="Patches",dB="ArrayMethods",xB={};function Zd(e){let t=xB[e];return t||Os(0,e),t}var pB=e=>!!xB[e];var gv,bB=()=>gv,pie=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:pB(eS)?Zd(eS):void 0,arrayMethodsPlugin_:pB(dB)?Zd(dB):void 0});function fB(e,t){t&&(e.patchPlugin_=Zd(mO),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function gO(e){hO(e),e.drafts_.forEach(fie),e.drafts_=null}function hO(e){e===gv&&(gv=e.parent_)}var mB=e=>gv=pie(gv,e);function fie(e){let t=e[ia];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function gB(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ia].modified_&&(gO(t),Os(4)),yi(e)&&(e=hB(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ia].base_,e,t)}else e=hB(t,r);return mie(t,e,!0),gO(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==yB?e:void 0}function hB(e,t){if(lS(t))return t;let r=t[ia];if(!r)return tS(t,e.handledSet_,e);if(!uS(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);kB(r,e)}return r.copy_}function mie(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&wO(t,r)}function wB(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var uS=(e,t)=>e.scope_===t,gie=[];function SB(e,t,r,n){let o=iu(e),a=e.type_;if(n!==void 0&&pO(o,n,a)===t){Rw(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;oS(o,(l,u)=>{if(sl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??gie;for(let s of i)Rw(o,s,r,a)}function hie(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!uS(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=bO(a);SB(e,a.draft_??a,i,r),kB(a,o)})}function kB(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)}wB(e)}}function yie(e,t,r){let{scope_:n}=e;if(sl(r)){let o=r[ia];uS(o,n)&&o.callbacks_.push(function(){Zw(e);let i=bO(o);SB(e,r,i,t)})}else yi(r)&&e.callbacks_.push(function(){let a=iu(e);e.type_===3?a.has(r)&&tS(r,n.handledSet_,n):pO(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&tS(pO(e.copy_,t,e.type_),n.handledSet_,n)})}function tS(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||sl(e)||t.has(e)||!yi(e)||lS(e)||(t.add(e),oS(e,(n,o)=>{if(sl(o)){let a=o[ia];if(uS(a,r)){let i=bO(a);Rw(e,n,i,e.type_),wB(a)}}else yi(o)&&tS(o,t,r)})),e}function vie(e,t){let r=aS(e),n={type_:r?1:0,scope_:t?t.scope_:bB(),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=rS;r&&(o=[n],a=hv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var rS={get(e,t){if(t===ia)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=iu(e);if(!lO(o,t,e.type_))return bie(e,o,t);let a=o[t];if(e.finalized_||!yi(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&cie(t))return a;if(a===cO(e.base_,t)||xie(e,t,a)){Zw(e);let i=e.type_===1?+t:t,s=vO(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in iu(e)},ownKeys(e){return Reflect.ownKeys(iu(e))},set(e,t,r){let n=_B(iu(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=cO(iu(e),t),a=o?.[ia];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(uie(r,o)&&(r!==void 0||lO(e.base_,t,e.type_)))return!0;Zw(e),yO(e)}return e.copy_[t]===r&&(r!==void 0||lO(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),yie(e,t,r)),!0},deleteProperty(e,t){return Zw(e),cO(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),yO(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=iu(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[Xw]:!0,[dO]:e.type_!==1||t!=="length",[Qw]:n[Qw],[mv]:r[t]}},defineProperty(){Os(11)},getPrototypeOf(e){return Hm(e.base_)},setPrototypeOf(){Os(12)}},hv={};for(let e in rS){let t=rS[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 rS.set.call(this,e[0],t,r,e[0])};function cO(e,t){let r=e[ia];return(r?iu(r):e)[t]}function xie(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!yi(r)||r[ia]?!1:e.baseRefs_.has(r)}function bie(e,t,r){let n=_B(t,r);return n?mv in n?n[mv]:n.get?.call(e.draft_):void 0}function _B(e,t){if(!(t in e))return;let r=Hm(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Hm(r)}}function yO(e){e.modified_||(e.modified_=!0,e.parent_&&yO(e.parent_))}function Zw(e){e.copy_||(e.assigned_=new Map,e.copy_=fO(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var wie=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Wm(t)&&!Wm(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Wm(r)||Os(6),n!==void 0&&!Wm(n)&&Os(7);let o;if(yi(t)){let a=mB(this),i=vO(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?gO(a):hO(a)}return fB(a,n),gB(o,a)}else if(!t||!xO(t)){if(o=r(t),o===void 0&&(o=t),o===yB&&(o=void 0),this.autoFreeze_&&wO(o,!0),n){let a=[],i=[];Zd(mO).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else Os(1,t)},this.produceWithPatches=(t,r)=>{if(Wm(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]},uO(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),uO(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),uO(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){yi(e)||Os(8),sl(e)&&(e=Ro(e));let t=mB(this),r=vO(t,e,void 0);return r[ia].isManual_=!0,hO(t),r}finishDraft(e,t){let r=e&&e[ia];(!r||!r.isManual_)&&Os(9);let{scope_:n}=r;return fB(n,t),gB(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=Zd(mO).applyPatches_;return sl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function vO(e,t,r,n){let[o,a]=iS(t)?Zd(eS).proxyMap_(t,r):sS(t)?Zd(eS).proxySet_(t,r):vie(t,r);return(r?.scope_??bB()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?hie(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 Ro(e){return sl(e)||Os(10,e),CB(e)}function CB(e){if(!yi(e)||lS(e))return e;let t=e[ia],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=fO(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=fO(e,!0);return oS(r,(o,a)=>{Rw(r,o,CB(a))},n),t&&(t.finalized_=!1),r}var Sie=new wie,SO=Sie.produce;var Zt=e=>e;function AB(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var EB=AB(),NB=AB;var kie=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)},ZPe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},_ie=e=>e&&typeof e.match=="function";function ho(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(vi(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=>sO(n)&&n.type===e,r}var $B=class vv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,vv.prototype)}static get[Symbol.species](){return vv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new vv(...t[0].concat(this)):new vv(...t.concat(this))}};function TB(e){return yi(e)?SO(e,()=>{}):e}function cS(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function Cie(e){return typeof e=="boolean"}var Aie=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new $B;return r&&(Cie(r)?i.push(EB):i.push(NB(r.extraArgument))),i},LB="RTK_autoBatch",Ir=()=>e=>({payload:e,meta:{[LB]:!0}}),OB=e=>t=>{setTimeout(t,e)},Eie=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},AO=(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?Eie(window.requestAnimationFrame,100):OB(10):e.type==="callback"?e.queueNotification:OB(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?.[LB],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},Nie=e=>function(r){let{autoBatch:n=!0}=r??{},o=new $B(e);return n&&o.push(AO(typeof n=="object"?n:void 0)),o};function zB(e){let t=Aie(),{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(Vw(r))l=Gw(r);else throw new Error(vi(1));let u;typeof n=="function"?u=n(t):u=t();let c=fv;o&&(c=kie({trace:!1,...typeof o=="object"&&o}));let d=lB(...u),p=Nie(d),f=typeof s=="function"?s(p):p(),m=c(...f);return iO(l,i,m)}function BB(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(vi(28));if(s in t)throw new Error(vi(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 Tie(e){return typeof e=="function"}function Oie(e,t){let[r,n,o]=BB(t),a;if(Tie(e))a=()=>TB(e());else{let s=TB(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(sl(c)){let f=d(c,l);return f===void 0?c:f}else{if(yi(c))return SO(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 Pie=(e,t)=>_ie(e)?e.match(t):e(t);function Mie(...e){return t=>e.some(r=>Pie(r,t))}var Iie="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",FB=(e=21)=>{let t="",r=e;for(;r--;)t+=Iie[Math.random()*64|0];return t},Die=["name","message","stack","code"],kO=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},PB=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},jie=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Die)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},MB="External signal was aborted",$ie=(()=>{function e(t,r,n){let o=ho(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=ho(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=ho(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||jie)(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):FB(),m=new AbortController,y,x;function h(v){x=v,m.abort()}u&&(u.aborted?h(MB):u.addEventListener("abort",()=>h(MB),{once:!0}));let g=(async function(){let v;try{let S=n?.condition?.(l,{getState:d,extra:p});if(zie(S)&&(S=await S),S===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let w=new Promise((_,k)=>{y=()=>{k({name:"AbortError",message:x||"Aborted"})},m.signal.addEventListener("abort",y,{once:!0})});c(a(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),v=await Promise.race([w,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((_,k)=>new kO(_,k)),fulfillWithValue:((_,k)=>new PB(_,k))})).then(_=>{if(_ instanceof kO)throw _;return _ instanceof PB?o(_.payload,f,l,_.meta):o(_,f,l)})])}catch(S){v=S instanceof kO?i(null,f,l,S.payload,S.meta):i(S,f,l)}finally{y&&m.signal.removeEventListener("abort",y)}return n&&!n.dispatchConditionRejection&&i.match(v)&&v.meta.condition||c(v),v})();return Object.assign(g,{abort:h,requestId:f,arg:l,unwrap(){return g.then(Lie)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:Mie(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function Lie(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function zie(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var UB=Symbol.for("rtk-slice-createasyncthunk"),QPe={[UB]:$ie};function Bie(e,t){return`${e}/${t}`}function Fie({creators:e}={}){let t=e?.asyncThunk?.[UB];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(vi(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(Wie()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(v,b){let S=typeof v=="string"?v:v.type;if(!S)throw new Error(vi(12));if(S in l.sliceCaseReducersByType)throw new Error(vi(13));return l.sliceCaseReducersByType[S]=b,u},addMatcher(v,b){return l.sliceMatchers.push({matcher:v,reducer:b}),u},exposeAction(v,b){return l.actionCreators[v]=b,u},exposeCaseReducer(v,b){return l.sliceCaseReducersByName[v]=b,u}};s.forEach(v=>{let b=i[v],S={reducerName:v,type:Bie(o,v),createNotation:typeof n.reducers=="function"};qie(b)?Vie(S,b,u,t):Hie(S,b,u)});function c(){let[v={},b=[],S=void 0]=typeof n.extraReducers=="function"?BB(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return Oie(n.initialState,_=>{for(let k in w)_.addCase(k,w[k]);for(let k of l.sliceMatchers)_.addMatcher(k.matcher,k.reducer);for(let k of b)_.addMatcher(k.matcher,k.reducer);S&&_.addDefaultCase(S)})}let d=v=>v,p=new Map,f=new WeakMap,m;function y(v,b){return m||(m=c()),m(v,b)}function x(){return m||(m=c()),m.getInitialState()}function h(v,b=!1){function S(_){let k=_[v];return typeof k>"u"&&b&&(k=cS(f,S,x)),k}function w(_=d){let k=cS(p,b,()=>new WeakMap);return cS(k,_,()=>{let A={};for(let[C,E]of Object.entries(n.selectors??{}))A[C]=Uie(E,_,()=>cS(f,_,x),b);return A})}return{reducerPath:v,getSelectors:w,get selectors(){return w(S)},selectSlice:S}}let g={name:o,reducer:y,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:x,...h(a),injectInto(v,{reducerPath:b,...S}={}){let w=b??a;return v.inject({reducerPath:w,reducer:y},S),{...g,...h(w,!0)}}};return g}}function Uie(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 Cr=Fie();function Wie(){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 Hie({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Kie(n))throw new Error(vi(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?ho(e,i):ho(e))}function qie(e){return e._reducerDefinitionType==="asyncThunk"}function Kie(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Vie({type:e,reducerName:t},r,n,o){if(!o)throw new Error(vi(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||dS,pending:s||dS,rejected:l||dS,settled:u||dS})}function dS(){}var Gie="task",WB="listener",HB="completed",EO="cancelled",Yie=`task-${EO}`,Xie=`task-${HB}`,_O=`${WB}-${EO}`,Zie=`${WB}-${HB}`,mS=class{constructor(e){this.code=e,this.message=`${Gie} ${EO} (reason: ${e})`}code;name="TaskAbortError";message},NO=(e,t)=>{if(typeof e!="function")throw new TypeError(vi(32))},pS=()=>{},qB=(e,t=pS)=>(e.catch(t),e),KB=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Jd=e=>{if(e.aborted)throw new mS(e.reason)};function VB(e,t){let r=pS;return new Promise((n,o)=>{let a=()=>o(new mS(e.reason));if(e.aborted){a();return}r=KB(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=pS})}var Jie=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof mS?"cancelled":"rejected",error:r}}finally{t?.()}},fS=e=>t=>qB(VB(e,t).then(r=>(Jd(e),r))),GB=e=>{let t=fS(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:qm}=Object,IB={},gS="listenerMiddleware",Qie=(e,t)=>{let r=n=>KB(e,()=>n.abort(e.reason));return(n,o)=>{NO(n,"taskExecutor");let a=new AbortController;r(a);let i=Jie(async()=>{Jd(e),Jd(a.signal);let s=await n({pause:fS(a.signal),delay:GB(a.signal),signal:a.signal});return Jd(a.signal),s},()=>a.abort(Xie));return o?.autoJoin&&t.push(i.catch(pS)),{result:fS(e)(i),cancel(){a.abort(Yie)}}}},Rie=(e,t)=>{let r=async(n,o)=>{Jd(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 VB(t,Promise.race(s));return Jd(t),l}finally{a()}};return((n,o)=>qB(r(n,o)))},YB=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=ho(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(vi(21));return NO(a,"options.listener"),{predicate:o,type:t,effect:a}},XB=qm(e=>{let{type:t,predicate:r,effect:n}=YB(e);return{id:FB(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(vi(22))}}},{withTypes:()=>XB}),DB=(e,t)=>{let{type:r,effect:n,predicate:o}=YB(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},CO=e=>{e.pending.forEach(t=>{t.abort(_O)})},ese=(e,t)=>()=>{for(let r of t.keys())CO(r);e.clear()},jB=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},ZB=qm(ho(`${gS}/add`),{withTypes:()=>ZB}),tse=ho(`${gS}/removeAll`),JB=qm(ho(`${gS}/remove`),{withTypes:()=>JB}),rse=(...e)=>{console.error(`${gS}/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=rse}=e;NO(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&CO(f)}),l=(f=>{let m=DB(t,f)??XB(f);return s(m)});qm(l,{withTypes:()=>l});let u=f=>{let m=DB(t,f);return m&&(m.unsubscribe(),f.cancelActive&&CO(m)),!!m};qm(u,{withTypes:()=>u});let c=async(f,m,y,x)=>{let h=new AbortController,g=Rie(l,h.signal),v=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,qm({},y,{getOriginalState:x,condition:(b,S)=>g(b,S).then(Boolean),take:g,delay:GB(h.signal),pause:fS(h.signal),extra:a,signal:h.signal,fork:Qie(h.signal,v),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((b,S,w)=>{b!==h&&(b.abort(_O),w.delete(b))})},cancel:()=>{h.abort(_O),f.pending.delete(h)},throwIfCancelled:()=>{Jd(h.signal)}})))}catch(b){b instanceof mS||jB(i,b,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(Zie),o(f),f.pending.delete(h)}},d=ese(t,r);return{middleware:f=>m=>y=>{if(!sO(y))return m(y);if(ZB.match(y))return l(y.payload);if(tse.match(y)){d();return}if(JB.match(y))return u(y.payload);let x=f.getState(),h=()=>{if(x===IB)throw new Error(vi(23));return x},g;try{if(g=m(y),t.size>0){let v=f.getState(),b=Array.from(t.values());for(let S of b){let w=!1;try{w=S.predicate(y,v,x)}catch(_){w=!1,jB(i,_,{raisedBy:"predicate"})}w&&c(S,y,f,h)}}}finally{x=IB}return g},startListening:l,stopListening:u,clearListeners:d}};function vi(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 nse={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},QB=Cr({name:"chartLayout",initialState:nse,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}}}),hS=QB.actions,TO=hS.setMargin,RB=hS.setLayout,e7=hS.setChartSize,t7=hS.setScale;var r7=QB.reducer;function yS(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function Ot(e){return Number.isFinite(e)}function qa(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function n7(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 Ka(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(ov(l)){if(l==="top"&&je(e.top))return Ka(Ka({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&je(e.bottom))return Ka(Ka({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&je(e.left))return Ka(Ka({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&je(e.right))return Ka(Ka({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&je(e[a]))return Ka(Ka({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&je(e[i]))return Ka(Ka({},e),{},{[i]:e[i]+(o||0)})}return e},sa=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",OO=(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},PO=(e,t,r)=>{if(!e)return null;var n=e.duplicateDomain,o=e.type,a=e.range,i=e.scale,s=e.realScaleType,l=e.isCategorical,u=e.categoricalDomain,c=e.tickCount,d=e.ticks,p=e.niceTicks,f=e.axisType;if(!i)return null;var m=s==="scaleBand"&&i.bandwidth?i.bandwidth()/2:2,y=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(y=f==="angleAxis"&&a&&a.length>=2?Xr(a[0]-a[1])*2*y:y,t&&(d||p)){var x=(d||p||[]).map((h,g)=>{var v=n?n.indexOf(h):h,b=i.map(v);return Ot(b)?{coordinate:b+y,value:h,offset:y,index:g}:null}).filter(_o);return x}return l&&u?u.map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(_o):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(_o):i.domain().map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(_o)},a7=(e,t)=>{if(!t||t.length!==2||!je(t[0])||!je(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(!je(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)}}}},lse=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)}}}},use={sign:sse,expand:XT,none:gi,silhouette:ZT,wiggle:JT,positive:lse},i7=(e,t,r)=>{var n,o=(n=use[r])!==null&&n!==void 0?n:gi,a=YT().keys(t).value((s,l)=>Number(Wt(s,l,0))).order(jm).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Wt(e[c],t[l],0);Array.isArray(d)&&d.length===2&&je(d[0])&&je(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function vS(e){return e==null?void 0:String(e)}function Km(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&&!ar(o[t.dataKey])){var s=nw(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=Wt(o,ar(i)?t.dataKey:i),u=t.scale.map(l);return je(u)?u:null}var MO=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=Wt(a,t.dataKey,t.scale.domain()[i]);if(ar(s))return null;var l=t.scale.map(s);return je(l)?l-o/2+n:null},s7=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]},cse=e=>{var t=e.flat(2).filter(je);return[Math.min(...t),Math.max(...t)]},dse=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],l7=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return dse(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=yS(u,t,r),d=cse(c);return!Ot(d[0])||!Ot(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]))},IO=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,DO=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Xi=(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=ou(t,y=>y.coordinate),a=[],i=0,s=1,l=o.length;sp&&(f=Math.min(m,f));return f===1/0?0:f}return r?void 0:0};function jO(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return Ka(Ka({},t),{},{dataKey:r,payload:n,value:o,name:a})}function xi(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var u7=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},c7=(e,t)=>t==="centric"?e.angle:e.radius;var Ho=e=>e.layout.width,qo=e=>e.layout.height,d7=e=>e.layout.scale,Vm=e=>e.layout.margin;var Gm=ae(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Ym=ae(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var xS="data-recharts-item-index",bS="data-recharts-item-id",Qd=60,xv=30;function p7(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 wS(e){for(var t=1;te.brush.height;function hse(e){var t=Ym(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Qd;return r+o}return r},0)}function yse(e){var t=Ym(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Qd;return r+o}return r},0)}function vse(e){var t=Gm(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:xv;return r+o}return r},0)}function xse(e){var t=Gm(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:xv;return r+o}return r},0)}var Fr=ae([Ho,qo,Vm,gse,hse,yse,vse,xse,oO,tB],(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=wS(wS({},d),c),f=p.bottom;p.bottom+=n,p=o7(p,l,u);var m=e-p.left-p.right,y=t-p.top-p.bottom;return wS(wS({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(y,0)})}),SS=ae(Fr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Xm=ae(Ho,qo,(e,t)=>({x:0,y:0,width:e,height:t}));var bse=Z(J()),kS=Z(J()),wse=(0,kS.createContext)(null),Ar=()=>(0,kS.useContext)(wse)!=null;var Zm=e=>e.brush,Rd=ae([Zm,Fr,Vm],(e,t,r)=>({height:e.height,x:je(e.x)?e.x:t.left,y:je(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:je(e.width)?e.width:t.width}));var ep=Z(J()),yo=Z(J());function f7(e,t,{signal:r,edges:n}={}){let o,a=null,i=n!=null&&n.includes("leading"),s=n==null||n.includes("trailing"),l=()=>{a!==null&&(e.apply(o,a),o=void 0,a=null)},u=()=>{s&&l(),f()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},p=()=>{c!==null&&(clearTimeout(c),c=null)},f=()=>{p(),o=void 0,a=null},m=()=>{l()},y=function(...x){if(r?.aborted)return;o=this,a=x;let h=c==null;d(),i&&h&&l()};return y.schedule=d,y.cancel=f,y.flush=m,r?.addEventListener("abort",f,{once:!0}),y}function m7(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=f7(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 $O(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return m7(e,t,{leading:n,maxWait:t,trailing:o})}var Sse=!0,Jm=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Ps={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},LO=(e,t,r)=>{var n=r.width,o=n===void 0?Ps.width:n,a=r.height,i=a===void 0?Ps.height:a,s=r.aspect,l=r.maxHeight,u=Rl(o)?e:Number(o),c=Rl(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}},kse={width:0,height:0,overflow:"visible"},_se={width:0,overflowX:"visible"},Cse={height:0,overflowY:"visible"},Ase={},g7=e=>{var t=e.width,r=e.height,n=Rl(t),o=Rl(r);return n&&o?kse:n?_se:o?Cse:Ase};function h7(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Ps.width,a=Ps.height):o===void 0?o=n&&n>0?void 0:Ps.width:a===void 0&&(a=n&&n>0?void 0:Ps.height),{width:o,height:a}}var Ese=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function _S(){return _S=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 zse(o)?ep.createElement(b7.Provider,{value:o},t):null}var bv=()=>(0,yo.useContext)(b7),Bse=(0,yo.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Ps.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Ps.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?Ps.debounce:p,m=e.id,y=e.className,x=e.onResize,h=e.style,g=h===void 0?{}:h,v=$se(e,Ese),b=(0,yo.useRef)(null),S=(0,yo.useRef)();S.current=x,(0,yo.useImperativeHandle)(t,()=>b.current);var w=(0,yo.useState)({containerWidth:o.width,containerHeight:o.height}),_=Pse(w,2),k=_[0],A=_[1],C=(0,yo.useCallback)((N,O)=>{A(j=>{var T=Math.round(N),D=Math.round(O);return j.containerWidth===T&&j.containerHeight===D?j:{containerWidth:T,containerHeight:D}})},[]);(0,yo.useEffect)(()=>{if(b.current==null||typeof ResizeObserver>"u")return Sa;var N=M=>{var K,V=M[0];if(V!=null){var L=V.contentRect,G=L.width,W=L.height;C(G,W),(K=S.current)===null||K===void 0||K.call(S,G,W)}};f>0&&(N=$O(N,f,{trailing:!0,leading:!1}));var O=new ResizeObserver(N),j=b.current.getBoundingClientRect(),T=j.width,D=j.height;return C(T,D),O.observe(b.current),()=>{O.disconnect()}},[C,f]);var E=k.containerWidth,I=k.containerHeight;Jm(!r||r>0,"The aspect(%s) must be greater than zero.",r);var Q=LO(E,I,{width:a,height:i,aspect:r,maxHeight:c}),$=Q.calculatedWidth,F=Q.calculatedHeight;return Jm(E<0||I<0||$!=null&&$>0||F!=null&&F>0,`The width(%s) and height(%s) of chart should be greater than 0, + H`).concat(Yi,"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 ka.createElement("path",{stroke:"none",fill:s,d:"M0,".concat(Yi/8,"h").concat(Yi,"v").concat(Yi*3/4,"h").concat(-Yi,"z"),className:"recharts-legend-icon"});if(ka.isValidElement(t.legendIcon)){var u=xz({},t);return delete u.legendIcon,ka.cloneElement(t.legendIcon,u)}return ka.createElement(iO,{fill:s,cx:o,cy:o,size:Yi,sizeType:"diameter",type:l})}function kae(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:Yi,height:Yi},u={display:n==="horizontal"?"inline-block":"block",marginRight:10,whiteSpace:"nowrap"},c={display:"inline-block",verticalAlign:"middle",marginRight:4};return t.map((d,p)=>{var f,m,y=d.formatter||o,x=bt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?xz({},s):{};h.color=d.inactive?a:h.color||d.color,(f=h.whiteSpace)!==null&&f!==void 0||(h.whiteSpace="normal"),(m=h.overflowWrap)!==null&&m!==void 0||(h.overflowWrap="break-word");var g=y?y(d.value,d,p):d.value;return ka.createElement("li",xw({className:x,style:u,key:"legend-item-".concat(p)},nu(e,d,p)),ka.createElement(iv,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},ka.createElement(Sae,{data:d,iconType:i,inactiveColor:a})),ka.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var bz=e=>{var t=nr(e,bae),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 ka.createElement("ul",{className:"recharts-default-legend",style:a},ka.createElement(kae,xw({},t,{payload:r})))};function wz(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function ou(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var ww="[object RegExp]",Fm="[object String]",Um="[object Number]",Wm="[object Boolean]",Sw="[object Arguments]",kw="[object Symbol]",_w="[object Date]",Cw="[object Map]",Aw="[object Set]",Ew="[object Array]",Cz="[object Function]",Nw="[object ArrayBuffer]",Hm="[object Object]",Az="[object Error]",Tw="[object DataView]",Ow="[object Uint8Array]",Pw="[object Uint8ClampedArray]",Mw="[object Uint16Array]",Iw="[object Uint32Array]",Ez="[object BigUint64Array]",Dw="[object Int8Array]",jw="[object Int16Array]",$w="[object Int32Array]",Nz="[object BigInt64Array]",Lw="[object Float32Array]",zw="[object Float64Array]";var sO=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function fv(e){return typeof sO.Buffer<"u"&&sO.Buffer.isBuffer(e)}function Tz(e,t){return Sc(e,void 0,e,new Map,t)}function Sc(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{}):lO(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:lO(o,a,n,u,!1)},new Map,!0)}function lO(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return Cae(e,t,r,n);case"function":return Object.keys(t).length>0?lO(e,{...t},r,n,o):kc(e,t);default:return Bw(e)?o?typeof t=="string"?t==="":!0:kc(e,t):kc(e,t)}}function Cae(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return Pz(e,t,r,n);if(t instanceof Map)return Aae(e,t,r,n);if(t instanceof Set)return Eae(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 Mz(e){return e=Oz(e),t=>Fw(t,e)}function Iz(e,t){return Tz(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(ou(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),Xi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case Um:case Fm:case Wm:{let s=new e.constructor(e?.valueOf());return Xi(s,e),s}case Sw:{let s={};return Xi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function Dz(e){return Iz(e)}var Nae=/^(?:0|[1-9]\d*)$/;function Uw(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function Ww(e){return e!=null&&typeof e!="function"&&Bz(e.length)}function Fz(e){return typeof e=="object"&&e!==null}function Uz(e){return Fz(e)&&Ww(e)}function Hw(e,t=bw){return Uz(e)?wz(Array.from(e),Sz(zz(t),1)):[]}function qw(e,t,r){return t===!0?Hw(e,r):typeof t=="function"?Hw(e,t):e}var Jz=Z(Xz()),gv=Z(Q());var Zz=Z(Q()),mv=(0,Zz.createContext)(null);var Vae=e=>e,jt=()=>{var e=(0,gv.useContext)(mv);return e?e.store.dispatch:Vae},Vw=()=>{},Gae=()=>Vw,Yae=(e,t)=>e===t;function $e(e){var t=(0,gv.useContext)(mv),r=(0,gv.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:Vw,[t,e]);return(0,Jz.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Gae,t?t.store.getState:Vw,t?t.store.getState:Vw,r,Yae)}function Xae(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function Zae(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 Qz=e=>Array.isArray(e)?e:[e];function Jae(e){let t=Array.isArray(e[0])?e[0]:e;return Zae(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Qae(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Rae:WeakRef,eB=eie(),tie=0,Rz=1;function Gw(){return{s:tie,v:void 0,o:null,p:null}}function rie(e){return e instanceof eB?e.deref():e}function tB(e,t={}){let r=Gw(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=Gw(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function nie(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()),Xae(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=tB,argsMemoizeOptions:m=[]}=c,y=Qz(p),x=Qz(m),h=Jae(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,b=f(function(){i++;let S=Qae(h,arguments);return s=g.apply(null,S),s},...x);return Object.assign(b,{resultFunc:u,memoizedResultFunc:g,dependencies:h,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>s,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:d,argsMemoize:f})};return Object.assign(n,{withTypes:()=>n}),n}var se=nie(tB);function rB(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=nB(e),o=nB(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function Yw(e){return typeof e=="symbol"||e instanceof Symbol}var oie=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,aie=/^\w*$/;function aB(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||Yw(e)?!0:typeof e=="string"&&(aie.test(e)||!oie.test(e))||t!=null&&Object.hasOwn(t,e)}function iB(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)||aB(s)?s:{key:s,path:Om(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 au(e,...t){let r=t.length;return r>1&&hv(e,t[0],t[1])?t=[]:r>2&&hv(t[0],t[1],t[2])&&(t=[t[0]]),iB(e,rB(t),["asc"])}var dO=e=>e.legend.settings,sB=e=>e.legend.size,iie=e=>e.legend.payload,lB=se([iie,dO],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?au(n,r):n});function uB(){return $e(lB)}var iu=Z(Q());function sie(e,t){return die(e)||cie(e,t)||uie(e,t)||lie()}function lie(){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 uie(e,t){if(e){if(typeof e=="string")return cB(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)?cB(e,t):void 0}}function cB(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rXw||Math.abs(e.left-t.left)>Xw||Math.abs(e.top-t.top)>Xw||Math.abs(e.width-t.width)>Xw}function pB(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function Zw(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,iu.useState)({height:0,left:0,top:0,width:0}),r=sie(t,2),n=r[0],o=r[1],a=(0,iu.useRef)(null),i=(0,iu.useRef)(n);i.current=n;var s=(0,iu.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=pB(l);if(dB(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=pB(l);dB(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,iu.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var N7=Z(Q());function Ro(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 pie=typeof Symbol=="function"&&Symbol.observable||"@@observable",fB=pie,pO=()=>Math.random().toString(36).substring(7).split("").join("."),fie={INIT:`@@redux/INIT${pO()}`,REPLACE:`@@redux/REPLACE${pO()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${pO()}`},Jw=fie;function Qw(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 fO(e,t,r){if(typeof e!="function")throw new Error(Ro(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Ro(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Ro(1));return r(fO)(e,t)}let n=e,o=t,a=new Map,i=a,s=0,l=!1;function u(){i===a&&(i=new Map,a.forEach((x,h)=>{i.set(h,x)}))}function c(){if(l)throw new Error(Ro(3));return o}function d(x){if(typeof x!="function")throw new Error(Ro(4));if(l)throw new Error(Ro(5));let h=!0;u();let g=s++;return i.set(g,x),function(){if(h){if(l)throw new Error(Ro(6));h=!1,u(),i.delete(g),a=null}}}function p(x){if(!Qw(x))throw new Error(Ro(7));if(typeof x.type>"u")throw new Error(Ro(8));if(typeof x.type!="string")throw new Error(Ro(17));if(l)throw new Error(Ro(9));try{l=!0,o=n(o,x)}finally{l=!1}return(a=i).forEach(g=>{g()}),x}function f(x){if(typeof x!="function")throw new Error(Ro(10));n=x,p({type:Jw.REPLACE})}function m(){let x=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(Ro(11));function g(){let b=h;b.next&&b.next(c())}return g(),{unsubscribe:x(g)}},[fB](){return this}}}return p({type:Jw.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[fB]:m}}function mie(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:Jw.INIT})>"u")throw new Error(Ro(12));if(typeof r(void 0,{type:Jw.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Ro(13))})}function Rw(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let x=l&&l.type;throw new Error(Ro(14))}c[p]=y,u=u||y!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function yv(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function mB(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(Ro(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=yv(...s)(o.dispatch),{...o,dispatch:a}}}function mO(e){return Qw(e)&&"type"in e&&typeof e.type=="string"}var kB=Symbol.for("immer-nothing"),gB=Symbol.for("immer-draftable"),ia=Symbol.for("immer-state");function Os(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var hi=Object,Vm=hi.getPrototypeOf,nS="constructor",uS="prototype",vO="configurable",oS="enumerable",tS="writable",vv="value",sl=e=>!!e&&!!e[ia];function yi(e){return e?_B(e)||dS(e)||!!e[gB]||!!e[nS]?.[gB]||pS(e)||fS(e):!1}var gie=hi[uS][nS].toString(),hB=new WeakMap;function _B(e){if(!e||!AO(e))return!1;let t=Vm(e);if(t===null||t===hi[uS])return!0;let r=hi.hasOwnProperty.call(t,nS)&&t[nS];if(r===Object)return!0;if(!Km(r))return!1;let n=hB.get(r);return n===void 0&&(n=Function.toString.call(r),hB.set(r,n)),n===gie}function cS(e,t,r=!0){wv(e)===0?(r?Reflect.ownKeys(e):hi.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function wv(e){let t=e[ia];return t?t.type_:dS(e)?1:pS(e)?2:fS(e)?3:0}var gO=(e,t,r=wv(e))=>r===2?e.has(t):hi[uS].hasOwnProperty.call(e,t),xO=(e,t,r=wv(e))=>r===2?e.get(t):e[t],aS=(e,t,r,n=wv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function hie(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var dS=Array.isArray,pS=e=>e instanceof Map,fS=e=>e instanceof Set,AO=e=>typeof e=="object",Km=e=>typeof e=="function",hO=e=>typeof e=="boolean";function yie(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var su=e=>e.copy_||e.base_;var EO=e=>e.modified_?e.copy_:e.base_;function bO(e,t){if(pS(e))return new Map(e);if(fS(e))return new Set(e);if(dS(e))return Array[uS].slice.call(e);let r=_B(e);if(t===!0||t==="class_only"&&!r){let n=hi.getOwnPropertyDescriptors(e);delete n[ia];let o=Reflect.ownKeys(n);for(let a=0;a1&&hi.defineProperties(e,{set:eS,add:eS,clear:eS,delete:eS}),hi.freeze(e),t&&cS(e,(r,n)=>{NO(n,!0)},!1)),e}function vie(){Os(2)}var eS={[vv]:vie};function mS(e){return e===null||!AO(e)?!0:hi.isFrozen(e)}var iS="MapSet",wO="Patches",yB="ArrayMethods",CB={};function Rd(e){let t=CB[e];return t||Os(0,e),t}var vB=e=>!!CB[e];var xv,AB=()=>xv,xie=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:vB(iS)?Rd(iS):void 0,arrayMethodsPlugin_:vB(yB)?Rd(yB):void 0});function xB(e,t){t&&(e.patchPlugin_=Rd(wO),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function SO(e){kO(e),e.drafts_.forEach(bie),e.drafts_=null}function kO(e){e===xv&&(xv=e.parent_)}var bB=e=>xv=xie(xv,e);function bie(e){let t=e[ia];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function wB(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ia].modified_&&(SO(t),Os(4)),yi(e)&&(e=SB(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ia].base_,e,t)}else e=SB(t,r);return wie(t,e,!0),SO(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==kB?e:void 0}function SB(e,t){if(mS(t))return t;let r=t[ia];if(!r)return sS(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);TB(r,e)}return r.copy_}function wie(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&NO(t,r)}function EB(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var gS=(e,t)=>e.scope_===t,Sie=[];function NB(e,t,r,n){let o=su(e),a=e.type_;if(n!==void 0&&xO(o,n,a)===t){aS(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;cS(o,(l,u)=>{if(sl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??Sie;for(let s of i)aS(o,s,r,a)}function kie(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!gS(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=EO(a);NB(e,a.draft_??a,i,r),TB(a,o)})}function TB(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)}EB(e)}}function _ie(e,t,r){let{scope_:n}=e;if(sl(r)){let o=r[ia];gS(o,n)&&o.callbacks_.push(function(){rS(e);let i=EO(o);NB(e,r,i,t)})}else yi(r)&&e.callbacks_.push(function(){let a=su(e);e.type_===3?a.has(r)&&sS(r,n.handledSet_,n):xO(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&sS(xO(e.copy_,t,e.type_),n.handledSet_,n)})}function sS(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||sl(e)||t.has(e)||!yi(e)||mS(e)||(t.add(e),cS(e,(n,o)=>{if(sl(o)){let a=o[ia];if(gS(a,r)){let i=EO(a);aS(e,n,i,e.type_),EB(a)}}else yi(o)&&sS(o,t,r)})),e}function Cie(e,t){let r=dS(e),n={type_:r?1:0,scope_:t?t.scope_:AB(),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=lS;r&&(o=[n],a=bv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var lS={get(e,t){if(t===ia)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=su(e);if(!gO(o,t,e.type_))return Eie(e,o,t);let a=o[t];if(e.finalized_||!yi(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&yie(t))return a;if(a===yO(e.base_,t)||Aie(e,t,a)){rS(e);let i=e.type_===1?+t:t,s=CO(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in su(e)},ownKeys(e){return Reflect.ownKeys(su(e))},set(e,t,r){let n=OB(su(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=yO(su(e),t),a=o?.[ia];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(hie(r,o)&&(r!==void 0||gO(e.base_,t,e.type_)))return!0;rS(e),_O(e)}return e.copy_[t]===r&&(r!==void 0||gO(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),_ie(e,t,r)),!0},deleteProperty(e,t){return rS(e),yO(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),_O(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=su(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[tS]:!0,[vO]:e.type_!==1||t!=="length",[oS]:n[oS],[vv]:r[t]}},defineProperty(){Os(11)},getPrototypeOf(e){return Vm(e.base_)},setPrototypeOf(){Os(12)}},bv={};for(let e in lS){let t=lS[e];bv[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}bv.deleteProperty=function(e,t){return bv.set.call(this,e,t,void 0)};bv.set=function(e,t,r){return lS.set.call(this,e[0],t,r,e[0])};function yO(e,t){let r=e[ia];return(r?su(r):e)[t]}function Aie(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!yi(r)||r[ia]?!1:e.baseRefs_.has(r)}function Eie(e,t,r){let n=OB(t,r);return n?vv in n?n[vv]:n.get?.call(e.draft_):void 0}function OB(e,t){if(!(t in e))return;let r=Vm(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Vm(r)}}function _O(e){e.modified_||(e.modified_=!0,e.parent_&&_O(e.parent_))}function rS(e){e.copy_||(e.assigned_=new Map,e.copy_=bO(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Nie=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Km(t)&&!Km(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Km(r)||Os(6),n!==void 0&&!Km(n)&&Os(7);let o;if(yi(t)){let a=bB(this),i=CO(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?SO(a):kO(a)}return xB(a,n),wB(o,a)}else if(!t||!AO(t)){if(o=r(t),o===void 0&&(o=t),o===kB&&(o=void 0),this.autoFreeze_&&NO(o,!0),n){let a=[],i=[];Rd(wO).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else Os(1,t)},this.produceWithPatches=(t,r)=>{if(Km(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]},hO(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),hO(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),hO(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){yi(e)||Os(8),sl(e)&&(e=ea(e));let t=bB(this),r=CO(t,e,void 0);return r[ia].isManual_=!0,kO(t),r}finishDraft(e,t){let r=e&&e[ia];(!r||!r.isManual_)&&Os(9);let{scope_:n}=r;return xB(n,t),wB(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=Rd(wO).applyPatches_;return sl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function CO(e,t,r,n){let[o,a]=pS(t)?Rd(iS).proxyMap_(t,r):fS(t)?Rd(iS).proxySet_(t,r):Cie(t,r);return(r?.scope_??AB()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?kie(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 ea(e){return sl(e)||Os(10,e),PB(e)}function PB(e){if(!yi(e)||mS(e))return e;let t=e[ia],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=bO(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=bO(e,!0);return cS(r,(o,a)=>{aS(r,o,PB(a))},n),t&&(t.finalized_=!1),r}var Tie=new Nie,TO=Tie.produce;var Zt=e=>e;function MB(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var IB=MB(),DB=MB;var Oie=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?yv:yv.apply(null,arguments)},rMe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},Pie=e=>e&&typeof e.match=="function";function vo(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(vi(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=>mO(n)&&n.type===e,r}var WB=class Sv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,Sv.prototype)}static get[Symbol.species](){return Sv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new Sv(...t[0].concat(this)):new Sv(...t.concat(this))}};function jB(e){return yi(e)?TO(e,()=>{}):e}function hS(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function Mie(e){return typeof e=="boolean"}var Iie=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new WB;return r&&(Mie(r)?i.push(IB):i.push(DB(r.extraArgument))),i},HB="RTK_autoBatch",Ir=()=>e=>({payload:e,meta:{[HB]:!0}}),$B=e=>t=>{setTimeout(t,e)},Die=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},IO=(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?Die(window.requestAnimationFrame,100):$B(10):e.type==="callback"?e.queueNotification:$B(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?.[HB],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},jie=e=>function(r){let{autoBatch:n=!0}=r??{},o=new WB(e);return n&&o.push(IO(typeof n=="object"?n:void 0)),o};function qB(e){let t=Iie(),{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(Qw(r))l=Rw(r);else throw new Error(vi(1));let u;typeof n=="function"?u=n(t):u=t();let c=yv;o&&(c=Oie({trace:!1,...typeof o=="object"&&o}));let d=mB(...u),p=jie(d),f=typeof s=="function"?s(p):p(),m=c(...f);return fO(l,i,m)}function KB(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(vi(28));if(s in t)throw new Error(vi(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 $ie(e){return typeof e=="function"}function Lie(e,t){let[r,n,o]=KB(t),a;if($ie(e))a=()=>jB(e());else{let s=jB(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(sl(c)){let f=d(c,l);return f===void 0?c:f}else{if(yi(c))return TO(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 zie=(e,t)=>Pie(e)?e.match(t):e(t);function Bie(...e){return t=>e.some(r=>zie(r,t))}var Fie="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",VB=(e=21)=>{let t="",r=e;for(;r--;)t+=Fie[Math.random()*64|0];return t},Uie=["name","message","stack","code"],OO=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},LB=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},Wie=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Uie)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},zB="External signal was aborted",Hie=(()=>{function e(t,r,n){let o=vo(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=vo(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=vo(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||Wie)(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):VB(),m=new AbortController,y,x;function h(v){x=v,m.abort()}u&&(u.aborted?h(zB):u.addEventListener("abort",()=>h(zB),{once:!0}));let g=(async function(){let v;try{let k=n?.condition?.(l,{getState:d,extra:p});if(Kie(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,_)=>{y=()=>{_({name:"AbortError",message:x||"Aborted"})},m.signal.addEventListener("abort",y,{once:!0})});c(a(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),v=await Promise.race([S,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((w,_)=>new OO(w,_)),fulfillWithValue:((w,_)=>new LB(w,_))})).then(w=>{if(w instanceof OO)throw w;return w instanceof LB?o(w.payload,f,l,w.meta):o(w,f,l)})])}catch(k){v=k instanceof OO?i(null,f,l,k.payload,k.meta):i(k,f,l)}finally{y&&m.signal.removeEventListener("abort",y)}return n&&!n.dispatchConditionRejection&&i.match(v)&&v.meta.condition||c(v),v})();return Object.assign(g,{abort:h,requestId:f,arg:l,unwrap(){return g.then(qie)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:Bie(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function qie(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function Kie(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var GB=Symbol.for("rtk-slice-createasyncthunk"),oMe={[GB]:Hie};function Vie(e,t){return`${e}/${t}`}function Gie({creators:e}={}){let t=e?.asyncThunk?.[GB];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(vi(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(Xie()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(v,b){let k=typeof v=="string"?v:v.type;if(!k)throw new Error(vi(12));if(k in l.sliceCaseReducersByType)throw new Error(vi(13));return l.sliceCaseReducersByType[k]=b,u},addMatcher(v,b){return l.sliceMatchers.push({matcher:v,reducer:b}),u},exposeAction(v,b){return l.actionCreators[v]=b,u},exposeCaseReducer(v,b){return l.sliceCaseReducersByName[v]=b,u}};s.forEach(v=>{let b=i[v],k={reducerName:v,type:Vie(o,v),createNotation:typeof n.reducers=="function"};Jie(b)?Rie(k,b,u,t):Zie(k,b,u)});function c(){let[v={},b=[],k=void 0]=typeof n.extraReducers=="function"?KB(n.extraReducers):[n.extraReducers],S={...v,...l.sliceCaseReducersByType};return Lie(n.initialState,w=>{for(let _ in S)w.addCase(_,S[_]);for(let _ of l.sliceMatchers)w.addMatcher(_.matcher,_.reducer);for(let _ of b)w.addMatcher(_.matcher,_.reducer);k&&w.addDefaultCase(k)})}let d=v=>v,p=new Map,f=new WeakMap,m;function y(v,b){return m||(m=c()),m(v,b)}function x(){return m||(m=c()),m.getInitialState()}function h(v,b=!1){function k(w){let _=w[v];return typeof _>"u"&&b&&(_=hS(f,k,x)),_}function S(w=d){let _=hS(p,b,()=>new WeakMap);return hS(_,w,()=>{let A={};for(let[C,E]of Object.entries(n.selectors??{}))A[C]=Yie(E,w,()=>hS(f,w,x),b);return A})}return{reducerPath:v,getSelectors:S,get selectors(){return S(k)},selectSlice:k}}let g={name:o,reducer:y,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:x,...h(a),injectInto(v,{reducerPath:b,...k}={}){let S=b??a;return v.inject({reducerPath:S,reducer:y},k),{...g,...h(S,!0)}}};return g}}function Yie(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 Cr=Gie();function Xie(){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 Zie({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!Qie(n))throw new Error(vi(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?vo(e,i):vo(e))}function Jie(e){return e._reducerDefinitionType==="asyncThunk"}function Qie(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Rie({type:e,reducerName:t},r,n,o){if(!o)throw new Error(vi(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||yS,pending:s||yS,rejected:l||yS,settled:u||yS})}function yS(){}var ese="task",YB="listener",XB="completed",DO="cancelled",tse=`task-${DO}`,rse=`task-${XB}`,PO=`${YB}-${DO}`,nse=`${YB}-${XB}`,bS=class{constructor(e){this.code=e,this.message=`${ese} ${DO} (reason: ${e})`}code;name="TaskAbortError";message},jO=(e,t)=>{if(typeof e!="function")throw new TypeError(vi(32))},vS=()=>{},ZB=(e,t=vS)=>(e.catch(t),e),JB=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ep=e=>{if(e.aborted)throw new bS(e.reason)};function QB(e,t){let r=vS;return new Promise((n,o)=>{let a=()=>o(new bS(e.reason));if(e.aborted){a();return}r=JB(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=vS})}var ose=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof bS?"cancelled":"rejected",error:r}}finally{t?.()}},xS=e=>t=>ZB(QB(e,t).then(r=>(ep(e),r))),RB=e=>{let t=xS(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:Gm}=Object,BB={},wS="listenerMiddleware",ase=(e,t)=>{let r=n=>JB(e,()=>n.abort(e.reason));return(n,o)=>{jO(n,"taskExecutor");let a=new AbortController;r(a);let i=ose(async()=>{ep(e),ep(a.signal);let s=await n({pause:xS(a.signal),delay:RB(a.signal),signal:a.signal});return ep(a.signal),s},()=>a.abort(rse));return o?.autoJoin&&t.push(i.catch(vS)),{result:xS(e)(i),cancel(){a.abort(tse)}}}},ise=(e,t)=>{let r=async(n,o)=>{ep(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 QB(t,Promise.race(s));return ep(t),l}finally{a()}};return((n,o)=>ZB(r(n,o)))},e7=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=vo(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(vi(21));return jO(a,"options.listener"),{predicate:o,type:t,effect:a}},t7=Gm(e=>{let{type:t,predicate:r,effect:n}=e7(e);return{id:VB(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(vi(22))}}},{withTypes:()=>t7}),FB=(e,t)=>{let{type:r,effect:n,predicate:o}=e7(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},MO=e=>{e.pending.forEach(t=>{t.abort(PO)})},sse=(e,t)=>()=>{for(let r of t.keys())MO(r);e.clear()},UB=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},r7=Gm(vo(`${wS}/add`),{withTypes:()=>r7}),lse=vo(`${wS}/removeAll`),n7=Gm(vo(`${wS}/remove`),{withTypes:()=>n7}),use=(...e)=>{console.error(`${wS}/error`,...e)},lu=(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=use}=e;jO(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&MO(f)}),l=(f=>{let m=FB(t,f)??t7(f);return s(m)});Gm(l,{withTypes:()=>l});let u=f=>{let m=FB(t,f);return m&&(m.unsubscribe(),f.cancelActive&&MO(m)),!!m};Gm(u,{withTypes:()=>u});let c=async(f,m,y,x)=>{let h=new AbortController,g=ise(l,h.signal),v=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,Gm({},y,{getOriginalState:x,condition:(b,k)=>g(b,k).then(Boolean),take:g,delay:RB(h.signal),pause:xS(h.signal),extra:a,signal:h.signal,fork:ase(h.signal,v),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((b,k,S)=>{b!==h&&(b.abort(PO),S.delete(b))})},cancel:()=>{h.abort(PO),f.pending.delete(h)},throwIfCancelled:()=>{ep(h.signal)}})))}catch(b){b instanceof bS||UB(i,b,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(nse),o(f),f.pending.delete(h)}},d=sse(t,r);return{middleware:f=>m=>y=>{if(!mO(y))return m(y);if(r7.match(y))return l(y.payload);if(lse.match(y)){d();return}if(n7.match(y))return u(y.payload);let x=f.getState(),h=()=>{if(x===BB)throw new Error(vi(23));return x},g;try{if(g=m(y),t.size>0){let v=f.getState(),b=Array.from(t.values());for(let k of b){let S=!1;try{S=k.predicate(y,v,x)}catch(w){S=!1,UB(i,w,{raisedBy:"predicate"})}S&&c(k,y,f,h)}}}finally{x=BB}return g},startListening:l,stopListening:u,clearListeners:d}};function vi(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 cse={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},o7=Cr({name:"chartLayout",initialState:cse,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}}}),SS=o7.actions,$O=SS.setMargin,a7=SS.setLayout,i7=SS.setChartSize,s7=SS.setScale;var l7=o7.reducer;function kS(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function Ot(e){return Number.isFinite(e)}function qa(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function u7(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 Ka(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(lv(l)){if(l==="top"&&je(e.top))return Ka(Ka({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&je(e.bottom))return Ka(Ka({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&je(e.left))return Ka(Ka({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&je(e.right))return Ka(Ka({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&je(e[a]))return Ka(Ka({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&je(e[i]))return Ka(Ka({},e),{},{[i]:e[i]+(o||0)})}return e},sa=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",LO=(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},zO=(e,t,r)=>{if(!e)return null;var n=e.duplicateDomain,o=e.type,a=e.range,i=e.scale,s=e.realScaleType,l=e.isCategorical,u=e.categoricalDomain,c=e.tickCount,d=e.ticks,p=e.niceTicks,f=e.axisType;if(!i)return null;var m=s==="scaleBand"&&i.bandwidth?i.bandwidth()/2:2,y=(t||r)&&o==="category"&&i.bandwidth?i.bandwidth()/m:0;if(y=f==="angleAxis"&&a&&a.length>=2?Zr(a[0]-a[1])*2*y:y,t&&(d||p)){var x=(d||p||[]).map((h,g)=>{var v=n?n.indexOf(h):h,b=i.map(v);return Ot(b)?{coordinate:b+y,value:h,offset:y,index:g}:null}).filter(Ao);return x}return l&&u?u.map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(Ao):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(Ao):i.domain().map((h,g)=>{var v=i.map(h);return Ot(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(Ao)},d7=(e,t)=>{if(!t||t.length!==2||!je(t[0])||!je(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(!je(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)}}}},gse=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)}}}},hse={sign:mse,expand:rO,none:gi,silhouette:nO,wiggle:oO,positive:gse},p7=(e,t,r)=>{var n,o=(n=hse[r])!==null&&n!==void 0?n:gi,a=tO().keys(t).value((s,l)=>Number(Ht(s,l,0))).order(zm).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Ht(e[c],t[l],0);Array.isArray(d)&&d.length===2&&je(d[0])&&je(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function _S(e){return e==null?void 0:String(e)}function Ym(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&&!ar(o[t.dataKey])){var s=uw(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=Ht(o,ar(i)?t.dataKey:i),u=t.scale.map(l);return je(u)?u:null}var BO=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=Ht(a,t.dataKey,t.scale.domain()[i]);if(ar(s))return null;var l=t.scale.map(s);return je(l)?l-o/2+n:null},f7=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]},yse=e=>{var t=e.flat(2).filter(je);return[Math.min(...t),Math.max(...t)]},vse=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],m7=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return vse(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=kS(u,t,r),d=yse(c);return!Ot(d[0])||!Ot(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]))},FO=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,UO=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Zi=(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=au(t,y=>y.coordinate),a=[],i=0,s=1,l=o.length;sp&&(f=Math.min(m,f));return f===1/0?0:f}return r?void 0:0};function WO(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return Ka(Ka({},t),{},{dataKey:r,payload:n,value:o,name:a})}function xi(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var g7=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},h7=(e,t)=>t==="centric"?e.angle:e.radius;var qo=e=>e.layout.width,Ko=e=>e.layout.height,y7=e=>e.layout.scale,Xm=e=>e.layout.margin;var Zm=se(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Jm=se(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var CS="data-recharts-item-index",AS="data-recharts-item-id",tp=60,kv=30;function v7(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ES(e){for(var t=1;te.brush.height;function kse(e){var t=Jm(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:tp;return r+o}return r},0)}function _se(e){var t=Jm(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:tp;return r+o}return r},0)}function Cse(e){var t=Zm(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:kv;return r+o}return r},0)}function Ase(e){var t=Zm(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:kv;return r+o}return r},0)}var Fr=se([qo,Ko,Xm,Sse,kse,_se,Cse,Ase,dO,sB],(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=ES(ES({},d),c),f=p.bottom;p.bottom+=n,p=c7(p,l,u);var m=e-p.left-p.right,y=t-p.top-p.bottom;return ES(ES({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(y,0)})}),NS=se(Fr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Qm=se(qo,Ko,(e,t)=>({x:0,y:0,width:e,height:t}));var Ese=Z(Q()),TS=Z(Q()),Nse=(0,TS.createContext)(null),Ar=()=>(0,TS.useContext)(Nse)!=null;var Rm=e=>e.brush,rp=se([Rm,Fr,Xm],(e,t,r)=>({height:e.height,x:je(e.x)?e.x:t.left,y:je(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:je(e.width)?e.width:t.width}));var np=Z(Q()),xo=Z(Q());function x7(e,t,{signal:r,edges:n}={}){let o,a=null,i=n!=null&&n.includes("leading"),s=n==null||n.includes("trailing"),l=()=>{a!==null&&(e.apply(o,a),o=void 0,a=null)},u=()=>{s&&l(),f()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},p=()=>{c!==null&&(clearTimeout(c),c=null)},f=()=>{p(),o=void 0,a=null},m=()=>{l()},y=function(...x){if(r?.aborted)return;o=this,a=x;let h=c==null;d(),i&&h&&l()};return y.schedule=d,y.cancel=f,y.flush=m,r?.addEventListener("abort",f,{once:!0}),y}function b7(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=x7(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 HO(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return b7(e,t,{leading:n,maxWait:t,trailing:o})}var Tse=!0,eg=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Ps={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},qO=(e,t,r)=>{var n=r.width,o=n===void 0?Ps.width:n,a=r.height,i=a===void 0?Ps.height:a,s=r.aspect,l=r.maxHeight,u=eu(o)?e:Number(o),c=eu(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}},Ose={width:0,height:0,overflow:"visible"},Pse={width:0,overflowX:"visible"},Mse={height:0,overflowY:"visible"},Ise={},w7=e=>{var t=e.width,r=e.height,n=eu(t),o=eu(r);return n&&o?Ose:n?Pse:o?Mse:Ise};function S7(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Ps.width,a=Ps.height):o===void 0?o=n&&n>0?void 0:Ps.width:a===void 0&&(a=n&&n>0?void 0:Ps.height),{width:o,height:a}}var Dse=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function OS(){return OS=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 Kse(o)?np.createElement(A7.Provider,{value:o},t):null}var _v=()=>(0,xo.useContext)(A7),Vse=(0,xo.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Ps.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Ps.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?Ps.debounce:p,m=e.id,y=e.className,x=e.onResize,h=e.style,g=h===void 0?{}:h,v=Hse(e,Dse),b=(0,xo.useRef)(null),k=(0,xo.useRef)();k.current=x,(0,xo.useImperativeHandle)(t,()=>b.current);var S=(0,xo.useState)({containerWidth:o.width,containerHeight:o.height}),w=zse(S,2),_=w[0],A=w[1],C=(0,xo.useCallback)((N,T)=>{A(D=>{var O=Math.round(N),j=Math.round(T);return D.containerWidth===O&&D.containerHeight===j?D:{containerWidth:O,containerHeight:j}})},[]);(0,xo.useEffect)(()=>{if(b.current==null||typeof ResizeObserver>"u")return Sa;var N=M=>{var H,G=M[0];if(G!=null){var z=G.contentRect,V=z.width,K=z.height;C(V,K),(H=k.current)===null||H===void 0||H.call(k,V,K)}};f>0&&(N=HO(N,f,{trailing:!0,leading:!1}));var T=new ResizeObserver(N),D=b.current.getBoundingClientRect(),O=D.width,j=D.height;return C(O,j),T.observe(b.current),()=>{T.disconnect()}},[C,f]);var E=_.containerWidth,I=_.containerHeight;eg(!r||r>0,"The aspect(%s) must be greater than zero.",r);var J=qO(E,I,{width:a,height:i,aspect:r,maxHeight:c}),$=J.calculatedWidth,U=J.calculatedHeight;return eg(E<0||I<0||$!=null&&$>0||U!=null&&U>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.`,$,F,a,i,l,u,r),ep.createElement("div",_S({id:m?"".concat(m):void 0,className:bt("recharts-responsive-container",y),style:v7(v7({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:b},v),ep.createElement("div",{style:g7({width:a,height:i})},ep.createElement(w7,{width:$,height:F},d)))}),kc=(0,yo.forwardRef)((e,t)=>{var r=bv();if(qa(r.width)&&qa(r.height))return e.children;var n=h7({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=LO(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return je(s)&&je(l)?ep.createElement(w7,{width:s,height:l},e.children):ep.createElement(Bse,_S({},e,{width:o,height:a,ref:t}))});var tp=()=>{var e,t=Ar(),r=$e(SS),n=$e(Rd),o=(e=$e(Zm))===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}},Fse={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},CS=()=>{var e;return(e=$e(Fr))!==null&&e!==void 0?e:Fse},Qm=()=>$e(Ho),Rm=()=>$e(qo),k7=()=>$e(e=>e.layout.margin),zt=e=>e.layout.layoutType,Va=()=>$e(zt),eg=()=>{var e=Va();if(e==="horizontal"||e==="vertical")return e},AS=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},_7=()=>$e(AS),C7=()=>{var e=Va();return e!==void 0},rp=e=>{var t=Dt(),r=Ar(),n=e.width,o=e.height,a=bv(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,S7.useEffect)(()=>{!r&&qa(i)&&qa(s)&&t(e7({width:i,height:s}))},[t,r,i,s]),null};var Use={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},A7=Cr({name:"legend",initialState:Use,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(Zt(t.payload))},prepare:Ir()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Ro(e).payload.indexOf(Zt(n));a>-1&&(e.payload[a]=Zt(o))},prepare:Ir()},removeLegendPayload:{reducer(e,t){var r=Ro(e).payload.indexOf(Zt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:Ir()}}}),wv=A7.actions,zO=wv.setLegendSize,E7=wv.setLegendSettings,BO=wv.addLegendPayload,FO=wv.replaceLegendPayload,UO=wv.removeLegendPayload;var N7=A7.reducer;var Kn=Z(J(),1),gle=Z(M7(),1);var Xse=Symbol.for("react.forward_ref");var Zse=Symbol.for("react.memo");var Jse=Xse,Qse=Zse;function Rse(e){e()}function ele(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Rse(()=>{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 I7={notify(){},get:()=>[]};function tle(e,t){let r,n=I7,o=0,a=!1;function i(y){c();let x=n.subscribe(y),h=!1;return()=>{h||(h=!0,x(),d())}}function s(){n.notify()}function l(){m.onStateChange&&m.onStateChange()}function u(){return a}function c(){o++,r||(r=t?t.addNestedSub(l):e.subscribe(l),n=ele())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=I7)}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 rle=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",nle=rle(),ole=()=>typeof navigator<"u"&&navigator.product==="ReactNative",ale=ole(),ile=()=>nle||ale?Kn.useLayoutEffect:Kn.useEffect,sle=ile();function D7(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function j7(e,t){if(D7(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=tle(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Kn.useMemo(()=>o.getState(),[o]);return sle(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Kn.createElement((r||fle).Provider,{value:a},t)}var $7=mle;var hle=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function yle(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function Ga(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(hle.has(n)){if(e[n]==null&&t[n]==null)continue;if(!j7(e[n],t[n]))return!1}else if(!yle(e[n],t[n]))return!1;return!0}var L7=ae([Ho,qo,Vm],(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 z7(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 vle=["contextPayload"];function WO(){return WO=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(E7({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function $le(e){var t=e.width,r=e.height,n=Dt();return(0,ES.useLayoutEffect)(()=>{n(zO({width:t,height:r}))},[n,t,r]),(0,ES.useLayoutEffect)(()=>()=>{n(zO({width:0,height:0}))},[n]),null}function Lle(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var zle={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function Ble(e){var t,r,n,o,a,i,s,l,u=nr(e,zle),c=e.layout&&e.layout!=="auto"?e.layout:Ple(u.position),d=nB(),p=H6(),f=k7(),m=$e(D=>Mle(D,u.position)),y=u.width,x=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||ov(u.position)),b=qw([d]),S=xle(b,2),w=S[0],_=S[1],k=Qm(),A=Rm();if(k==null||A==null||u.position!=null&&m==null)return null;var C=k-(f?.left||0)-(f?.right||0),E=Lle(c,x,y,C),I=u.position==null?null:ow({viewBox:m??{x:0,y:0,width:k,height:A},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),Q=Ile(u.position,(r=u.offset)!==null&&r!==void 0?r:0,w),$=c==="vertical"?((n=m?.width)!==null&&n!==void 0?n:0)/2:(o=m?.width)!==null&&o!==void 0?o:0,F=c==="horizontal"?((a=m?.height)!==null&&a!==void 0?a:0)/2:(i=m?.height)!==null&&i!==void 0?i:0,N=I?{width:"max-content",height:"max-content",maxWidth:$,maxHeight:F,overflowY:"auto",top:I.y+((s=Q.top)!==null&&s!==void 0?s:0),left:I.x+((l=Q.left)!==null&&l!==void 0?l:0),transform:z7(I.horizontalAnchor,I.verticalAnchor)}:Dle(h,u,f,k,A,w),O=g?h:tg(tg({position:"absolute",width:E?.width||y||"auto",height:E?.height||x||"auto"},N),h),j=g??p;if(j==null||d==null)return null;var T=bi.createElement("div",{className:"recharts-legend-wrapper",style:O,ref:_},bi.createElement(jle,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&bi.createElement($le,w),bi.createElement(Ole,WO({},u,{layout:c},E,{margin:f,chartWidth:k,chartHeight:A,contextPayload:d})));return(0,U7.createPortal)(T,j)}var NS=bi.memo(Ble,Ga);NS.displayName="Legend";var rs=Z(J()),gH=Z(J()),hH=Z(Rh());var Ms=Z(J());function HO(){return HO=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?rg.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?rg.labelStyle:a,s=e.payload,l=e.formatter,u=e.itemSorter,c=e.wrapperClassName,d=e.labelClassName,p=e.label,f=e.labelFormatter,m=e.accessibilityLayer,y=m===void 0?rg.accessibilityLayer:m,x=()=>{if(s&&s.length){var k={padding:0,margin:0},A=Xle(s,u),C=A.map((E,I)=>{if(!E||E.type==="none")return null;var Q=E.formatter||l||Yle,$=E.value,F=E.name,N=$,O=F;if(Q){var j=Q($,F,E,I,s);if(Array.isArray(j)){var T=Hle(j,2);N=T[0],O=T[1]}else if(j!=null)N=j;else return null}var D=kv(kv({},rg.itemStyle),{},{color:E.color||rg.itemStyle.color},o);return Ms.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(I),style:D},wa(O)?Ms.createElement("span",{className:"recharts-tooltip-item-name"},O):null,wa(O)?Ms.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Ms.createElement("span",{className:"recharts-tooltip-item-value"},N),Ms.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return Ms.createElement("ul",{className:"recharts-tooltip-item-list",style:k},C)}return null},h=kv(kv({},rg.contentStyle),n),g=kv({margin:0},i),v=!ar(p),b=v?p:"",S=bt("recharts-default-tooltip",c),w=bt("recharts-tooltip-label",d);v&&f&&s!==void 0&&s!==null&&(b=f(p,s));var _=y?{role:"status","aria-live":"assertive"}:{};return Ms.createElement("div",HO({className:S,style:h},_),Ms.createElement("p",{className:w,style:g},Ms.isValidElement(b)?b:"".concat(b)),x())};var _c=Z(J());var _v="recharts-tooltip-wrapper",Zle={visibility:"hidden"};function Jle(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return bt(_v,{["".concat(_v,"-right")]:je(r)&&t&&je(t.x)&&r>=t.x,["".concat(_v,"-left")]:je(r)&&t&&je(t.x)&&r=t.y,["".concat(_v,"-top")]:je(n)&&t&&je(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 fx?Math.max(c,p):Math.max(d,p)}function Qle(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 V7(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=K7({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=K7({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Qle({translateX:d,translateY:p,useTranslate3d:l})):c=Zle,{cssProperties:c,cssClasses:Jle({translateX:d,translateY:p,coordinate:r})}}var TS=Z(J());var Rle=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),Zi={devToolsEnabled:!0,isSsr:Rle()};function eue(e,t){return oue(e)||nue(e,t)||rue(e,t)||tue()}function tue(){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 rue(e,t){if(e){if(typeof e=="string")return G7(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)?G7(e,t):void 0}}function G7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rZi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=eue(e,2),r=t[0],n=t[1];return(0,TS.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 Y7(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 ng(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=lue(l,2),c=u[0],d=u[1];_c.useEffect(()=>{var h=g=>{if(g.key==="Escape"){var v,b,S,w;d({dismissed:!0,dismissedAtCoordinate:{x:(v=(b=e.coordinate)===null||b===void 0?void 0:b.x)!==null&&v!==void 0?v:0,y:(S=(w=e.coordinate)===null||w===void 0?void 0:w.y)!==null&&S!==void 0?S:0}})}};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[(t=e.coordinate)===null||t===void 0?void 0:t.x,(r=e.coordinate)===null||r===void 0?void 0:r.y]),c.dismissed&&(((n=(o=e.coordinate)===null||o===void 0?void 0:o.x)!==null&&n!==void 0?n:0)!==c.dismissedAtCoordinate.x||((a=(i=e.coordinate)===null||i===void 0?void 0:i.y)!==null&&a!==void 0?a:0)!==c.dismissedAtCoordinate.y)&&d(ng(ng({},c),{},{dismissed:!1}));var p=V7({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset=="number"?e.offset:e.offset.x,offsetTop:typeof e.offset=="number"?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:e.lastBoundingBox,useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),f=p.cssClasses,m=p.cssProperties,y=e.hasPortalFromProps?{}:ng(ng({transition:fue({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),x=ng(ng({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return _c.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:x,ref:e.innerRef},e.children)}var Z7=_c.memo(mue);var PS=()=>{var e;return(e=$e(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var y_=Z(J()),Pg=Z(J());var r9=Z(J());function qO(){return qO=Object.assign?Object.assign.bind():function(e){for(var t=1;tOt(e.x)&&Ot(e.y),e9=e=>e.base!=null&&MS(e.base)&&MS(e),Cv=e=>e.x,Av=e=>e.y,vue=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(tu(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=R7["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return R7[r]||bc},t9={connectNulls:!1,type:"linear"},xue=e=>{var t=e.type,r=t===void 0?t9.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?t9.connectNulls:s,u=vue(r,i),c=l?o.filter(MS):o;if(Array.isArray(a)){var d,p=o.map((h,g)=>Q7(Q7({},h),{},{base:a[g]}));i==="vertical"?d=Pm().y(Av).x1(Cv).x0(h=>h.base.x):d=Pm().x(Cv).y1(Av).y0(h=>h.base.y);var f=d.defined(e9).curve(u),m=l?p.filter(e9):p;return f(m)}var y;i==="vertical"&&je(a)?y=Pm().y(Av).x1(Cv).x0(a):je(a)?y=Pm().x(Cv).y1(Av).y0(a):y=iv().x(Cv).y(Av);var x=y.defined(MS).curve(u);return x(c)},ll=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=Va();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?xue(i):n;return r9.createElement("path",qO({},mn(e),$m(e),{className:bt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var o9=Z(J());var bue=["x","y","top","left","width","height","className"];function KO(){return KO=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),a9=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=Cue(e,bue),y=wue({x:r,y:o,top:i,left:l,width:c,height:p},m);return!je(r)||!je(o)||!je(c)||!je(p)||!je(i)||!je(l)?null:o9.createElement("path",KO({},gn(y),{className:bt("recharts-cross",f),d:Eue(r,o,c,p,i,l)}))};function i9(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 zS=Z(J()),Ji=Z(J());var Ev=Z(J());var IS=1e-4,u9=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],c9=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),s9=(e,t)=>r=>{var n=u9(e,t);return c9(n,r)},Nue=(e,t)=>r=>{var n=u9(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return c9(o,r)},Tue=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]]},Oue=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=s9(e,r),a=s9(t,n),i=Nue(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,p=0;p<8;++p){var f=o(d)-c,m=i(d);if(Math.abs(f-c)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,o=t.damping,a=o===void 0?8:o,i=t.dt,s=i===void 0?16.67:i,l=1,u=[0],c=0,d=0,p=1e4,f=0;f{var g,v,b;if(h<=0)return 0;if(h>=1)return l;var S=h*x,w=Math.floor(S),_=S-w;return((g=u[w])!==null&&g!==void 0?g:0)+(((v=u[w+1])!==null&&v!==void 0?v:0)-((b=u[w])!==null&&b!==void 0?b:0))*_}},d9=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return l9(e);case"spring":return Mue();default:if(e.split("(")[0]==="cubic-bezier")return l9(e)}return typeof e=="function"?e:null};var og=Z(J());var p9=(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 f9=(0,og.createContext)(p9),dIe=f9.Provider;function m9(e){var t=(0,og.useContext)(f9);return(0,og.useMemo)(()=>e??t,[e,t])}function Iue(e,t,r){return(t=Due(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Due(e){var t=jue(e,"string");return typeof t=="symbol"?t:t+""}function jue(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 g9="init",h9="pending",y9="active",$ue="completed";function VO(e){return Math.max(0,e)}var GO=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Iue(this,"state",g9),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=VO(t.animationDuration),this.animationBegin=VO(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()===g9)return this.state=h9,this.beginStartedTime=t,this.animationBegin;if(this.getState()===h9){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=y9,this.animationStartedTime=t,this.nextAnimationUpdate(0)):VO(this.animationBegin-r)}if(this.getState()===y9){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=$ue}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},DS=class extends GO{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(_r(this.getFrom(),this.getTo(),this.getProgress()))}};var jS=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 Lue(e,t){return Uue(e)||Fue(e,t)||Bue(e,t)||zue()}function zue(){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 Bue(e,t){if(e){if(typeof e=="string")return v9(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)?v9(e,t):void 0}}function v9(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},x9=0,YO=1;function $S(e){var t=nr(e,Wue),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=OS(),p=n==="auto"?!Zi.isSsr&&!d:n,f=m9(t.animationController),m=(0,Ev.useState)(p?x9:YO),y=Lue(m,2),x=y[0],h=y[1];return(0,Ev.useEffect)(()=>{p||h(YO)},[p]),(0,Ev.useEffect)(()=>{var g=d9(i);if(!p||!o||g==null)return Sa;var v=new jS,b=new DS({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:x9,to:YO});return f(v,b,h)},[f,r,p,o,a,i,s,u,l]),c(Number(x))}var XO=Z(J());function LS(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,XO.useRef)(eu(t)),n=(0,XO.useRef)(e);return n.current!==e&&(r.current=eu(t),n.current=e),r.current}var Hue=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),b9=(e,t,r)=>e.map(n=>"".concat(Hue(n)," ").concat(t,"ms ").concat(r)).join(",");var que=["radius"],Kue=["radius"],w9,S9,k9,_9,C9,A9,E9,N9,T9,O9;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 M9(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=qi(r),i=qi(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:x}d=ko(w9||(w9=ul(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=ko(S9||(S9=ul(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=ko(k9||(k9=ul(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=ko(_9||(_9=ul(["A ",",",",0,0,",`, - `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=ko(C9||(C9=ul(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=ko(A9||(A9=ul(["A ",",",",0,0,",`, - `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=ko(E9||(E9=ul(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=ko(N9||(N9=ul(["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=ko(T9||(T9=ul(["M ",",",` + height and width.`,$,U,a,i,l,u,r),np.createElement("div",OS({id:m?"".concat(m):void 0,className:bt("recharts-responsive-container",y),style:_7(_7({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:b},v),np.createElement("div",{style:w7({width:a,height:i})},np.createElement(E7,{width:$,height:U},d)))}),_c=(0,xo.forwardRef)((e,t)=>{var r=_v();if(qa(r.width)&&qa(r.height))return e.children;var n=S7({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=qO(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return je(s)&&je(l)?np.createElement(E7,{width:s,height:l},e.children):np.createElement(Vse,OS({},e,{width:o,height:a,ref:t}))});var op=()=>{var e,t=Ar(),r=$e(NS),n=$e(rp),o=(e=$e(Rm))===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}},Gse={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},PS=()=>{var e;return(e=$e(Fr))!==null&&e!==void 0?e:Gse},tg=()=>$e(qo),rg=()=>$e(Ko),T7=()=>$e(e=>e.layout.margin),Bt=e=>e.layout.layoutType,Va=()=>$e(Bt),ng=()=>{var e=Va();if(e==="horizontal"||e==="vertical")return e},MS=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},O7=()=>$e(MS),P7=()=>{var e=Va();return e!==void 0},ap=e=>{var t=jt(),r=Ar(),n=e.width,o=e.height,a=_v(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,N7.useEffect)(()=>{!r&&qa(i)&&qa(s)&&t(i7({width:i,height:s}))},[t,r,i,s]),null};var Yse={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},M7=Cr({name:"legend",initialState:Yse,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(Zt(t.payload))},prepare:Ir()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).payload.indexOf(Zt(n));a>-1&&(e.payload[a]=Zt(o))},prepare:Ir()},removeLegendPayload:{reducer(e,t){var r=ea(e).payload.indexOf(Zt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:Ir()}}}),Cv=M7.actions,KO=Cv.setLegendSize,I7=Cv.setLegendSettings,VO=Cv.addLegendPayload,GO=Cv.replaceLegendPayload,YO=Cv.removeLegendPayload;var D7=M7.reducer;var Vn=Z(Q(),1),Sle=Z(z7(),1);var rle=Symbol.for("react.forward_ref");var nle=Symbol.for("react.memo");var ole=rle,ale=nle;function ile(e){e()}function sle(){let e=null,t=null;return{clear(){e=null,t=null},notify(){ile(()=>{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 B7={notify(){},get:()=>[]};function lle(e,t){let r,n=B7,o=0,a=!1;function i(y){c();let x=n.subscribe(y),h=!1;return()=>{h||(h=!0,x(),d())}}function s(){n.notify()}function l(){m.onStateChange&&m.onStateChange()}function u(){return a}function c(){o++,r||(r=t?t.addNestedSub(l):e.subscribe(l),n=sle())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=B7)}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 ule=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",cle=ule(),dle=()=>typeof navigator<"u"&&navigator.product==="ReactNative",ple=dle(),fle=()=>cle||ple?Vn.useLayoutEffect:Vn.useEffect,mle=fle();function F7(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function U7(e,t){if(F7(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=lle(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Vn.useMemo(()=>o.getState(),[o]);return mle(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Vn.createElement((r||ble).Provider,{value:a},t)}var W7=wle;var kle=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function _le(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function Ga(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(kle.has(n)){if(e[n]==null&&t[n]==null)continue;if(!U7(e[n],t[n]))return!1}else if(!_le(e[n],t[n]))return!1;return!0}var H7=se([qo,Ko,Xm],(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 q7(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 Cle=["contextPayload"];function XO(){return XO=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(I7({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function Hle(e){var t=e.width,r=e.height,n=jt();return(0,IS.useLayoutEffect)(()=>{n(KO({width:t,height:r}))},[n,t,r]),(0,IS.useLayoutEffect)(()=>()=>{n(KO({width:0,height:0}))},[n]),null}function qle(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var Kle={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function Vle(e){var t,r,n,o,a,i,s,l,u=nr(e,Kle),c=e.layout&&e.layout!=="auto"?e.layout:zle(u.position),d=uB(),p=X6(),f=T7(),m=$e(j=>Ble(j,u.position)),y=u.width,x=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||lv(u.position)),b=Zw([d]),k=Ale(b,2),S=k[0],w=k[1],_=tg(),A=rg();if(_==null||A==null||u.position!=null&&m==null)return null;var C=_-(f?.left||0)-(f?.right||0),E=qle(c,x,y,C),I=u.position==null?null:cw({viewBox:m??{x:0,y:0,width:_,height:A},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),J=Fle(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,U=c==="horizontal"?((a=m?.height)!==null&&a!==void 0?a:0)/2:(i=m?.height)!==null&&i!==void 0?i:0,N=I?{width:"max-content",height:"max-content",maxWidth:$,maxHeight:U,overflowY:"auto",top:I.y+((s=J.top)!==null&&s!==void 0?s:0),left:I.x+((l=J.left)!==null&&l!==void 0?l:0),transform:q7(I.horizontalAnchor,I.verticalAnchor)}:Ule(h,u,f,_,A,S),T=g?h:og(og({position:"absolute",width:E?.width||y||"auto",height:E?.height||x||"auto"},N),h),D=g??p;if(D==null||d==null)return null;var O=bi.createElement("div",{className:"recharts-legend-wrapper",style:T,ref:w},bi.createElement(Wle,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&bi.createElement(Hle,S),bi.createElement(Lle,XO({},u,{layout:c},E,{margin:f,chartWidth:_,chartHeight:A,contextPayload:d})));return(0,G7.createPortal)(O,D)}var DS=bi.memo(Vle,Ga);DS.displayName="Legend";var ns=Z(Q()),wH=Z(Q()),SH=Z(ny());var Ms=Z(Q());function ZO(){return ZO=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?ag.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?ag.labelStyle:a,s=e.payload,l=e.formatter,u=e.itemSorter,c=e.wrapperClassName,d=e.labelClassName,p=e.label,f=e.labelFormatter,m=e.accessibilityLayer,y=m===void 0?ag.accessibilityLayer:m,x=()=>{if(s&&s.length){var _={padding:0,margin:0},A=rue(s,u),C=A.map((E,I)=>{if(!E||E.type==="none")return null;var J=E.formatter||l||tue,$=E.value,U=E.name,N=$,T=U;if(J){var D=J($,U,E,I,s);if(Array.isArray(D)){var O=Zle(D,2);N=O[0],T=O[1]}else if(D!=null)N=D;else return null}var j=Ev(Ev({},ag.itemStyle),{},{color:E.color||ag.itemStyle.color},o);return Ms.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(I),style:j},wa(T)?Ms.createElement("span",{className:"recharts-tooltip-item-name"},T):null,wa(T)?Ms.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Ms.createElement("span",{className:"recharts-tooltip-item-value"},N),Ms.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return Ms.createElement("ul",{className:"recharts-tooltip-item-list",style:_},C)}return null},h=Ev(Ev({},ag.contentStyle),n),g=Ev({margin:0},i),v=!ar(p),b=v?p:"",k=bt("recharts-default-tooltip",c),S=bt("recharts-tooltip-label",d);v&&f&&s!==void 0&&s!==null&&(b=f(p,s));var w=y?{role:"status","aria-live":"assertive"}:{};return Ms.createElement("div",ZO({className:k,style:h},w),Ms.createElement("p",{className:S,style:g},Ms.isValidElement(b)?b:"".concat(b)),x())};var Cc=Z(Q());var Nv="recharts-tooltip-wrapper",nue={visibility:"hidden"};function oue(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return bt(Nv,{["".concat(Nv,"-right")]:je(r)&&t&&je(t.x)&&r>=t.x,["".concat(Nv,"-left")]:je(r)&&t&&je(t.x)&&r=t.y,["".concat(Nv,"-top")]:je(n)&&t&&je(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 fx?Math.max(c,p):Math.max(d,p)}function aue(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 Q7(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=J7({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=J7({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=aue({translateX:d,translateY:p,useTranslate3d:l})):c=nue,{cssProperties:c,cssClasses:oue({translateX:d,translateY:p,coordinate:r})}}var jS=Z(Q());var iue=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),Ji={devToolsEnabled:!0,isSsr:iue()};function sue(e,t){return due(e)||cue(e,t)||uue(e,t)||lue()}function lue(){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 uue(e,t){if(e){if(typeof e=="string")return R7(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)?R7(e,t):void 0}}function R7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rJi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=sue(e,2),r=t[0],n=t[1];return(0,jS.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 e9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function ig(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=gue(l,2),c=u[0],d=u[1];Cc.useEffect(()=>{var h=g=>{if(g.key==="Escape"){var v,b,k,S;d({dismissed:!0,dismissedAtCoordinate:{x:(v=(b=e.coordinate)===null||b===void 0?void 0:b.x)!==null&&v!==void 0?v: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(ig(ig({},c),{},{dismissed:!1}));var p=Q7({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset=="number"?e.offset:e.offset.x,offsetTop:typeof e.offset=="number"?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:e.lastBoundingBox,useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),f=p.cssClasses,m=p.cssProperties,y=e.hasPortalFromProps?{}:ig(ig({transition:bue({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),x=ig(ig({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return Cc.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:x,ref:e.innerRef},e.children)}var r9=Cc.memo(wue);var LS=()=>{var e;return(e=$e(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var k_=Z(Q()),Dg=Z(Q());var l9=Z(Q());function JO(){return JO=Object.assign?Object.assign.bind():function(e){for(var t=1;tOt(e.x)&&Ot(e.y),i9=e=>e.base!=null&&zS(e.base)&&zS(e),Tv=e=>e.x,Ov=e=>e.y,Cue=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(ru(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=a9["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return a9[r]||wc},s9={connectNulls:!1,type:"linear"},Aue=e=>{var t=e.type,r=t===void 0?s9.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?s9.connectNulls:s,u=Cue(r,i),c=l?o.filter(zS):o;if(Array.isArray(a)){var d,p=o.map((h,g)=>o9(o9({},h),{},{base:a[g]}));i==="vertical"?d=Dm().y(Ov).x1(Tv).x0(h=>h.base.x):d=Dm().x(Tv).y1(Ov).y0(h=>h.base.y);var f=d.defined(i9).curve(u),m=l?p.filter(i9):p;return f(m)}var y;i==="vertical"&&je(a)?y=Dm().y(Ov).x1(Tv).x0(a):je(a)?y=Dm().x(Tv).y1(Ov).y0(a):y=cv().x(Tv).y(Ov);var x=y.defined(zS).curve(u);return x(c)},ll=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=Va();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?Aue(i):n;return l9.createElement("path",JO({},hn(e),Bm(e),{className:bt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var c9=Z(Q());var Eue=["x","y","top","left","width","height","className"];function QO(){return QO=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),d9=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=Mue(e,Eue),y=Nue({x:r,y:o,top:i,left:l,width:c,height:p},m);return!je(r)||!je(o)||!je(c)||!je(p)||!je(i)||!je(l)?null:c9.createElement("path",QO({},yn(y),{className:bt("recharts-cross",f),d:Due(r,o,c,p,i,l)}))};function p9(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 qS=Z(Q()),Qi=Z(Q());var Pv=Z(Q());var BS=1e-4,g9=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],h9=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),f9=(e,t)=>r=>{var n=g9(e,t);return h9(n,r)},jue=(e,t)=>r=>{var n=g9(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return h9(o,r)},$ue=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]]},Lue=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=f9(e,r),a=f9(t,n),i=jue(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,p=0;p<8;++p){var f=o(d)-c,m=i(d);if(Math.abs(f-c)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,o=t.damping,a=o===void 0?8:o,i=t.dt,s=i===void 0?16.67:i,l=1,u=[0],c=0,d=0,p=1e4,f=0;f{var g,v,b;if(h<=0)return 0;if(h>=1)return l;var k=h*x,S=Math.floor(k),w=k-S;return((g=u[S])!==null&&g!==void 0?g:0)+(((v=u[S+1])!==null&&v!==void 0?v:0)-((b=u[S])!==null&&b!==void 0?b:0))*w}},y9=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return m9(e);case"spring":return Bue();default:if(e.split("(")[0]==="cubic-bezier")return m9(e)}return typeof e=="function"?e:null};var sg=Z(Q());var v9=(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 x9=(0,sg.createContext)(v9),yIe=x9.Provider;function b9(e){var t=(0,sg.useContext)(x9);return(0,sg.useMemo)(()=>e??t,[e,t])}function Fue(e,t,r){return(t=Uue(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Uue(e){var t=Wue(e,"string");return typeof t=="symbol"?t:t+""}function Wue(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 w9="init",S9="pending",k9="active",Hue="completed";function RO(e){return Math.max(0,e)}var eP=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Fue(this,"state",w9),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=RO(t.animationDuration),this.animationBegin=RO(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()===w9)return this.state=S9,this.beginStartedTime=t,this.animationBegin;if(this.getState()===S9){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=k9,this.animationStartedTime=t,this.nextAnimationUpdate(0)):RO(this.animationBegin-r)}if(this.getState()===k9){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=Hue}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},FS=class extends eP{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(_r(this.getFrom(),this.getTo(),this.getProgress()))}};var US=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 que(e,t){return Yue(e)||Gue(e,t)||Vue(e,t)||Kue()}function Kue(){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 Vue(e,t){if(e){if(typeof e=="string")return _9(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)?_9(e,t):void 0}}function _9(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},C9=0,tP=1;function WS(e){var t=nr(e,Xue),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=$S(),p=n==="auto"?!Ji.isSsr&&!d:n,f=b9(t.animationController),m=(0,Pv.useState)(p?C9:tP),y=que(m,2),x=y[0],h=y[1];return(0,Pv.useEffect)(()=>{p||h(tP)},[p]),(0,Pv.useEffect)(()=>{var g=y9(i);if(!p||!o||g==null)return Sa;var v=new US,b=new FS({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:C9,to:tP});return f(v,b,h)},[f,r,p,o,a,i,s,u,l]),c(Number(x))}var rP=Z(Q());function HS(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,rP.useRef)(tu(t)),n=(0,rP.useRef)(e);return n.current!==e&&(r.current=tu(t),n.current=e),r.current}var Zue=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),A9=(e,t,r)=>e.map(n=>"".concat(Zue(n)," ").concat(t,"ms ").concat(r)).join(",");var Jue=["radius"],Que=["radius"],E9,N9,T9,O9,P9,M9,I9,D9,j9,$9;function L9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function z9(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=Ki(r),i=Ki(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:x}d=Co(E9||(E9=ul(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=Co(N9||(N9=ul(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=Co(T9||(T9=ul(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=Co(O9||(O9=ul(["A ",",",",0,0,",`, + `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=Co(P9||(P9=ul(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=Co(M9||(M9=ul(["A ",",",",0,0,",`, + `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=Co(I9||(I9=ul(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=Co(D9||(D9=ul(["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=Co(j9||(j9=ul(["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=ko(O9||(O9=ul(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},$9={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},FS=e=>{var t=nr(e,$9),r=(0,Ji.useRef)(null),n=(0,Ji.useState)(-1),o=Zue(n,2),a=o[0],i=o[1];(0,Ji.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var T=r.current.getTotalLength();T&&i(T)}catch{}},[]);var s=t.x,l=t.y,u=t.width,c=t.height,d=t.radius,p=t.className,f=t.animationEasing,m=t.animationDuration,y=t.animationBegin,x=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,Ji.useRef)(u),v=(0,Ji.useRef)(c),b=(0,Ji.useRef)(s),S=(0,Ji.useRef)(l),w=(0,Ji.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),_=LS(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var k=bt("recharts-rectangle",p);if(!h){var A=gn(t),C=A.radius,E=I9(A,que);return zS.createElement("path",BS({},E,{x:qi(s),y:qi(l),width:qi(u),height:qi(c),radius:typeof d=="number"?d:void 0,className:k,d:j9(s,l,u,c,d)}))}var I=g.current,Q=v.current,$=b.current,F=S.current,N="0px ".concat(a===-1?1:a,"px"),O="".concat(a,"px ").concat(a,"px"),j=b9(["strokeDasharray"],m,typeof f=="string"?f:$9.animationEasing);return zS.createElement($S,{animationId:_,key:_,canBegin:a>0,duration:m,easing:f,isActive:h,begin:y},T=>{var D=_r(I,u,T),M=_r(Q,c,T),K=_r($,s,T),V=_r(F,l,T);r.current&&(g.current=D,v.current=M,b.current=K,S.current=V);var L;x?T>0?L={transition:j,strokeDasharray:O}:L={strokeDasharray:N}:L={strokeDasharray:O};var G=gn(t),W=G.radius,ie=I9(G,Kue);return zS.createElement("path",BS({},ie,{radius:typeof d=="number"?d:void 0,className:k,d:j9(K,V,D,M,d),ref:r,style:M9(M9({},L),t.style)}))})};function L9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function z9(e){for(var t=1;te*180/Math.PI,nn=(e,t,r,n)=>({x:e+Math.cos(-Nv*n)*r,y:t+Math.sin(-Nv*n)*r}),US=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},ace=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},ice=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=ace({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:oce(l),angleInRadian:l}},sce=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}},lce=(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},B9=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=ice({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=sce(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?z9(z9({},t),{},{radius:a,angle:lce(p,t)}):null};function WS(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=nn(t,r,n,o),s=nn(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var G9=Z(J());var F9,U9,W9,H9,q9,K9,V9;function ZO(){return ZO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Xr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},HS=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)/Nv,d=l?o:o+a*c,p=nn(t,r,u,d),f=nn(t,r,n,d),m=l?o-a*c:o,y=nn(t,r,u*Math.cos(c*Nv),m);return{center:p,circleTangency:f,lineTangency:y,theta:c}},Y9=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=uce(a,i),l=a+s,u=nn(t,r,o,a),c=nn(t,r,o,l),d=ko(F9||(F9=np(["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=Co($9||($9=ul(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},W9={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},VS=e=>{var t=nr(e,W9),r=(0,Qi.useRef)(null),n=(0,Qi.useState)(-1),o=nce(n,2),a=o[0],i=o[1];(0,Qi.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var O=r.current.getTotalLength();O&&i(O)}catch{}},[]);var s=t.x,l=t.y,u=t.width,c=t.height,d=t.radius,p=t.className,f=t.animationEasing,m=t.animationDuration,y=t.animationBegin,x=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,Qi.useRef)(u),v=(0,Qi.useRef)(c),b=(0,Qi.useRef)(s),k=(0,Qi.useRef)(l),S=(0,Qi.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),w=HS(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=yn(t),C=A.radius,E=B9(A,Jue);return qS.createElement("path",KS({},E,{x:Ki(s),y:Ki(l),width:Ki(u),height:Ki(c),radius:typeof d=="number"?d:void 0,className:_,d:U9(s,l,u,c,d)}))}var I=g.current,J=v.current,$=b.current,U=k.current,N="0px ".concat(a===-1?1:a,"px"),T="".concat(a,"px ").concat(a,"px"),D=A9(["strokeDasharray"],m,typeof f=="string"?f:W9.animationEasing);return qS.createElement(WS,{animationId:w,key:w,canBegin:a>0,duration:m,easing:f,isActive:h,begin:y},O=>{var j=_r(I,u,O),M=_r(J,c,O),H=_r($,s,O),G=_r(U,l,O);r.current&&(g.current=j,v.current=M,b.current=H,k.current=G);var z;x?O>0?z={transition:D,strokeDasharray:T}:z={strokeDasharray:N}:z={strokeDasharray:T};var V=yn(t),K=V.radius,ie=B9(V,Que);return qS.createElement("path",KS({},ie,{radius:typeof d=="number"?d:void 0,className:_,d:U9(H,G,j,M,d),ref:r,style:z9(z9({},z),t.style)}))})};function H9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function q9(e){for(var t=1;te*180/Math.PI,an=(e,t,r,n)=>({x:e+Math.cos(-Mv*n)*r,y:t+Math.sin(-Mv*n)*r}),GS=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},pce=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},fce=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=pce({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:dce(l),angleInRadian:l}},mce=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}},gce=(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},K9=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=fce({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=mce(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?q9(q9({},t),{},{radius:a,angle:gce(p,t)}):null};function YS(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=an(t,r,n,o),s=an(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var R9=Z(Q());var V9,G9,Y9,X9,Z9,J9,Q9;function nP(){return nP=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Zr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},XS=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)/Mv,d=l?o:o+a*c,p=an(t,r,u,d),f=an(t,r,n,d),m=l?o-a*c:o,y=an(t,r,u*Math.cos(c*Mv),m);return{center:p,circleTangency:f,lineTangency:y,theta:c}},eF=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=hce(a,i),l=a+s,u=an(t,r,o,a),c=an(t,r,o,l),d=Co(V9||(V9=ip(["M ",",",` A `,",",`,0, `,",",`, `,",",` - `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var p=nn(t,r,n,a),f=nn(t,r,n,l);d+=ko(U9||(U9=np(["L ",",",` + `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var p=an(t,r,n,a),f=an(t,r,n,l);d+=Co(G9||(G9=ip(["L ",",",` A `,",",`,0, `,",",`, - `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=ko(W9||(W9=np(["L ",","," Z"])),t,r);return d},cce=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=Xr(u-l),d=HS({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,y=HS({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),x=y.circleTangency,h=y.lineTangency,g=y.theta,v=s?Math.abs(l-u):Math.abs(l-u)-m-g;if(v<0)return i?ko(H9||(H9=np(["M ",",",` + `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=Co(Y9||(Y9=ip(["L ",","," Z"])),t,r);return d},yce=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=Zr(u-l),d=XS({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,y=XS({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),x=y.circleTangency,h=y.lineTangency,g=y.theta,v=s?Math.abs(l-u):Math.abs(l-u)-m-g;if(v<0)return i?Co(X9||(X9=ip(["M ",",",` a`,",",",0,0,1,",`,0 a`,",",",0,0,1,",`,0 - `])),f.x,f.y,a,a,a*2,a,a,-a*2):Y9({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var b=ko(q9||(q9=np(["M ",",",` + `])),f.x,f.y,a,a,a*2,a,a,-a*2):eF({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var b=Co(Z9||(Z9=ip(["M ",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` A`,",",",0,0,",",",",",` - `])),f.x,f.y,a,a,+(c<0),p.x,p.y,o,o,+(v>180),+(c<0),x.x,x.y,a,a,+(c<0),h.x,h.y);if(n>0){var S=HS({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),w=S.circleTangency,_=S.lineTangency,k=S.theta,A=HS({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=A.circleTangency,E=A.lineTangency,I=A.theta,Q=s?Math.abs(l-u):Math.abs(l-u)-k-I;if(Q<0&&a===0)return"".concat(b,"L").concat(t,",").concat(r,"Z");b+=ko(K9||(K9=np(["L",",",` + `])),f.x,f.y,a,a,+(c<0),p.x,p.y,o,o,+(v>180),+(c<0),x.x,x.y,a,a,+(c<0),h.x,h.y);if(n>0){var k=XS({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=XS({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=A.circleTangency,E=A.lineTangency,I=A.theta,J=s?Math.abs(l-u):Math.abs(l-u)-_-I;if(J<0&&a===0)return"".concat(b,"L").concat(t,",").concat(r,"Z");b+=Co(J9||(J9=ip(["L",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` - A`,",",",0,0,",",",",","Z"])),E.x,E.y,a,a,+(c<0),C.x,C.y,n,n,+(Q>180),+(c>0),w.x,w.y,a,a,+(c<0),_.x,_.y)}else b+=ko(V9||(V9=np(["L",",","Z"])),t,r);return b},dce={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},qS=e=>{var t=nr(e,dce),r=t.cx,n=t.cy,o=t.innerRadius,a=t.outerRadius,i=t.cornerRadius,s=t.forceCornerRadius,l=t.cornerIsExternal,u=t.startAngle,c=t.endAngle,d=t.className;if(a0&&Math.abs(u-c)<360?y=cce({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=Y9({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),G9.createElement("path",ZO({},gn(t),{className:p,d:y}))};function X9(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(pw(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=nn(n,o,a,s),u=nn(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return WS(t)}}function Z9(e){return Ww(e)?NaN:Number(e)}function KS(e){return e?(e=Z9(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function VS(e,t,r){r&&typeof r!="number"&&pv(e,t,r)&&(t=r=void 0),e=KS(e),t===void 0?(t=e,e=0):t=KS(t),r=r===void 0?ee.chartData,op=ae([Ya],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),ap=(e,t,r,n)=>n?op(e):Ya(e),GS=(e,t,r)=>r?op(e):Ya(e),J9=ae([ap],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),Q9=ae([op],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),R9=ae([Ya],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function JO(e,t){return gce(e)||mce(e,t)||fce(e,t)||pce()}function pce(){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 fce(e,t){if(e){if(typeof e=="string")return eF(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)?eF(e,t):void 0}}function eF(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=Tv(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},rP=(e,t,r)=>{if(e.lte(0))return new wr.default(0);var n=eP(e.toNumber()),o=new wr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new wr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new wr.default(l.toNumber()):new wr.default(Math.ceil(l.toNumber()))},iF=(e,t,r)=>{var n;if(e.lte(0))return new wr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new wr.default(a).abs().log(10).toNumber()),s=new wr.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 wr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,p=new wr.default(d).mul(s);return t?p:new wr.default(Math.ceil(p.toNumber()))},bce=(e,t,r)=>{var n=new wr.default(1),o=new wr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new wr.default(10).pow(eP(e)-1),o=new wr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new wr.default(Math.floor(e)))}else e===0?o=new wr.default(Math.floor((t-1)/2)):r||(o=new wr.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]:rP;if(!Number.isFinite((r-t)/(n-1)))return{step:new wr.default(0),tickMin:new wr.default(0),tickMax:new wr.default(0)};var s=i(new wr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new wr.default(0):(l=new wr.default(t).add(r).div(2),l=l.sub(new wr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new wr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?sF(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 wr.default(u).mul(s)),tickMax:l.add(new wr.default(c).mul(s))})};var ZS=function(t){var r=Tv(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=aF([n,o]),c=Tv(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 bce(d,a,i);var m=s==="snap125"?iF:rP,y=sF(d,p,l,i,0,m),x=y.step,h=y.tickMin,g=y.tickMax,v=tP(h,g.add(new wr.default(.1).mul(x)),x);return n>o?v.reverse():v},JS=function(t,r){var n=Tv(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=aF([o,a]),u=Tv(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"?iF:rP,f=Math.max(r,2),m=p(new wr.default(d).sub(c).div(f-1),i,0),y=[...tP(new wr.default(c),new wr.default(d),m),d];if(i===!1){y=y.map(h=>Math.round(h));var x=y.length-1;x>0&&y[x]===y[x-1]&&(y=y.slice(0,x))}return o>a?y.reverse():y};var nP=e=>e.rootProps.maxBarSize,lF=e=>e.rootProps.barGap,QS=e=>e.rootProps.barCategoryGap,uF=e=>e.rootProps.barSize,Cc=e=>e.rootProps.stackOffset,RS=e=>e.rootProps.reverseStackOrder,ag=e=>e.options.chartName,ek=e=>e.rootProps.syncId,oP=e=>e.rootProps.syncMethod,tk=e=>e.options.eventEmitter,cF=e=>e.rootProps.baseValue;var ir={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 Ac={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:ir.axis};var Is={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:ir.axis};var ip=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function sp(e,t,r){if(r!=="auto")return r;if(e!=null)return sa(e,t)?"category":"number"}function dF(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function rk(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},nk=ae([_ce,AS],(e,t)=>{var r;if(e!=null)return e;var n=(r=sp(t,"angleAxis",pF.type))!==null&&r!==void 0?r:"category";return rk(rk({},pF),{},{type:n})}),Cce=(e,t)=>e.polarAxis.radiusAxis[t],ok=ae([Cce,AS],(e,t)=>{var r;if(e!=null)return e;var n=(r=sp(t,"radiusAxis",fF.type))!==null&&r!==void 0?r:"category";return rk(rk({},fF),{},{type:n})}),ak=e=>e.polarOptions,aP=ae([Ho,qo,Fr],US),mF=ae([ak,aP],(e,t)=>{if(e!=null)return Dn(e.innerRadius,t,0)}),gF=ae([ak,aP],(e,t)=>{if(e!=null)return Dn(e.outerRadius,t,t*.8)}),Ace=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},iP=ae([ak],Ace),$De=ae([nk,iP],ip),sP=ae([aP,mF,gF],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),LDe=ae([ok,sP],ip),ik=ae([zt,ak,mF,gF,Ho,qo],(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:Dn(i,o,o/2),cy:Dn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var hn=(e,t)=>t;var lp=(e,t,r)=>r;function Ec(e){return e?.id}function sk(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=Ec(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Wt(p,i,null)),y=Wt(p,l.dataKey,0),x;s.has(m)?x=s.get(m):x={},Object.assign(x,{[d]:y}),s.set(m,x)})}}),Array.from(s.values())}function up(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var cp=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function ig(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function hF(e,t){if(e.length===t.length){for(var r=0;r{var t=zt(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var Nc=e=>e.tooltip.settings.axisId;function Ov(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 lk=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!wi(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 Jv={};mte(Jv,{scaleBand:()=>Dv,scaleDiverging:()=>Hk,scaleDivergingLog:()=>FP,scaleDivergingPow:()=>qk,scaleDivergingSqrt:()=>zU,scaleDivergingSymlog:()=>UP,scaleIdentity:()=>Ek,scaleImplicit:()=>gk,scaleLinear:()=>Ak,scaleLog:()=>Nk,scaleOrdinal:()=>ug,scalePoint:()=>kF,scalePow:()=>Kv,scaleQuantile:()=>Pk,scaleQuantize:()=>Mk,scaleRadial:()=>Ok,scaleSequential:()=>Bk,scaleSequentialLog:()=>zP,scaleSequentialPow:()=>Fk,scaleSequentialQuantile:()=>Uk,scaleSequentialSqrt:()=>LU,scaleSequentialSymlog:()=>BP,scaleSqrt:()=>aU,scaleSymlog:()=>Tk,scaleThreshold:()=>Ik,scaleTime:()=>$P,scaleUtc:()=>LP,tickFormat:()=>Fv});function _a(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function lP(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function dp(e){let t,r,n;e.length!==2?(t=_a,r=(s,l)=>_a(e(s),l),n=(s,l)=>e(s)-l):(t=e===_a||e===lP?e:Ece,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 Ece(){return 0}function Pv(e){return e===null?NaN:+e}function*yF(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 vF=dp(_a),xF=vF.right,Nce=vF.left,Tce=dp(Pv).center,Ds=xF;var sg=class extends Map{constructor(t,r=Mce){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(bF(this,t))}has(t){return super.has(bF(this,t))}set(t,r){return super.set(Oce(this,t),r)}delete(t){return super.delete(Pce(this,t))}};function bF({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Oce({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Pce({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Mce(e){return e!==null&&typeof e=="object"?e.valueOf():e}function wF(e=_a){if(e===_a)return uP;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 uP(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Ice=Math.sqrt(50),Dce=Math.sqrt(10),jce=Math.sqrt(2);function uk(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>=Ice?10:a>=Dce?5:a>=jce?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 dk(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 pk(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?uP:wF(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));pk(e,t,f,m,o)}let a=e[t],i=r,s=n;for(Iv(e,r,t),o(e[n],a)>0&&Iv(e,r,n);i0;)--s}o(e[r],a)===0?Iv(e,r,s):(++s,Iv(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function Iv(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function fk(e,t,r){if(e=Float64Array.from(yF(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return dk(e);if(t>=1)return ck(e);var n,o=(n-1)*t,a=Math.floor(o),i=ck(pk(e,a).subarray(0,a+1)),s=dk(e.subarray(a+1));return i+(s-i)*(o-a)}}function cP(e,t,r=Pv){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 mk(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?yk(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?yk(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=Lce.exec(e))?new Xa(t[1],t[2],t[3],1):(t=zce.exec(e))?new Xa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Bce.exec(e))?yk(t[1],t[2],t[3],t[4]):(t=Fce.exec(e))?yk(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Uce.exec(e))?OF(t[1],t[2]/100,t[3]/100,1):(t=Wce.exec(e))?OF(t[1],t[2]/100,t[3]/100,t[4]):_F.hasOwnProperty(e)?EF(_F[e]):e==="transparent"?new Xa(NaN,NaN,NaN,0):null}function EF(e){return new Xa(e>>16&255,e>>8&255,e&255,1)}function yk(e,t,r,n){return n<=0&&(e=t=r=NaN),new Xa(e,t,r,n)}function Kce(e){return e instanceof Lv||(e=Tc(e)),e?(e=e.rgb(),new Xa(e.r,e.g,e.b,e.opacity)):new Xa}function dg(e,t,r,n){return arguments.length===1?Kce(e):new Xa(e,t,r,n??1)}function Xa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}hk(Xa,dg,dP(Lv,{brighter(e){return e=e==null?xk:Math.pow(xk,e),new Xa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?jv:Math.pow(jv,e),new Xa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Xa(mp(this.r),mp(this.g),mp(this.b),bk(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:NF,formatHex:NF,formatHex8:Vce,formatRgb:TF,toString:TF}));function NF(){return`#${fp(this.r)}${fp(this.g)}${fp(this.b)}`}function Vce(){return`#${fp(this.r)}${fp(this.g)}${fp(this.b)}${fp((isNaN(this.opacity)?1:this.opacity)*255)}`}function TF(){let e=bk(this.opacity);return`${e===1?"rgb(":"rgba("}${mp(this.r)}, ${mp(this.g)}, ${mp(this.b)}${e===1?")":`, ${e})`}`}function bk(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function mp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fp(e){return e=mp(e),(e<16?"0":"")+e.toString(16)}function OF(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new js(e,t,r,n)}function MF(e){if(e instanceof js)return new js(e.h,e.s,e.l,e.opacity);if(e instanceof Lv||(e=Tc(e)),!e)return new js;if(e instanceof js)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 js(i,s,l,e.opacity)}function IF(e,t,r,n){return arguments.length===1?MF(e):new js(e,t,r,n??1)}function js(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}hk(js,IF,dP(Lv,{brighter(e){return e=e==null?xk:Math.pow(xk,e),new js(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?jv:Math.pow(jv,e),new js(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Xa(pP(e>=240?e-240:e+120,o,n),pP(e,o,n),pP(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new js(PF(this.h),vk(this.s),vk(this.l),bk(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=bk(this.opacity);return`${e===1?"hsl(":"hsla("}${PF(this.h)}, ${vk(this.s)*100}%, ${vk(this.l)*100}%${e===1?")":`, ${e})`}`}}));function PF(e){return e=(e||0)%360,e<0?e+360:e}function vk(e){return Math.max(0,Math.min(1,e||0))}function pP(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 fP(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 DF(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 Gce(e,t){return function(r){return e+r*t}}function Yce(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 $F(e){return(e=+e)==1?wk:function(t,r){return r-t?Yce(t,r,e):zv(isNaN(t)?r:t)}}function wk(e,t){var r=t-e;return r?Gce(e,r):zv(isNaN(e)?t:e)}var mP=(function e(t){var r=$F(t);function n(o,a){var i=r((o=dg(o)).r,(a=dg(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=wk(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 LF(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:Oc(n,o)})),r=gP.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Qce(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?Rce:Qce,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),Oc)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Pc),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=gp,c()},d.clamp=function(p){return arguments.length?(i=p?!0:Co,c()):i!==Co},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 yp(){return hp()(Co,Co)}function KF(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function vp(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 pl(e){return e=vp(Math.abs(e)),e?e[1]:NaN}function VF(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 GF(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var ede=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function fl(e){if(!(t=ede.exec(e)))throw new Error("invalid format: "+e);var t;return new kk({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]})}fl.prototype=kk.prototype;function kk(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+""}kk.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 YF(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 Bv;function XF(e,t){var r=vp(e,t);if(!r)return Bv=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(Bv=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")+vp(e,Math.max(0,t+a-1))[0]}function xP(e,t){var r=vp(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 bP={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:KF,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)=>xP(e*100,t),r:xP,s:XF,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function wP(e){return e}var ZF=Array.prototype.map,JF=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function QF(e){var t=e.grouping===void 0||e.thousands===void 0?wP:VF(ZF.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?wP:GF(ZF.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=fl(d);var f=d.fill,m=d.align,y=d.sign,x=d.symbol,h=d.zero,g=d.width,v=d.comma,b=d.precision,S=d.trim,w=d.type;w==="n"?(v=!0,w="g"):bP[w]||(b===void 0&&(b=12),S=!0,w="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var _=(p&&p.prefix!==void 0?p.prefix:"")+(x==="$"?r:x==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():""),k=(x==="$"?n:/[%p]/.test(w)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),A=bP[w],C=/[defgprs%]/.test(w);b=b===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function E(I){var Q=_,$=k,F,N,O;if(w==="c")$=A(I)+$,I="";else{I=+I;var j=I<0||1/I<0;if(I=isNaN(I)?l:A(Math.abs(I),b),S&&(I=YF(I)),j&&+I==0&&y!=="+"&&(j=!1),Q=(j?y==="("?y:s:y==="-"||y==="("?"":y)+Q,$=(w==="s"&&!isNaN(I)&&Bv!==void 0?JF[8+Bv/3]:"")+$+(j&&y==="("?")":""),C){for(F=-1,N=I.length;++FO||O>57){$=(O===46?o+I.slice(F+1):I.slice(F))+$,I=I.slice(0,F);break}}}v&&!h&&(I=t(I,1/0));var T=Q.length+I.length+$.length,D=T>1)+Q+I+$+D.slice(T);break;default:I=D+Q+I+$;break}return a(I)}return E.toString=function(){return d+""},E}function c(d,p){var f=Math.max(-8,Math.min(8,Math.floor(pl(p)/3)))*3,m=Math.pow(10,-f),y=u((d=fl(d),d.type="f",d),{suffix:JF[8+f/3]});return function(x){return y(m*x)}}return{format:u,formatPrefix:c}}var _k,pg,Ck;SP({thousands:",",grouping:[3],currency:["$",""]});function SP(e){return _k=QF(e),pg=_k.format,Ck=_k.formatPrefix,_k}function kP(e){return Math.max(0,-pl(Math.abs(e)))}function _P(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(pl(t)/3)))*3-pl(Math.abs(e)))}function CP(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,pl(t)-pl(e))+1}function Fv(e,t,r,n){var o=lg(e,t,r),a;switch(n=fl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=_P(o,i))&&(n.precision=a),Ck(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=CP(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=kP(o))&&(n.precision=a-(n.type==="%")*2);break}}return pg(n)}function Ca(e){var t=e.domain;return e.ticks=function(r){var n=t();return pp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Fv(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=Mv(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 Ak(){var e=yp();return e.copy=function(){return dl(e,Ak())},Cn.apply(e,arguments),Ca(e)}function Ek(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,Pc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Ek(e).unknown(t)},e=arguments.length?Array.from(e,Pc):[0,1],Ca(r)}function Uv(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 ade(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 tU(e){return(t,r)=>-e(-t,r)}function Wv(e){let t=e(RF,eU),r=t.domain,n=10,o,a;function i(){return o=ade(n),a=ode(n),r()[0]<0?(o=tU(o),a=tU(a),e(tde,rde)):e(RF,eU),t}return t.base=function(s){return arguments.length?(n=+s,i()):n},t.domain=function(s){return arguments.length?(r(s),i()):r()},t.ticks=s=>{let l=r(),u=l[0],c=l[l.length-1],d=c0){for(;p<=f;++p)for(m=1;mc)break;h.push(y)}}else for(;p<=f;++p)for(m=n-1;m>=1;--m)if(y=p>0?m/a(-p):m*a(p),!(yc)break;h.push(y)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=fl(l)).precision==null&&(l.trim=!0),l=pg(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(Uv(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function Nk(){let e=Wv(hp()).domain([1,10]);return e.copy=()=>dl(e,Nk()).base(e.base()),Cn.apply(e,arguments),e}function rU(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function nU(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Hv(e){var t=1,r=e(rU(t),nU(t));return r.constant=function(n){return arguments.length?e(rU(t=+n),nU(t)):t},Ca(r)}function Tk(){var e=Hv(hp());return e.copy=function(){return dl(e,Tk()).constant(e.constant())},Cn.apply(e,arguments)}function oU(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function ide(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function sde(e){return e<0?-e*e:e*e}function qv(e){var t=e(Co,Co),r=1;function n(){return r===1?e(Co,Co):r===.5?e(ide,sde):e(oU(r),oU(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Ca(t)}function Kv(){var e=qv(hp());return e.copy=function(){return dl(e,Kv()).exponent(e.exponent())},Cn.apply(e,arguments),e}function aU(){return Kv.apply(null,arguments).exponent(.5)}function iU(e){return Math.sign(e)*e*e}function lde(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Ok(){var e=yp(),t=[0,1],r=!1,n;function o(a){var i=lde(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(iU(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,Pc)).map(iU)),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 Ok(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},Cn.apply(o,arguments),Ca(o)}function Pk(){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 Mk().domain([e,t]).range(o).unknown(a)},Cn.apply(Ca(i),arguments)}function Ik(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Ds(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 Ik().domain(e).range(t).unknown(r)},Cn.apply(o,arguments)}var AP=new Date,EP=new Date;function Zr(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(uZr(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)=>(AP.setTime(+a),EP.setTime(+i),e(AP),e(EP),Math.floor(r(AP,EP))),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 Vv=Zr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Vv.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Zr(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Vv);var g$e=Vv.range;var Ri=Zr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),sU=Ri.range;var fg=Zr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),ude=fg.range,mg=Zr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),cde=mg.range;var gg=Zr(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()),dde=gg.range,hg=Zr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),pde=hg.range;var lu=Zr(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),fde=lu.range,wp=Zr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),mde=wp.range,Dk=Zr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),gde=Dk.range;function Sp(e){return Zr(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 uu=Sp(0),yg=Sp(1),uU=Sp(2),cU=Sp(3),Mc=Sp(4),dU=Sp(5),pU=Sp(6),fU=uu.range,hde=yg.range,yde=uU.range,vde=cU.range,xde=Mc.range,bde=dU.range,wde=pU.range;function kp(e){return Zr(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=kp(0),vg=kp(1),mU=kp(2),gU=kp(3),Ic=kp(4),hU=kp(5),yU=kp(6),vU=cu.range,Sde=vg.range,kde=mU.range,_de=gU.range,Cde=Ic.range,Ade=hU.range,Ede=yU.range;var xg=Zr(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()),Nde=xg.range,bg=Zr(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()),Tde=bg.range;var ki=Zr(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());ki.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Zr(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 Ode=ki.range,_i=Zr(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:Zr(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 Pde=_i.range;function bU(e,t,r,n,o,a){let i=[[Ri,1,1e3],[Ri,5,5*1e3],[Ri,15,15*1e3],[Ri,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=cx).right(i,p);if(f===i.length)return e.every(lg(u/31536e6,c/31536e6,d));if(f===0)return Vv.every(Math.max(lg(u,c,d),1));let[m,y]=i[p/i[f-1][2]53)return null;"w"in ee||(ee.w=1),"Z"in ee?(te=IP(Yv(ee.y,0,1)),U=te.getUTCDay(),te=U>4||U===0?vg.ceil(te):vg(te),te=wp.offset(te,(ee.V-1)*7),ee.y=te.getUTCFullYear(),ee.m=te.getUTCMonth(),ee.d=te.getUTCDate()+(ee.w+6)%7):(te=MP(Yv(ee.y,0,1)),U=te.getDay(),te=U>4||U===0?yg.ceil(te):yg(te),te=lu.offset(te,(ee.V-1)*7),ee.y=te.getFullYear(),ee.m=te.getMonth(),ee.d=te.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),U="Z"in ee?IP(Yv(ee.y,0,1)).getUTCDay():MP(Yv(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(U+5)%7:ee.w+ee.U*7-(U+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,IP(ee)):MP(ee)}}function k(ge,ce,R,ee){for(var z=0,te=ce.length,U=R.length,P,Y;z=U)return-1;if(P=ce.charCodeAt(z++),P===37){if(P=ce.charAt(z++),Y=S[P in wU?ce.charAt(z++):P],!Y||(ee=Y(ge,R,ee))<0)return-1}else if(P!=R.charCodeAt(ee++))return-1}return ee}function A(ge,ce,R){var ee=u.exec(ce.slice(R));return ee?(ge.p=c.get(ee[0].toLowerCase()),R+ee[0].length):-1}function C(ge,ce,R){var ee=f.exec(ce.slice(R));return ee?(ge.w=m.get(ee[0].toLowerCase()),R+ee[0].length):-1}function E(ge,ce,R){var ee=d.exec(ce.slice(R));return ee?(ge.w=p.get(ee[0].toLowerCase()),R+ee[0].length):-1}function I(ge,ce,R){var ee=h.exec(ce.slice(R));return ee?(ge.m=g.get(ee[0].toLowerCase()),R+ee[0].length):-1}function Q(ge,ce,R){var ee=y.exec(ce.slice(R));return ee?(ge.m=x.get(ee[0].toLowerCase()),R+ee[0].length):-1}function $(ge,ce,R){return k(ge,t,ce,R)}function F(ge,ce,R){return k(ge,r,ce,R)}function N(ge,ce,R){return k(ge,n,ce,R)}function O(ge){return i[ge.getDay()]}function j(ge){return a[ge.getDay()]}function T(ge){return l[ge.getMonth()]}function D(ge){return s[ge.getMonth()]}function M(ge){return o[+(ge.getHours()>=12)]}function K(ge){return 1+~~(ge.getMonth()/3)}function V(ge){return i[ge.getUTCDay()]}function L(ge){return a[ge.getUTCDay()]}function G(ge){return l[ge.getUTCMonth()]}function W(ge){return s[ge.getUTCMonth()]}function ie(ge){return o[+(ge.getUTCHours()>=12)]}function Ie(ge){return 1+~~(ge.getUTCMonth()/3)}return{format:function(ge){var ce=w(ge+="",v);return ce.toString=function(){return ge},ce},parse:function(ge){var ce=_(ge+="",!1);return ce.toString=function(){return ge},ce},utcFormat:function(ge){var ce=w(ge+="",b);return ce.toString=function(){return ge},ce},utcParse:function(ge){var ce=_(ge+="",!0);return ce.toString=function(){return ge},ce}}}var wU={"-":"",_:" ",0:"0"},Ko=/^\s*\d+/,Ide=/^%/,Dde=/[\\^$*+?|[\]().{}]/g;function Er(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function $de(e,t,r){var n=Ko.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Lde(e,t,r){var n=Ko.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function zde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Bde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Fde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function SU(e,t,r){var n=Ko.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function kU(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Ude(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 Wde(e,t,r){var n=Ko.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Hde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function _U(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function qde(e,t,r){var n=Ko.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function CU(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Kde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Vde(e,t,r){var n=Ko.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Gde(e,t,r){var n=Ko.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Yde(e,t,r){var n=Ko.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Xde(e,t,r){var n=Ide.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Zde(e,t,r){var n=Ko.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Jde(e,t,r){var n=Ko.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function AU(e,t){return Er(e.getDate(),t,2)}function Qde(e,t){return Er(e.getHours(),t,2)}function Rde(e,t){return Er(e.getHours()%12||12,t,2)}function epe(e,t){return Er(1+lu.count(ki(e),e),t,3)}function PU(e,t){return Er(e.getMilliseconds(),t,3)}function tpe(e,t){return PU(e,t)+"000"}function rpe(e,t){return Er(e.getMonth()+1,t,2)}function npe(e,t){return Er(e.getMinutes(),t,2)}function ope(e,t){return Er(e.getSeconds(),t,2)}function ape(e){var t=e.getDay();return t===0?7:t}function ipe(e,t){return Er(uu.count(ki(e)-1,e),t,2)}function MU(e){var t=e.getDay();return t>=4||t===0?Mc(e):Mc.ceil(e)}function spe(e,t){return e=MU(e),Er(Mc.count(ki(e),e)+(ki(e).getDay()===4),t,2)}function lpe(e){return e.getDay()}function upe(e,t){return Er(yg.count(ki(e)-1,e),t,2)}function cpe(e,t){return Er(e.getFullYear()%100,t,2)}function dpe(e,t){return e=MU(e),Er(e.getFullYear()%100,t,2)}function ppe(e,t){return Er(e.getFullYear()%1e4,t,4)}function fpe(e,t){var r=e.getDay();return e=r>=4||r===0?Mc(e):Mc.ceil(e),Er(e.getFullYear()%1e4,t,4)}function mpe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Er(t/60|0,"0",2)+Er(t%60,"0",2)}function EU(e,t){return Er(e.getUTCDate(),t,2)}function gpe(e,t){return Er(e.getUTCHours(),t,2)}function hpe(e,t){return Er(e.getUTCHours()%12||12,t,2)}function ype(e,t){return Er(1+wp.count(_i(e),e),t,3)}function IU(e,t){return Er(e.getUTCMilliseconds(),t,3)}function vpe(e,t){return IU(e,t)+"000"}function xpe(e,t){return Er(e.getUTCMonth()+1,t,2)}function bpe(e,t){return Er(e.getUTCMinutes(),t,2)}function wpe(e,t){return Er(e.getUTCSeconds(),t,2)}function Spe(e){var t=e.getUTCDay();return t===0?7:t}function kpe(e,t){return Er(cu.count(_i(e)-1,e),t,2)}function DU(e){var t=e.getUTCDay();return t>=4||t===0?Ic(e):Ic.ceil(e)}function _pe(e,t){return e=DU(e),Er(Ic.count(_i(e),e)+(_i(e).getUTCDay()===4),t,2)}function Cpe(e){return e.getUTCDay()}function Ape(e,t){return Er(vg.count(_i(e)-1,e),t,2)}function Epe(e,t){return Er(e.getUTCFullYear()%100,t,2)}function Npe(e,t){return e=DU(e),Er(e.getUTCFullYear()%100,t,2)}function Tpe(e,t){return Er(e.getUTCFullYear()%1e4,t,4)}function Ope(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Ic(e):Ic.ceil(e),Er(e.getUTCFullYear()%1e4,t,4)}function Ppe(){return"+0000"}function NU(){return"%"}function TU(e){return+e}function OU(e){return Math.floor(+e/1e3)}var wg,jk,jU,$k,$U;jP({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 jP(e){return wg=DP(e),jk=wg.format,jU=wg.parse,$k=wg.utcFormat,$U=wg.utcParse,wg}function Mpe(e){return new Date(e)}function Ipe(e){return e instanceof Date?+e:+new Date(+e)}function Lk(e,t,r,n,o,a,i,s,l,u){var c=yp(),d=c.invert,p=c.domain,f=u(".%L"),m=u(":%S"),y=u("%I:%M"),x=u("%I %p"),h=u("%a %d"),g=u("%b %d"),v=u("%B"),b=u("%Y");function S(w){return(l(w)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>fk(e,a/n))},r.copy=function(){return Uk(t).domain(e)},Qi.apply(r,arguments)}function Wk(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=Co,c,d=!1,p;function f(y){return isNaN(y=+y)?p:(y=.5+((y=+c(y))-a)*(n*y{if(e!=null){var n=e.scale,o=e.type;if(n==="auto")return o==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!t)?"point":o==="category"?"band":"linear";if(typeof n=="string")return $pe(n)?n:"point"}};function Lpe(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function Vk(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=Lpe(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 FU(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):Vk(e,void 0)}function UU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Gk(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],gl=(e,t)=>{var r=HP(e,t);return r??oo},ao={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:WP,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:Qd},qP=(e,t)=>e.cartesianAxis.yAxis[t],hl=(e,t)=>{var r=qP(e,t);return r??ao},Kpe={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:""},KP=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Kpe},An=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);case"zAxis":return KP(e,r);case"angleAxis":return nk(e,r);case"radiusAxis":return ok(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Vpe=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},_p=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);case"angleAxis":return nk(e,r);case"radiusAxis":return ok(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},VP=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 Dc=e=>e.graphicalItems.cartesianItems,Gpe=ae([hn,lp],ex),tx=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),kg=ae([Dc,An,Gpe],tx,{memoizeOptions:{resultEqualityCheck:ig}}),KU=ae([kg],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(up)),GP=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Ype=ae([kg],GP),rx=e=>e.map(t=>t.data).filter(Boolean).flat(1),Xpe=ae([kg],e=>e.some(t=>!t.data)),VU=ae([kg],rx,{memoizeOptions:{resultEqualityCheck:ig}}),nx=(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)},YP=ae([VU,ap],nx),XP=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Wt(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Wt(o,n)}))):e.map(n=>({value:n})),ZP=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=XP(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Wt(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},ox=ae([YP,An,kg,ap,Xpe,VU],ZP);function Sg(e){if(wa(e)||e instanceof Date){var t=Number(e);if(Ot(t))return t}}function HU(e){if(Array.isArray(e)){var t=[Sg(e[0]),Sg(e[1])];return wi(t)?t:void 0}var r=Sg(e);if(r!=null)return[r,r]}function $s(e){return e.map(Sg).filter(_o)}function Zpe(e,t){var r=Sg(e),n=Sg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Jpe=ae([ox],e=>e?.map(t=>t.value).sort(Zpe));function GU(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Qpe(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!Uo(t))n=t;else if(Array.isArray(t)){var o=$s(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:$s(r.flatMap(a=>{var i=Wt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=qU(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Ot(s)||!Ot(l)))return[n-s,n+l]}))}var io=e=>{var t=no(e),r=Nc(e);return _p(e,t,r)},pu=ae([io],e=>e?.dataKey),Rpe=ae([KU,ap,io],sk),JP=(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=qU(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Ec);return[l,{stackedData:i7(e,d,r),graphicalItems:c}]}))},_g=ae([Rpe,KU,Cc,RS],JP),QP=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return l7(e,o,a)},efe=ae([An],e=>e.allowDataOverflow),Yk=e=>{var t;if(e==null||!("domain"in e))return WP;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=$s(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:WP},Xk=ae([An],Yk),Zk=ae([Xk,efe],YS),tfe=ae([_g,Ya,hn,Zk],QP,{memoizeOptions:{resultEqualityCheck:cp}}),Cg=e=>e.errorBars,rfe=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>GU(r,n)),Rv=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=>GU(a,f));d.forEach(f=>{var m,y=Wt(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),x=Qpe(f,y,p);if(x.length>=2){var h=Math.min(...x),g=Math.max(...x);(s==null||hl)&&(l=g)}var v=HU(y);v!=null&&(s=s==null?v[0]:Math.min(s,v[0]),l=l==null?v[1]:Math.max(l,v[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=HU(Wt(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]))}),Ot(s)&&Ot(l))return[s,l]},nfe=ae([YP,An,Ype,Cg,hn,J9],ax,{memoizeOptions:{resultEqualityCheck:cp}});function ofe(e){var t=e.value;if(wa(t)||t instanceof Date)return t}var afe=(e,t,r)=>{var n=e.map(ofe).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&ST(n))?VS(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},RP=e=>e.referenceElements.dots,Cp=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),ife=ae([RP,hn,lp],Cp),e5=e=>e.referenceElements.areas,sfe=ae([e5,hn,lp],Cp),t5=e=>e.referenceElements.lines,lfe=ae([t5,hn,lp],Cp),r5=(e,t)=>{if(e!=null){var r=$s(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},ufe=ae(ife,hn,r5),n5=(e,t)=>{if(e!=null){var r=$s(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)]}},cfe=ae([sfe,hn],n5);function dfe(e){var t;if(e.x!=null)return $s([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:$s(r)}function pfe(e){var t;if(e.y!=null)return $s([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:$s(r)}var o5=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?dfe(n):pfe(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},ffe=ae([lfe,hn],o5),mfe=ae(ufe,ffe,cfe,(e,t,r)=>Rv(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?Rv(n,a,o):Rv(a,o),d=rF(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},gfe=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=$s(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},hfe=ae([An],gfe,{memoizeOptions:{resultEqualityCheck:cp}}),yfe=ae([An,Xk,Zk,tfe,nfe,mfe,zt,hn,hfe],ix,{memoizeOptions:{resultEqualityCheck:cp}}),vfe=[0,1],sx=(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=sa(t,a);if(u&&s==null){var c;return VS(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?afe(n,e,u):o==="expand"&&!u?vfe:i}},a5=ae([An,zt,YP,ox,Cc,hn,yfe],sx),fu=ae([An,VP,ag],Kk),lx=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=Yk(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&wi(e)){if(a)return ZS(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return JS(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&wi(e))return ZS(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&wi(e))return JS(e,t.tickCount,t.allowDecimals,"adaptive")}}},i5=ae([a5,_p,fu],lx),ux=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&wi(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},xfe=ae([An,a5,i5,hn],ux),bfe=ae(ox,An,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from($s(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(!Ot(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=Dn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),wfe=(e,t,r)=>{var n=gl(e,t);return n==null||typeof n.padding!="string"?0:YU(e,"xAxis",t,r,n.padding)},Sfe=(e,t,r)=>{var n=hl(e,t);return n==null||typeof n.padding!="string"?0:YU(e,"yAxis",t,r,n.padding)},kfe=ae(gl,wfe,(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}}),_fe=ae(hl,Sfe,(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}}),s5=ae([Fr,kfe,Rd,Zm,(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]}),l5=ae([Fr,zt,_fe,Rd,Zm,(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]}),Ag=(e,t,r,n)=>{var o;switch(t){case"xAxis":return s5(e,r,n);case"yAxis":return l5(e,r,n);case"zAxis":return(o=KP(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return iP(e);case"radiusAxis":return sP(e,r);default:return}},XU=ae([An,Ag],ip),Cfe=ae([fu,xfe],lk),u5=ae([An,fu,Cfe,XU],Qv),c5=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=sa(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},d5=ae([zt,ox,_p,hn],c5),Jk=ae([u5],Ov),z8e=ae([u5],FU),B8e=ae([u5,Jpe],Vk),F8e=ae([kg,Cg,hn],rfe);function ZU(e,t){return e.idt.id?1:0}var Qk=(e,t)=>t,Rk=(e,t,r)=>r,Afe=ae(Gm,Qk,Rk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(ZU)),Efe=ae(Ym,Qk,Rk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(ZU)),JU=(e,t)=>{var r=typeof t.height=="number"?t.height:xv;return{width:e.width,height:r}},Nfe=(e,t)=>{var r=typeof t.width=="number"?t.width:Qd;return{width:r,height:e.height}},p5=ae(Fr,gl,JU),Tfe=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},Ofe=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},Pfe=ae(qo,Fr,Afe,Qk,Rk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=JU(t,s);i==null&&(i=Tfe(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}),Mfe=ae(Ho,Fr,Efe,Qk,Rk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=Nfe(t,s);i==null&&(i=Ofe(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}),Ife=(e,t)=>{var r=gl(e,t);if(r!=null)return Pfe(e,r.orientation,r.mirror)},QU=ae([Fr,gl,Ife,(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}}}),Dfe=(e,t)=>{var r=hl(e,t);if(r!=null)return Mfe(e,r.orientation,r.mirror)},RU=ae([Fr,hl,Dfe,(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}}}),f5=ae(Fr,hl,(e,t)=>{var r=typeof t.width=="number"?t.width:Qd;return{width:r,height:e.height}}),m5=(e,t,r)=>{switch(t){case"xAxis":return p5(e,r).width;case"yAxis":return f5(e,r).height;default:return}},g5=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=sa(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&ST(u))return l}},h5=ae([zt,ox,An,hn],g5),y5=ae([zt,Vpe,fu,Jk,h5,d5,Ag,i5,hn],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=sa(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}}}),jfe=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=sa(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?Xr(a[0]-a[1])*2*m:m;var y=d||o;return y?y.map((x,h)=>{var g=i?i.indexOf(x):x,v=n.map(g);return Ot(v)?{index:h,coordinate:v+m,value:x,offset:m}:null}).filter(_o):u&&s?s.map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(_o):n.ticks?n.ticks(p).map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(_o):n.domain().map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:i?i[x]:x,index:h,offset:m}:null}).filter(_o)}},e_=ae([zt,_p,fu,Jk,i5,Ag,h5,d5,hn],jfe),$fe=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=sa(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?Xr(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(_o):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(_o):r.domain().map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(_o)}},Ci=ae([zt,_p,Jk,Ag,h5,d5,hn],$fe),Ai=ae(An,Jk,(e,t)=>{if(!(e==null||t==null))return Gk(Gk({},e),{},{scale:t})}),Lfe=ae([An,fu,a5,XU],Qv),zfe=ae([Lfe],Ov),U8e=ae((e,t,r)=>KP(e,r),zfe,(e,t)=>{if(!(e==null||t==null))return Gk(Gk({},e),{},{scale:t})}),eW=ae([zt,Gm,Ym],(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}}),Bfe=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},W8e=ae([Bfe],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,x5=e=>e.options.validateTooltipEventTypes;function b5(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=v5(e),n=x5(e);return b5(t,r,n)}function tW(e){return $e(t=>jc(t,e))}var t_=(e,t)=>{var r,n=Number(t);if(!(Uo(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var rW=e=>e.tooltip.settings;var mu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},Ffe={itemInteraction:{click:mu,hover:mu},axisInteraction:{click:mu,hover:mu},keyboardInteraction:mu,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}},nW=Cr({name:"tooltip",initialState:Ffe,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Zt(t.payload))},prepare:Ir()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Ro(e).tooltipItemPayloads.indexOf(Zt(n));a>-1&&(e.tooltipItemPayloads[a]=Zt(o))},prepare:Ir()},removeTooltipEntrySettings:{reducer(e,t){var r=Ro(e).tooltipItemPayloads.indexOf(Zt(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:Ir()},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}}}),es=nW.actions,oW=es.addTooltipEntrySettings,aW=es.replaceTooltipEntrySettings,iW=es.removeTooltipEntrySettings,sW=es.setTooltipSettingsState,r_=es.setActiveMouseOverItemIndex,lW=es.mouseLeaveItem,n_=es.mouseLeaveChart,uW=es.setActiveClickItemIndex,o_=es.setMouseOverAxisIndex,cW=es.setMouseClickAxisIndex,Eg=es.setSyncInteraction,cx=es.setKeyboardInteraction;var dW=nW.reducer;function pW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function a_(e){for(var t=1;t{if(t==null)return mu;var o=qfe(e,t,r);if(o==null)return mu;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(Kfe(o)){if(a)return a_(a_({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return a_(a_({},mu),{},{coordinate:o.coordinate})};function Vfe(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 Gfe(e,t){var r=Vfe(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 Yfe(e,t,r){if(r==null||t==null)return!0;var n=Wt(e,t);return n==null||!wi(r)?!0:Gfe(n,r)}var $c=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!Ot(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||Yfe(u,r,n)?String(l):null};var s_=(e,t,r,n,o,a,i)=>{if(a!=null){var s=i[0],l=s?.getPosition(a);if(l!=null)return l;var u=o?.[Number(a)];if(u)return r==="horizontal"?{x:u.coordinate,y:(n.top+t)/2}:{x:(n.left+e)/2,y:u.coordinate}}};var l_=(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 u_=e=>e.options.tooltipPayloadSearcher;var gu=e=>e.tooltip;function fW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function mW(e){for(var t=1;te(t)}function gW(e){if(typeof e=="string")return e}function tme(e){if(!(e==null||typeof e!="object")){var t="name"in e?Qfe(e.name):void 0,r="unit"in e?Rfe(e.unit):void 0,n="dataKey"in e?eme(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?gW(e.color):void 0,i="fill"in e?gW(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function rme(e,t){return e??t}var c_=(e,t,r,n,o,a,i)=>{if(!(t==null||a==null)){var s=r.chartData,l=r.computedData,u=r.dataStartIndex,c=r.dataEndIndex,d=[];return e.reduce((p,f)=>{var m,y=f.dataDefinedOnItem,x=f.settings,h=rme(y,s),g=Array.isArray(h)?yS(h,u,c):h,v=(m=x?.dataKey)!==null&&m!==void 0?m:n,b=x?.nameKey,S;if(n&&Array.isArray(g)&&!Array.isArray(g[0])&&i==="axis"?(S=nw(g,n,o),S==null&&(S=a(g,t,l,b))):S=a(g,t,l,b),Array.isArray(S))S.forEach(_=>{var k,A,C=tme(_),E=C?.name,I=C?.dataKey,Q=C?.payload,$=mW(mW({},x),{},{name:E,unit:C?.unit,color:(k=C?.color)!==null&&k!==void 0?k:x?.color,fill:(A=C?.fill)!==null&&A!==void 0?A:x?.fill});p.push(jO({tooltipEntrySettings:$,dataKey:I,payload:Q,value:Wt(Q,I),name:E==null?void 0:String(E)}))});else{var w;p.push(jO({tooltipEntrySettings:x,dataKey:v,payload:S,value:Wt(S,v),name:(w=Wt(S,b))!==null&&w!==void 0?w:x?.name}))}return p},d)}};var w5=ae([io,VP,ag],Kk),nme=ae([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),ome=ae([no,Nc],ex),Lc=ae([nme,io,ome],tx,{memoizeOptions:{resultEqualityCheck:ig}}),ame=ae([Lc],e=>e.filter(up)),hW=ae([Lc],rx,{memoizeOptions:{resultEqualityCheck:ig}}),ime=ae([Lc],e=>e.some(t=>!t.data)),hu=ae([hW,Ya],nx),sme=ae([ame,Ya,io],sk),S5=ae([hu,io,Lc,Ya,ime,hW],ZP),yW=ae([io],Yk),lme=ae([io],e=>e.allowDataOverflow),vW=ae([yW,lme],YS),ume=ae([Lc],e=>e.filter(up)),cme=ae([sme,ume,Cc,RS],JP),dme=ae([cme,Ya,no,vW],QP),pme=ae([Lc],GP),fme=ae([hu,io,pme,Cg,no,R9],ax,{memoizeOptions:{resultEqualityCheck:cp}}),mme=ae([RP,no,Nc],Cp),gme=ae([mme,no],r5),hme=ae([e5,no,Nc],Cp),yme=ae([hme,no],n5),vme=ae([t5,no,Nc],Cp),xme=ae([vme,no],o5),bme=ae([gme,xme,yme],Rv),wme=ae([io,yW,vW,dme,fme,bme,zt,no],ix),zc=ae([io,zt,hu,S5,Cc,no,wme],sx),Sme=ae([zc,io,w5],lx),kme=ae([io,zc,Sme,no],ux),xW=e=>{var t=no(e),r=Nc(e),n=!1;return Ag(e,t,r,n)},k5=ae([io,xW],ip),_me=ae([io,w5,kme,k5],Qv),_5=ae([_me],Ov),Cme=ae([zt,S5,io,no],g5),Ame=ae([zt,S5,io,no],c5),Eme=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=sa(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?Xr(o[0]-o[1])*2*d:d,u&&i?i.map((p,f)=>{var m=n.map(p);return Ot(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(_o):n.domain().map((p,f)=>{var m=n.map(p);return Ot(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(_o)}}},Za=ae([zt,io,w5,_5,xW,Cme,Ame,no],Eme),C5=ae([v5,x5,rW],(e,t,r)=>b5(r.shared,e,t)),bW=e=>e.tooltip.settings.trigger,A5=e=>e.tooltip.settings.defaultIndex,dx=ae([gu,C5,bW,A5],i_),ts=ae([dx,hu,pu,zc],$c),d_=ae([Za,ts],t_),Ng=ae([dx],e=>{if(e)return e.dataKey}),p_=ae([dx],e=>{if(e)return e.graphicalItemId}),wW=ae([gu,C5,bW,A5],l_),Nme=ae([Ho,qo,zt,Fr,Za,A5,wW],s_),E5=ae([dx,Nme],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),N5=ae([dx],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),Tme=ae([wW,ts,Ya,pu,d_,u_,C5],c_),SW=ae([Tme],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});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 _W(e){for(var t=1;t$e(io),CW=()=>{var e=Ime(),t=$e(Za),r=$e(_5);return!e||!r?Xi(void 0,t):Xi(_W(_W({},e),{},{scale:r}),t)};function AW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Tg(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}},NW=(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 Tg(Tg(Tg({},n),nn(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Tg(Tg(Tg({},n),nn(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 TW(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 T5=(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=(F,N,O)=>[e,e+s,e-s].some(j=>(O?j>=F:j>F)&&j<=N),u=0;u0?(c=r[u-1])===null||c===void 0?void 0:c.coordinate:(d=r[i-1])===null||d===void 0?void 0:d.coordinate,x=(p=r[u])===null||p===void 0?void 0:p.coordinate,h=u>=i-1?(f=r[0])===null||f===void 0?void 0:f.coordinate:(m=r[u+1])===null||m===void 0?void 0:m.coordinate,g=void 0;if(!(y==null||x==null||h==null))if(Xr(x-y)!==Xr(h-x)){var v=[];if(Xr(h-x)===Xr(o[1]-o[0])){g=h;var b=x+o[1]-o[0];v[0]=Math.min(b,(b+y)/2),v[1]=Math.max(b,(b+y)/2)}else{g=y;var S=h+o[1]-o[0];v[0]=Math.min(x,(S+x)/2),v[1]=Math.max(x,(S+x)/2)}var w=[Math.min(x,(g+x)/2),Math.max(x,(g+x)/2)];if(l(w[0],w[1],!1)||l(v[0],v[1],!0)){var _;return(_=r[u])===null||_===void 0?void 0:_.index}}else{var k=Math.min(y,h),A=Math.max(y,h);if(l((k+x)/2,(A+x)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var E=0;E(I.coordinate+$.coordinate)/2||E>0&&E(I.coordinate+$.coordinate)/2&&e<=(I.coordinate+Q.coordinate)/2)return I.index}}return-1};var f_=()=>$e(ag),O5=(e,t)=>t,OW=(e,t,r)=>r,P5=(e,t,r,n)=>n,PW=ae(Za,e=>ou(e,t=>t.coordinate)),M5=ae([gu,O5,OW,P5],i_),I5=ae([M5,hu,pu,zc],$c),MW=(e,t,r)=>{if(t!=null){var n=gu(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},IW=ae([gu,O5,OW,P5],l_),px=ae([Ho,qo,zt,Fr,Za,P5,IW],s_),DW=ae([M5,px],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),D5=ae([Za,I5],t_),jW=ae([IW,I5,Ya,pu,D5,u_,O5],c_),$W=ae([M5,I5],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),Lme=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&TW(e,i)){var s=u7(e,t),l=T5(s,a,o,r,n),u=EW(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},zme=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=B9(e,r);if(s){var l=c7(s,t),u=T5(l,i,a,n,o),c=NW(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},LW=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?Lme(e,t,n,o,a,i,s):zme(e,t,r,n,o,a,i)};var Og=Z(J()),GW=Z(Rh());var zW=ae(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}}),BW=ae(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(ir)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:hF}});function FW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function UW(e){for(var t=1;tUW(UW({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),Wme)},qme=new Set(Object.values(ir));function Kme(e){return qme.has(e)}var WW=Cr({name:"zIndex",initialState:Hme,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:Ir()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!Kme(r)&&delete e.zIndexMap[r])},prepare:Ir()},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=Zt(o):e.zIndexMap[n].element=Zt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Zt(o),panoramaElement:a?Zt(o):void 0}},prepare:Ir()},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:Ir()}}}),m_=WW.actions,HW=m_.registerZIndexPortal,g_=m_.unregisterZIndexPortal,qW=m_.registerZIndexPortalElement,KW=m_.unregisterZIndexPortalElement;var VW=WW.reducer;function on(e){var t=e.zIndex,r=e.children,n=C7(),o=n&&t!==void 0&&t!==0,a=Ar(),i=(0,Og.useRef)(void 0),s=(0,Og.useRef)(new Set),l=Dt(),u=$e(d=>zW(d,t,a));if((0,Og.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(HW({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,Og.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,GW.createPortal)(r,c):null}function j5(){return j5=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,v_.useContext)($5);var mx=Z(J());var RW=Z(QW(),1);var eH=RW.default;var Mg=new eH;var b_="recharts.syncEvent.tooltip",z5="recharts.syncEvent.brush";var Bc=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!Uo(r))return e[r]}},Rme={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},tH=Cr({name:"options",initialState:Rme,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),rH=tH.reducer,nH=tH.actions.createEventEmitter;function oH(e){return e.tooltip.syncInteraction}var ege={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},aH=Cr({name:"chartData",initialState:ege,reducers:{setChartData(e,t){if(e.chartData=Zt(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)}}}),B5=aH.actions,F5=B5.setChartData,iH=B5.setDataStartEndIndexes,tge=B5.setComputedData;var sH=aH.reducer;var rge=["x","y"];function lH(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 Ig(e){for(var t=1;tl.rootProps.className);(0,mx.useEffect)(()=>{if(e==null)return Sa;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(Eg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var p;if(i&&c!==null&&c!==void 0&&(p=c.payload)!==null&&p!==void 0&&p.coordinate&&c.payload.sourceViewBox){var f=c.payload.coordinate,m=f.x,y=f.y,x=ige(f,rge),h=c.payload.sourceViewBox,g=h.x,v=h.y,b=h.width,S=h.height,w=Ig(Ig({},x),{},{x:i.x+(b?(m-g)/b:0)*i.width,y:i.y+(S?(y-v)/S:0)*i.height});r(Ig(Ig({},c),{},{payload:Ig(Ig({},c.payload),{},{coordinate:w})}))}else r(c);return}if(o!=null){var _;if(typeof n=="function"){var k={activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate},A=n(o,k);_=o[A]}else n==="value"&&(_=o.find(O=>String(O.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(Eg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(_==null){r(Eg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var E=C.x,I=C.y,Q=Math.min(E,i.x+i.width),$=Math.min(I,i.y+i.height),F={x:a==="horizontal"?_.coordinate:Q,y:a==="horizontal"?$:_.coordinate},N=Eg({active:c.payload.active,coordinate:F,dataKey:c.payload.dataKey,index:String(_.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return Mg.on(b_,l),()=>{Mg.off(b_,l)}},[s,r,t,e,n,o,a,i])}function uge(){var e=$e(ek),t=$e(tk),r=Dt();(0,mx.useEffect)(()=>{if(e==null)return Sa;var n=(o,a,i)=>{t!==i&&e===o&&r(iH(a))};return Mg.on(z5,n),()=>{Mg.off(z5,n)}},[r,t,e])}function uH(){var e=Dt();(0,mx.useEffect)(()=>{e(nH())},[e]),lge(),uge()}function cH(e,t,r,n,o,a){var i=$e(m=>MW(m,e,t)),s=$e(p_),l=$e(tk),u=$e(ek),c=$e(oP),d=$e(oH),p=d?.sourceViewBox!=null,f=tp();(0,mx.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=Eg({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Mg.emit(b_,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function dH(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 pH(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{_(sW({shared:g,trigger:v,axisId:w,active:o,defaultIndex:k}))},[_,g,v,w,o,k]);var A=tp(),C=PS(),E=tW(g),I=(t=$e(R=>$W(R,E,v,k)))!==null&&t!==void 0?t:{},Q=I.activeIndex,$=I.isActive,F=$e(R=>jW(R,E,v,k)),N=$e(R=>D5(R,E,v,k)),O=$e(R=>DW(R,E,v,k)),j=F,T=ZW(),D=(r=o??$)!==null&&r!==void 0?r:!1,M=qw([j,D]),K=fge(M,2),V=K[0],L=K[1],G=E==="axis"?N:void 0;cH(E,v,O,G,Q,D);var W=S??T;if(W==null||A==null||E==null)return null;var ie=j??mH;D||(ie=mH),u&&ie.length&&(ie=zw(ie.filter(R=>R.value!=null&&(R.hide!==!0||n.includeHidden)),p,vge));var Ie=ie.length>0,ge=pH(pH({},n),{},{payload:ie,label:G,active:D,activeIndex:Q,coordinate:O,accessibilityLayer:C}),ce=rs.createElement(Z7,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:D,coordinate:O,hasPayload:Ie,offset:d,position:f,reverseDirection:m,useTranslate3d:y,viewBox:A,wrapperStyle:x,lastBoundingBox:V,innerRef:L,hasPortalFromProps:!!S},xge(l,ge));return rs.createElement(rs.Fragment,null,(0,hH.createPortal)(ce,W),D&&rs.createElement(XW,{cursor:h,tooltipEventType:E,coordinate:O,payload:ie,index:Q}))}var yu=e=>null;yu.displayName="Cell";var W5=Z(J()),__=Z(J());function wge(e,t,r){return(t=Sge(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Sge(e){var t=kge(e,"string");return typeof t=="symbol"?t:t+""}function kge(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 w_=class{constructor(t){wge(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 yH(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 _ge(e){for(var t=1;t{try{var r=document.getElementById(xH);r||(r=document.createElement("span"),r.setAttribute("id",xH),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,Tge,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Ap=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Zi.isSsr)return{width:0,height:0};if(!wH.enableCache)return bH(t,r);var n=Oge(t,r),o=vH.get(n);if(o)return o;var a=bH(t,r);return vH.set(n,a),a};var AH;function S_(e,t){return Dge(e)||Ige(e,t)||Mge(e,t)||Pge()}function Pge(){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 Mge(e,t){if(e){if(typeof e=="string")return SH(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)?SH(e,t):void 0}}function SH(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=[];ar(t)||(r?o=t.toString().split(""):o=t.toString().split(IH));var a=o.map(s=>({word:s,width:Ap(s,n).width})),i=r?0:Ap("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function C_(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function jH(e){return ar(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var $H=(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),ehe="\u2026",PH=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=DH({breakAll:r,style:n,children:l+ehe});if(!u)return[!1,[]];var c=$H(u.wordsWithComputedWidth,a,i,s),d=c.length>o||LH(c).width>Number(a);return[d,c]},the=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=je(a),c=String(i),d=$H(t,n,r,o);if(!u||o)return d;var p=d.length>a||LH(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,y=0,x;f<=m&&y<=c.length-1;){var h=Math.floor((f+m)/2),g=h-1,v=PH(c,g,l,s,a,n,r,o),b=TH(v,2),S=b[0],w=b[1],_=PH(c,h,l,s,a,n,r,o),k=TH(_,1),A=k[0];if(!S&&!A&&(f=h+1),S&&A&&(m=h-1),!S&&A){x=w;break}y++}return x||d},MH=e=>{var t=ar(e)?[]:e.toString().split(IH);return[{words:t,width:void 0}]},rhe=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!Zi.isSsr){var s,l,u=DH({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return MH(n);return the({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return MH(n)},zH="#808080",nhe={angle:0,breakAll:!1,capHeight:"0.71em",fill:zH,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},Ep=(0,__.forwardRef)((e,t)=>{var r=nr(e,nhe),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=NH(r,Gge),p=(0,__.useMemo)(()=>rhe({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:l,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,l,d.style,d.width]),f=d.dx,m=d.dy,y=d.angle,x=d.className,h=d.breakAll,g=NH(d,Yge);if(!wa(n)||!wa(o)||p.length===0)return null;var v=Number(n)+(je(f)?f:0),b=Number(o)+(je(m)?m:0);if(!Ot(v)||!Ot(b))return null;var S;switch(c){case"start":S=k_("calc(".concat(i,")"));break;case"middle":S=k_("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:S=k_("calc(".concat(p.length-1," * -").concat(a,")"));break}var w=[],_=p[0];if(l&&_!=null){var k=_.width,A=d.width;w.push("scale(".concat(je(A)&&je(k)?A/k:1,")"))}return y&&w.push("rotate(".concat(y,", ").concat(v,", ").concat(b,")")),w.length&&(g.transform=w.join(" ")),W5.createElement("text",U5({},gn(g),{ref:t,x:v,y:b,className:bt("recharts-text",x),textAnchor:u,fill:s.includes("url")?zH:s}),p.map((C,E)=>{var I=C.words.join(h?"":" ");return W5.createElement("tspan",{x:v,dy:E===0?S:a,key:"".concat(I,"-").concat(E)},I)}))});Ep.displayName="Text";var Ja=Z(J()),Ao=Z(J());var ohe=["labelRef"],ahe=["content"];function BH(e,t){if(e==null)return{};var r,n,o=ihe(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,Ao.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return Ja.createElement(UH.Provider,{value:l},s)},HH=()=>{var e=(0,Ao.useContext)(UH),t=tp();return e||(t?nv(t):void 0)},qH=(0,Ao.createContext)(null),KH=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,Ao.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return Ja.createElement(qH.Provider,{value:u},l)},che=()=>{var e=(0,Ao.useContext)(qH),t=$e(ik);return e||t},dhe=e=>{var t=e.value,r=e.formatter,n=ar(e.children)?t:e.children;return typeof r=="function"?r(n):n},Tp=e=>e!=null&&typeof e=="function",phe=(e,t)=>{var r=Xr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},fhe=(e,t,r,n,o)=>{var a=e.offset,i=e.className,s=o.cx,l=o.cy,u=o.innerRadius,c=o.outerRadius,d=o.startAngle,p=o.endAngle,f=o.clockWise,m=(u+c)/2,y=phe(d,p),x=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+x*a,g=f;break;case"insideEnd":h=p-x*a,g=!f;break;case"end":h=p+x*a,g=f;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=nn(s,l,m,h),b=nn(s,l,m,h+(g?1:-1)*359),S="M".concat(v.x,",").concat(v.y,` + A`,",",",0,0,",",",",","Z"])),E.x,E.y,a,a,+(c<0),C.x,C.y,n,n,+(J>180),+(c>0),S.x,S.y,a,a,+(c<0),w.x,w.y)}else b+=Co(Q9||(Q9=ip(["L",",","Z"])),t,r);return b},vce={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},ZS=e=>{var t=nr(e,vce),r=t.cx,n=t.cy,o=t.innerRadius,a=t.outerRadius,i=t.cornerRadius,s=t.forceCornerRadius,l=t.cornerIsExternal,u=t.startAngle,c=t.endAngle,d=t.className;if(a0&&Math.abs(u-c)<360?y=yce({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=eF({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),R9.createElement("path",nP({},yn(t),{className:p,d:y}))};function tF(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(vw(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=an(n,o,a,s),u=an(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return YS(t)}}function rF(e){return Yw(e)?NaN:Number(e)}function JS(e){return e?(e=rF(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function QS(e,t,r){r&&typeof r!="number"&&hv(e,t,r)&&(t=r=void 0),e=JS(e),t===void 0?(t=e,e=0):t=JS(t),r=r===void 0?ee.chartData,sp=se([Ya],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),lp=(e,t,r,n)=>n?sp(e):Ya(e),RS=(e,t,r)=>r?sp(e):Ya(e),nF=se([lp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),oF=se([sp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),aF=se([Ya],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function oP(e,t){return Sce(e)||wce(e,t)||bce(e,t)||xce()}function xce(){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 bce(e,t){if(e){if(typeof e=="string")return iF(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)?iF(e,t):void 0}}function iF(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=Iv(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},uP=(e,t,r)=>{if(e.lte(0))return new wr.default(0);var n=sP(e.toNumber()),o=new wr.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new wr.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new wr.default(l.toNumber()):new wr.default(Math.ceil(l.toNumber()))},pF=(e,t,r)=>{var n;if(e.lte(0))return new wr.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new wr.default(a).abs().log(10).toNumber()),s=new wr.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 wr.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,p=new wr.default(d).mul(s);return t?p:new wr.default(Math.ceil(p.toNumber()))},Ece=(e,t,r)=>{var n=new wr.default(1),o=new wr.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new wr.default(10).pow(sP(e)-1),o=new wr.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new wr.default(Math.floor(e)))}else e===0?o=new wr.default(Math.floor((t-1)/2)):r||(o=new wr.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]:uP;if(!Number.isFinite((r-t)/(n-1)))return{step:new wr.default(0),tickMin:new wr.default(0),tickMax:new wr.default(0)};var s=i(new wr.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new wr.default(0):(l=new wr.default(t).add(r).div(2),l=l.sub(new wr.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new wr.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?fF(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 wr.default(u).mul(s)),tickMax:l.add(new wr.default(c).mul(s))})};var rk=function(t){var r=Iv(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=dF([n,o]),c=Iv(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 Ece(d,a,i);var m=s==="snap125"?pF:uP,y=fF(d,p,l,i,0,m),x=y.step,h=y.tickMin,g=y.tickMax,v=lP(h,g.add(new wr.default(.1).mul(x)),x);return n>o?v.reverse():v},nk=function(t,r){var n=Iv(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=dF([o,a]),u=Iv(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"?pF:uP,f=Math.max(r,2),m=p(new wr.default(d).sub(c).div(f-1),i,0),y=[...lP(new wr.default(c),new wr.default(d),m),d];if(i===!1){y=y.map(h=>Math.round(h));var x=y.length-1;x>0&&y[x]===y[x-1]&&(y=y.slice(0,x))}return o>a?y.reverse():y};var cP=e=>e.rootProps.maxBarSize,mF=e=>e.rootProps.barGap,ok=e=>e.rootProps.barCategoryGap,gF=e=>e.rootProps.barSize,Ac=e=>e.rootProps.stackOffset,ak=e=>e.rootProps.reverseStackOrder,lg=e=>e.options.chartName,ik=e=>e.rootProps.syncId,dP=e=>e.rootProps.syncMethod,sk=e=>e.options.eventEmitter,hF=e=>e.rootProps.baseValue;var ir={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 Ec={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:ir.axis};var Is={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:ir.axis};var up=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function cp(e,t,r){if(r!=="auto")return r;if(e!=null)return sa(e,t)?"category":"number"}function yF(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 lk(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},uk=se([Pce,MS],(e,t)=>{var r;if(e!=null)return e;var n=(r=cp(t,"angleAxis",vF.type))!==null&&r!==void 0?r:"category";return lk(lk({},vF),{},{type:n})}),Mce=(e,t)=>e.polarAxis.radiusAxis[t],ck=se([Mce,MS],(e,t)=>{var r;if(e!=null)return e;var n=(r=cp(t,"radiusAxis",xF.type))!==null&&r!==void 0?r:"category";return lk(lk({},xF),{},{type:n})}),dk=e=>e.polarOptions,pP=se([qo,Ko,Fr],GS),bF=se([dk,pP],(e,t)=>{if(e!=null)return Dn(e.innerRadius,t,0)}),wF=se([dk,pP],(e,t)=>{if(e!=null)return Dn(e.outerRadius,t,t*.8)}),Ice=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},fP=se([dk],Ice),WDe=se([uk,fP],up),mP=se([pP,bF,wF],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),HDe=se([ck,mP],up),pk=se([Bt,dk,bF,wF,qo,Ko],(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:Dn(i,o,o/2),cy:Dn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var vn=(e,t)=>t;var dp=(e,t,r)=>r;function Nc(e){return e?.id}function fk(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=Nc(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Ht(p,i,null)),y=Ht(p,l.dataKey,0),x;s.has(m)?x=s.get(m):x={},Object.assign(x,{[d]:y}),s.set(m,x)})}}),Array.from(s.values())}function pp(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var fp=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function ug(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function SF(e,t){if(e.length===t.length){for(var r=0;r{var t=Bt(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var Tc=e=>e.tooltip.settings.axisId;function Dv(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 mk=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!wi(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 tx={};wte(tx,{scaleBand:()=>zv,scaleDiverging:()=>Xk,scaleDivergingLog:()=>GP,scaleDivergingPow:()=>Zk,scaleDivergingSqrt:()=>qU,scaleDivergingSymlog:()=>YP,scaleIdentity:()=>Ik,scaleImplicit:()=>wk,scaleLinear:()=>Mk,scaleLog:()=>Dk,scaleOrdinal:()=>pg,scalePoint:()=>TF,scalePow:()=>Xv,scaleQuantile:()=>Lk,scaleQuantize:()=>zk,scaleRadial:()=>$k,scaleSequential:()=>Kk,scaleSequentialLog:()=>KP,scaleSequentialPow:()=>Vk,scaleSequentialQuantile:()=>Gk,scaleSequentialSqrt:()=>HU,scaleSequentialSymlog:()=>VP,scaleSqrt:()=>dU,scaleSymlog:()=>jk,scaleThreshold:()=>Bk,scaleTime:()=>HP,scaleUtc:()=>qP,tickFormat:()=>qv});function _a(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function gP(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function mp(e){let t,r,n;e.length!==2?(t=_a,r=(s,l)=>_a(e(s),l),n=(s,l)=>e(s)-l):(t=e===_a||e===gP?e:Dce,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 Dce(){return 0}function jv(e){return e===null?NaN:+e}function*kF(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 _F=mp(_a),CF=_F.right,jce=_F.left,$ce=mp(jv).center,Ds=CF;var cg=class extends Map{constructor(t,r=Bce){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(AF(this,t))}has(t){return super.has(AF(this,t))}set(t,r){return super.set(Lce(this,t),r)}delete(t){return super.delete(zce(this,t))}};function AF({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Lce({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function zce({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Bce(e){return e!==null&&typeof e=="object"?e.valueOf():e}function EF(e=_a){if(e===_a)return hP;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 hP(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Fce=Math.sqrt(50),Uce=Math.sqrt(10),Wce=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>=Fce?10:a>=Uce?5:a>=Wce?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 yk(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 vk(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?hP:EF(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));vk(e,t,f,m,o)}let a=e[t],i=r,s=n;for(Lv(e,r,t),o(e[n],a)>0&&Lv(e,r,n);i0;)--s}o(e[r],a)===0?Lv(e,r,s):(++s,Lv(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function Lv(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function xk(e,t,r){if(e=Float64Array.from(kF(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return yk(e);if(t>=1)return hk(e);var n,o=(n-1)*t,a=Math.floor(o),i=hk(vk(e,a).subarray(0,a+1)),s=yk(e.subarray(a+1));return i+(s-i)*(o-a)}}function yP(e,t,r=jv){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 bk(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?kk(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?kk(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=qce.exec(e))?new Xa(t[1],t[2],t[3],1):(t=Kce.exec(e))?new Xa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Vce.exec(e))?kk(t[1],t[2],t[3],t[4]):(t=Gce.exec(e))?kk(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Yce.exec(e))?$F(t[1],t[2]/100,t[3]/100,1):(t=Xce.exec(e))?$F(t[1],t[2]/100,t[3]/100,t[4]):OF.hasOwnProperty(e)?IF(OF[e]):e==="transparent"?new Xa(NaN,NaN,NaN,0):null}function IF(e){return new Xa(e>>16&255,e>>8&255,e&255,1)}function kk(e,t,r,n){return n<=0&&(e=t=r=NaN),new Xa(e,t,r,n)}function Qce(e){return e instanceof Uv||(e=Oc(e)),e?(e=e.rgb(),new Xa(e.r,e.g,e.b,e.opacity)):new Xa}function mg(e,t,r,n){return arguments.length===1?Qce(e):new Xa(e,t,r,n??1)}function Xa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}Sk(Xa,mg,vP(Uv,{brighter(e){return e=e==null?Ck:Math.pow(Ck,e),new Xa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Bv:Math.pow(Bv,e),new Xa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Xa(yp(this.r),yp(this.g),yp(this.b),Ak(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:DF,formatHex:DF,formatHex8:Rce,formatRgb:jF,toString:jF}));function DF(){return`#${hp(this.r)}${hp(this.g)}${hp(this.b)}`}function Rce(){return`#${hp(this.r)}${hp(this.g)}${hp(this.b)}${hp((isNaN(this.opacity)?1:this.opacity)*255)}`}function jF(){let e=Ak(this.opacity);return`${e===1?"rgb(":"rgba("}${yp(this.r)}, ${yp(this.g)}, ${yp(this.b)}${e===1?")":`, ${e})`}`}function Ak(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function yp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function hp(e){return e=yp(e),(e<16?"0":"")+e.toString(16)}function $F(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new js(e,t,r,n)}function zF(e){if(e instanceof js)return new js(e.h,e.s,e.l,e.opacity);if(e instanceof Uv||(e=Oc(e)),!e)return new js;if(e instanceof js)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 js(i,s,l,e.opacity)}function BF(e,t,r,n){return arguments.length===1?zF(e):new js(e,t,r,n??1)}function js(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}Sk(js,BF,vP(Uv,{brighter(e){return e=e==null?Ck:Math.pow(Ck,e),new js(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Bv:Math.pow(Bv,e),new js(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Xa(xP(e>=240?e-240:e+120,o,n),xP(e,o,n),xP(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new js(LF(this.h),_k(this.s),_k(this.l),Ak(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=Ak(this.opacity);return`${e===1?"hsl(":"hsla("}${LF(this.h)}, ${_k(this.s)*100}%, ${_k(this.l)*100}%${e===1?")":`, ${e})`}`}}));function LF(e){return e=(e||0)%360,e<0?e+360:e}function _k(e){return Math.max(0,Math.min(1,e||0))}function xP(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 bP(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 FF(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 ede(e,t){return function(r){return e+r*t}}function tde(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 WF(e){return(e=+e)==1?Ek:function(t,r){return r-t?tde(t,r,e):Wv(isNaN(t)?r:t)}}function Ek(e,t){var r=t-e;return r?ede(e,r):Wv(isNaN(e)?t:e)}var wP=(function e(t){var r=WF(t);function n(o,a){var i=r((o=mg(o)).r,(a=mg(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=Ek(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 HF(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:Pc(n,o)})),r=SP.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function ade(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?ide:ade,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),Pc)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Mc),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=vp,c()},d.clamp=function(p){return arguments.length?(i=p?!0:Eo,c()):i!==Eo},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 bp(){return xp()(Eo,Eo)}function JF(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function wp(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 pl(e){return e=wp(Math.abs(e)),e?e[1]:NaN}function QF(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 RF(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var sde=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function fl(e){if(!(t=sde.exec(e)))throw new Error("invalid format: "+e);var t;return new Tk({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]})}fl.prototype=Tk.prototype;function Tk(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+""}Tk.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 eU(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 Hv;function tU(e,t){var r=wp(e,t);if(!r)return Hv=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(Hv=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")+wp(e,Math.max(0,t+a-1))[0]}function AP(e,t){var r=wp(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 EP={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:JF,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)=>AP(e*100,t),r:AP,s:tU,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function NP(e){return e}var rU=Array.prototype.map,nU=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function oU(e){var t=e.grouping===void 0||e.thousands===void 0?NP:QF(rU.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?NP:RF(rU.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=fl(d);var f=d.fill,m=d.align,y=d.sign,x=d.symbol,h=d.zero,g=d.width,v=d.comma,b=d.precision,k=d.trim,S=d.type;S==="n"?(v=!0,S="g"):EP[S]||(b===void 0&&(b=12),k=!0,S="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var w=(p&&p.prefix!==void 0?p.prefix:"")+(x==="$"?r:x==="#"&&/[boxX]/.test(S)?"0"+S.toLowerCase():""),_=(x==="$"?n:/[%p]/.test(S)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),A=EP[S],C=/[defgprs%]/.test(S);b=b===void 0?6:/[gprs]/.test(S)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function E(I){var J=w,$=_,U,N,T;if(S==="c")$=A(I)+$,I="";else{I=+I;var D=I<0||1/I<0;if(I=isNaN(I)?l:A(Math.abs(I),b),k&&(I=eU(I)),D&&+I==0&&y!=="+"&&(D=!1),J=(D?y==="("?y:s:y==="-"||y==="("?"":y)+J,$=(S==="s"&&!isNaN(I)&&Hv!==void 0?nU[8+Hv/3]:"")+$+(D&&y==="("?")":""),C){for(U=-1,N=I.length;++UT||T>57){$=(T===46?o+I.slice(U+1):I.slice(U))+$,I=I.slice(0,U);break}}}v&&!h&&(I=t(I,1/0));var O=J.length+I.length+$.length,j=O>1)+J+I+$+j.slice(O);break;default:I=j+J+I+$;break}return a(I)}return E.toString=function(){return d+""},E}function c(d,p){var f=Math.max(-8,Math.min(8,Math.floor(pl(p)/3)))*3,m=Math.pow(10,-f),y=u((d=fl(d),d.type="f",d),{suffix:nU[8+f/3]});return function(x){return y(m*x)}}return{format:u,formatPrefix:c}}var Ok,gg,Pk;TP({thousands:",",grouping:[3],currency:["$",""]});function TP(e){return Ok=oU(e),gg=Ok.format,Pk=Ok.formatPrefix,Ok}function OP(e){return Math.max(0,-pl(Math.abs(e)))}function PP(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(pl(t)/3)))*3-pl(Math.abs(e)))}function MP(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,pl(t)-pl(e))+1}function qv(e,t,r,n){var o=dg(e,t,r),a;switch(n=fl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=PP(o,i))&&(n.precision=a),Pk(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=MP(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=OP(o))&&(n.precision=a-(n.type==="%")*2);break}}return gg(n)}function Ca(e){var t=e.domain;return e.ticks=function(r){var n=t();return gp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return qv(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=$v(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 Mk(){var e=bp();return e.copy=function(){return dl(e,Mk())},An.apply(e,arguments),Ca(e)}function Ik(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,Mc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Ik(e).unknown(t)},e=arguments.length?Array.from(e,Mc):[0,1],Ca(r)}function Kv(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 pde(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 sU(e){return(t,r)=>-e(-t,r)}function Vv(e){let t=e(aU,iU),r=t.domain,n=10,o,a;function i(){return o=pde(n),a=dde(n),r()[0]<0?(o=sU(o),a=sU(a),e(lde,ude)):e(aU,iU),t}return t.base=function(s){return arguments.length?(n=+s,i()):n},t.domain=function(s){return arguments.length?(r(s),i()):r()},t.ticks=s=>{let l=r(),u=l[0],c=l[l.length-1],d=c0){for(;p<=f;++p)for(m=1;mc)break;h.push(y)}}else for(;p<=f;++p)for(m=n-1;m>=1;--m)if(y=p>0?m/a(-p):m*a(p),!(yc)break;h.push(y)}h.length*2{if(s==null&&(s=10),l==null&&(l=n===10?"s":","),typeof l!="function"&&(!(n%1)&&(l=fl(l)).precision==null&&(l.trim=!0),l=gg(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(Kv(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function Dk(){let e=Vv(xp()).domain([1,10]);return e.copy=()=>dl(e,Dk()).base(e.base()),An.apply(e,arguments),e}function lU(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function uU(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Gv(e){var t=1,r=e(lU(t),uU(t));return r.constant=function(n){return arguments.length?e(lU(t=+n),uU(t)):t},Ca(r)}function jk(){var e=Gv(xp());return e.copy=function(){return dl(e,jk()).constant(e.constant())},An.apply(e,arguments)}function cU(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function fde(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function mde(e){return e<0?-e*e:e*e}function Yv(e){var t=e(Eo,Eo),r=1;function n(){return r===1?e(Eo,Eo):r===.5?e(fde,mde):e(cU(r),cU(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Ca(t)}function Xv(){var e=Yv(xp());return e.copy=function(){return dl(e,Xv()).exponent(e.exponent())},An.apply(e,arguments),e}function dU(){return Xv.apply(null,arguments).exponent(.5)}function pU(e){return Math.sign(e)*e*e}function gde(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function $k(){var e=bp(),t=[0,1],r=!1,n;function o(a){var i=gde(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(pU(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,Mc)).map(pU)),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 $k(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},An.apply(o,arguments),Ca(o)}function Lk(){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 zk().domain([e,t]).range(o).unknown(a)},An.apply(Ca(i),arguments)}function Bk(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Ds(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 Bk().domain(e).range(t).unknown(r)},An.apply(o,arguments)}var IP=new Date,DP=new Date;function Jr(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(uJr(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)=>(IP.setTime(+a),DP.setTime(+i),e(IP),e(DP),Math.floor(r(IP,DP))),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 Zv=Jr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Zv.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Jr(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Zv);var w$e=Zv.range;var es=Jr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),fU=es.range;var hg=Jr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),hde=hg.range,yg=Jr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),yde=yg.range;var vg=Jr(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()),vde=vg.range,xg=Jr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),xde=xg.range;var uu=Jr(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),bde=uu.range,_p=Jr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),wde=_p.range,Fk=Jr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),Sde=Fk.range;function Cp(e){return Jr(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 cu=Cp(0),bg=Cp(1),gU=Cp(2),hU=Cp(3),Ic=Cp(4),yU=Cp(5),vU=Cp(6),xU=cu.range,kde=bg.range,_de=gU.range,Cde=hU.range,Ade=Ic.range,Ede=yU.range,Nde=vU.range;function Ap(e){return Jr(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 du=Ap(0),wg=Ap(1),bU=Ap(2),wU=Ap(3),Dc=Ap(4),SU=Ap(5),kU=Ap(6),_U=du.range,Tde=wg.range,Ode=bU.range,Pde=wU.range,Mde=Dc.range,Ide=SU.range,Dde=kU.range;var Sg=Jr(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()),jde=Sg.range,kg=Jr(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()),$de=kg.range;var ki=Jr(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());ki.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Jr(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 Lde=ki.range,_i=Jr(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:Jr(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 zde=_i.range;function AU(e,t,r,n,o,a){let i=[[es,1,1e3],[es,5,5*1e3],[es,15,15*1e3],[es,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=cx).right(i,p);if(f===i.length)return e.every(dg(u/31536e6,c/31536e6,d));if(f===0)return Zv.every(Math.max(dg(u,c,d),1));let[m,y]=i[p/i[f-1][2]53)return null;"w"in ee||(ee.w=1),"Z"in ee?(te=FP(Qv(ee.y,0,1)),F=te.getUTCDay(),te=F>4||F===0?wg.ceil(te):wg(te),te=_p.offset(te,(ee.V-1)*7),ee.y=te.getUTCFullYear(),ee.m=te.getUTCMonth(),ee.d=te.getUTCDate()+(ee.w+6)%7):(te=BP(Qv(ee.y,0,1)),F=te.getDay(),te=F>4||F===0?bg.ceil(te):bg(te),te=uu.offset(te,(ee.V-1)*7),ee.y=te.getFullYear(),ee.m=te.getMonth(),ee.d=te.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),F="Z"in ee?FP(Qv(ee.y,0,1)).getUTCDay():BP(Qv(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(F+5)%7:ee.w+ee.U*7-(F+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,FP(ee)):BP(ee)}}function _(ge,de,R,ee){for(var L=0,te=de.length,F=R.length,P,Y;L=F)return-1;if(P=de.charCodeAt(L++),P===37){if(P=de.charAt(L++),Y=k[P in EU?de.charAt(L++):P],!Y||(ee=Y(ge,R,ee))<0)return-1}else if(P!=R.charCodeAt(ee++))return-1}return ee}function A(ge,de,R){var ee=u.exec(de.slice(R));return ee?(ge.p=c.get(ee[0].toLowerCase()),R+ee[0].length):-1}function C(ge,de,R){var ee=f.exec(de.slice(R));return ee?(ge.w=m.get(ee[0].toLowerCase()),R+ee[0].length):-1}function E(ge,de,R){var ee=d.exec(de.slice(R));return ee?(ge.w=p.get(ee[0].toLowerCase()),R+ee[0].length):-1}function I(ge,de,R){var ee=h.exec(de.slice(R));return ee?(ge.m=g.get(ee[0].toLowerCase()),R+ee[0].length):-1}function J(ge,de,R){var ee=y.exec(de.slice(R));return ee?(ge.m=x.get(ee[0].toLowerCase()),R+ee[0].length):-1}function $(ge,de,R){return _(ge,t,de,R)}function U(ge,de,R){return _(ge,r,de,R)}function N(ge,de,R){return _(ge,n,de,R)}function T(ge){return i[ge.getDay()]}function D(ge){return a[ge.getDay()]}function O(ge){return l[ge.getMonth()]}function j(ge){return s[ge.getMonth()]}function M(ge){return o[+(ge.getHours()>=12)]}function H(ge){return 1+~~(ge.getMonth()/3)}function G(ge){return i[ge.getUTCDay()]}function z(ge){return a[ge.getUTCDay()]}function V(ge){return l[ge.getUTCMonth()]}function K(ge){return s[ge.getUTCMonth()]}function ie(ge){return o[+(ge.getUTCHours()>=12)]}function Ie(ge){return 1+~~(ge.getUTCMonth()/3)}return{format:function(ge){var de=S(ge+="",v);return de.toString=function(){return ge},de},parse:function(ge){var de=w(ge+="",!1);return de.toString=function(){return ge},de},utcFormat:function(ge){var de=S(ge+="",b);return de.toString=function(){return ge},de},utcParse:function(ge){var de=w(ge+="",!0);return de.toString=function(){return ge},de}}}var EU={"-":"",_:" ",0:"0"},Vo=/^\s*\d+/,Fde=/^%/,Ude=/[\\^$*+?|[\]().{}]/g;function Er(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function Hde(e,t,r){var n=Vo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function qde(e,t,r){var n=Vo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Kde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Vde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Gde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function NU(e,t,r){var n=Vo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function TU(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Yde(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 Xde(e,t,r){var n=Vo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Zde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function OU(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Jde(e,t,r){var n=Vo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function PU(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Qde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Rde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function epe(e,t,r){var n=Vo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function tpe(e,t,r){var n=Vo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function rpe(e,t,r){var n=Fde.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function npe(e,t,r){var n=Vo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function ope(e,t,r){var n=Vo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function MU(e,t){return Er(e.getDate(),t,2)}function ape(e,t){return Er(e.getHours(),t,2)}function ipe(e,t){return Er(e.getHours()%12||12,t,2)}function spe(e,t){return Er(1+uu.count(ki(e),e),t,3)}function LU(e,t){return Er(e.getMilliseconds(),t,3)}function lpe(e,t){return LU(e,t)+"000"}function upe(e,t){return Er(e.getMonth()+1,t,2)}function cpe(e,t){return Er(e.getMinutes(),t,2)}function dpe(e,t){return Er(e.getSeconds(),t,2)}function ppe(e){var t=e.getDay();return t===0?7:t}function fpe(e,t){return Er(cu.count(ki(e)-1,e),t,2)}function zU(e){var t=e.getDay();return t>=4||t===0?Ic(e):Ic.ceil(e)}function mpe(e,t){return e=zU(e),Er(Ic.count(ki(e),e)+(ki(e).getDay()===4),t,2)}function gpe(e){return e.getDay()}function hpe(e,t){return Er(bg.count(ki(e)-1,e),t,2)}function ype(e,t){return Er(e.getFullYear()%100,t,2)}function vpe(e,t){return e=zU(e),Er(e.getFullYear()%100,t,2)}function xpe(e,t){return Er(e.getFullYear()%1e4,t,4)}function bpe(e,t){var r=e.getDay();return e=r>=4||r===0?Ic(e):Ic.ceil(e),Er(e.getFullYear()%1e4,t,4)}function wpe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Er(t/60|0,"0",2)+Er(t%60,"0",2)}function IU(e,t){return Er(e.getUTCDate(),t,2)}function Spe(e,t){return Er(e.getUTCHours(),t,2)}function kpe(e,t){return Er(e.getUTCHours()%12||12,t,2)}function _pe(e,t){return Er(1+_p.count(_i(e),e),t,3)}function BU(e,t){return Er(e.getUTCMilliseconds(),t,3)}function Cpe(e,t){return BU(e,t)+"000"}function Ape(e,t){return Er(e.getUTCMonth()+1,t,2)}function Epe(e,t){return Er(e.getUTCMinutes(),t,2)}function Npe(e,t){return Er(e.getUTCSeconds(),t,2)}function Tpe(e){var t=e.getUTCDay();return t===0?7:t}function Ope(e,t){return Er(du.count(_i(e)-1,e),t,2)}function FU(e){var t=e.getUTCDay();return t>=4||t===0?Dc(e):Dc.ceil(e)}function Ppe(e,t){return e=FU(e),Er(Dc.count(_i(e),e)+(_i(e).getUTCDay()===4),t,2)}function Mpe(e){return e.getUTCDay()}function Ipe(e,t){return Er(wg.count(_i(e)-1,e),t,2)}function Dpe(e,t){return Er(e.getUTCFullYear()%100,t,2)}function jpe(e,t){return e=FU(e),Er(e.getUTCFullYear()%100,t,2)}function $pe(e,t){return Er(e.getUTCFullYear()%1e4,t,4)}function Lpe(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Dc(e):Dc.ceil(e),Er(e.getUTCFullYear()%1e4,t,4)}function zpe(){return"+0000"}function DU(){return"%"}function jU(e){return+e}function $U(e){return Math.floor(+e/1e3)}var _g,Uk,UU,Wk,WU;WP({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 WP(e){return _g=UP(e),Uk=_g.format,UU=_g.parse,Wk=_g.utcFormat,WU=_g.utcParse,_g}function Bpe(e){return new Date(e)}function Fpe(e){return e instanceof Date?+e:+new Date(+e)}function Hk(e,t,r,n,o,a,i,s,l,u){var c=bp(),d=c.invert,p=c.domain,f=u(".%L"),m=u(":%S"),y=u("%I:%M"),x=u("%I %p"),h=u("%a %d"),g=u("%b %d"),v=u("%B"),b=u("%Y");function k(S){return(l(S)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>xk(e,a/n))},r.copy=function(){return Gk(t).domain(e)},Ri.apply(r,arguments)}function Yk(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=Eo,c,d=!1,p;function f(y){return isNaN(y=+y)?p:(y=.5+((y=+c(y))-a)*(n*y{if(e!=null){var n=e.scale,o=e.type;if(n==="auto")return o==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!t)?"point":o==="category"?"band":"linear";if(typeof n=="string")return Hpe(n)?n:"point"}};function qpe(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function Qk(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=qpe(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 VU(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):Qk(e,void 0)}function GU(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 Rk(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],gl=(e,t)=>{var r=ZP(e,t);return r??ao},io={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:XP,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:tp},JP=(e,t)=>e.cartesianAxis.yAxis[t],hl=(e,t)=>{var r=JP(e,t);return r??io},Qpe={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:""},QP=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??Qpe},En=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);case"zAxis":return QP(e,r);case"angleAxis":return uk(e,r);case"radiusAxis":return ck(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Rpe=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Ep=(e,t,r)=>{switch(t){case"xAxis":return gl(e,r);case"yAxis":return hl(e,r);case"angleAxis":return uk(e,r);case"radiusAxis":return ck(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},RP=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function ox(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 jc=e=>e.graphicalItems.cartesianItems,efe=se([vn,dp],ox),ax=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),Ag=se([jc,En,efe],ax,{memoizeOptions:{resultEqualityCheck:ug}}),JU=se([Ag],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(pp)),eM=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),tfe=se([Ag],eM),ix=e=>e.map(t=>t.data).filter(Boolean).flat(1),rfe=se([Ag],e=>e.some(t=>!t.data)),QU=se([Ag],ix,{memoizeOptions:{resultEqualityCheck:ug}}),sx=(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)},tM=se([QU,lp],sx),rM=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Ht(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Ht(o,n)}))):e.map(n=>({value:n})),nM=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=rM(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Ht(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},lx=se([tM,En,Ag,lp,rfe,QU],nM);function Cg(e){if(wa(e)||e instanceof Date){var t=Number(e);if(Ot(t))return t}}function XU(e){if(Array.isArray(e)){var t=[Cg(e[0]),Cg(e[1])];return wi(t)?t:void 0}var r=Cg(e);if(r!=null)return[r,r]}function $s(e){return e.map(Cg).filter(Ao)}function nfe(e,t){var r=Cg(e),n=Cg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var ofe=se([lx],e=>e?.map(t=>t.value).sort(nfe));function RU(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function afe(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!Wo(t))n=t;else if(Array.isArray(t)){var o=$s(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:$s(r.flatMap(a=>{var i=Ht(e,a.dataKey),s,l;if(Array.isArray(i)){var u=ZU(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Ot(s)||!Ot(l)))return[n-s,n+l]}))}var so=e=>{var t=oo(e),r=Tc(e);return Ep(e,t,r)},fu=se([so],e=>e?.dataKey),ife=se([JU,lp,so],fk),oM=(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=ZU(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(Nc);return[l,{stackedData:p7(e,d,r),graphicalItems:c}]}))},Eg=se([ife,JU,Ac,ak],oM),aM=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return m7(e,o,a)},sfe=se([En],e=>e.allowDataOverflow),e_=e=>{var t;if(e==null||!("domain"in e))return XP;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=$s(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:XP},t_=se([En],e_),r_=se([t_,sfe],ek),lfe=se([Eg,Ya,vn,r_],aM,{memoizeOptions:{resultEqualityCheck:fp}}),Ng=e=>e.errorBars,ufe=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>RU(r,n)),nx=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=>RU(a,f));d.forEach(f=>{var m,y=Ht(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),x=afe(f,y,p);if(x.length>=2){var h=Math.min(...x),g=Math.max(...x);(s==null||hl)&&(l=g)}var v=XU(y);v!=null&&(s=s==null?v[0]:Math.min(s,v[0]),l=l==null?v[1]:Math.max(l,v[1]))})}),r?.dataKey!=null&&n.length===0&&t.forEach(u=>{var c=XU(Ht(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]))}),Ot(s)&&Ot(l))return[s,l]},cfe=se([tM,En,tfe,Ng,vn,nF],ux,{memoizeOptions:{resultEqualityCheck:fp}});function dfe(e){var t=e.value;if(wa(t)||t instanceof Date)return t}var pfe=(e,t,r)=>{var n=e.map(dfe).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&TT(n))?QS(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},iM=e=>e.referenceElements.dots,Np=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),ffe=se([iM,vn,dp],Np),sM=e=>e.referenceElements.areas,mfe=se([sM,vn,dp],Np),lM=e=>e.referenceElements.lines,gfe=se([lM,vn,dp],Np),uM=(e,t)=>{if(e!=null){var r=$s(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},hfe=se(ffe,vn,uM),cM=(e,t)=>{if(e!=null){var r=$s(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)]}},yfe=se([mfe,vn],cM);function vfe(e){var t;if(e.x!=null)return $s([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:$s(r)}function xfe(e){var t;if(e.y!=null)return $s([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:$s(r)}var dM=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?vfe(n):xfe(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},bfe=se([gfe,vn],dM),wfe=se(hfe,bfe,yfe,(e,t,r)=>nx(e,r,t)),cx=(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?nx(n,a,o):nx(a,o),d=lF(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},Sfe=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=$s(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},kfe=se([En],Sfe,{memoizeOptions:{resultEqualityCheck:fp}}),_fe=se([En,t_,r_,lfe,cfe,wfe,Bt,vn,kfe],cx,{memoizeOptions:{resultEqualityCheck:fp}}),Cfe=[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=sa(t,a);if(u&&s==null){var c;return QS(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?pfe(n,e,u):o==="expand"&&!u?Cfe:i}},pM=se([En,Bt,tM,lx,Ac,vn,_fe],dx),mu=se([En,RP,lg],Jk),px=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=e_(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&wi(e)){if(a)return rk(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return nk(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&wi(e))return rk(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&wi(e))return nk(e,t.tickCount,t.allowDecimals,"adaptive")}}},fM=se([pM,Ep,mu],px),fx=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&wi(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},Afe=se([En,pM,fM,vn],fx),Efe=se(lx,En,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from($s(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(!Ot(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=Dn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),Nfe=(e,t,r)=>{var n=gl(e,t);return n==null||typeof n.padding!="string"?0:eW(e,"xAxis",t,r,n.padding)},Tfe=(e,t,r)=>{var n=hl(e,t);return n==null||typeof n.padding!="string"?0:eW(e,"yAxis",t,r,n.padding)},Ofe=se(gl,Nfe,(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}}),Pfe=se(hl,Tfe,(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}}),mM=se([Fr,Ofe,rp,Rm,(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]}),gM=se([Fr,Bt,Pfe,rp,Rm,(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]}),Tg=(e,t,r,n)=>{var o;switch(t){case"xAxis":return mM(e,r,n);case"yAxis":return gM(e,r,n);case"zAxis":return(o=QP(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return fP(e);case"radiusAxis":return mP(e,r);default:return}},tW=se([En,Tg],up),Mfe=se([mu,Afe],mk),hM=se([En,mu,Mfe,tW],rx),yM=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=sa(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},vM=se([Bt,lx,Ep,vn],yM),n_=se([hM],Dv),q8e=se([hM],VU),K8e=se([hM,ofe],Qk),V8e=se([Ag,Ng,vn],ufe);function rW(e,t){return e.idt.id?1:0}var o_=(e,t)=>t,a_=(e,t,r)=>r,Ife=se(Zm,o_,a_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(rW)),Dfe=se(Jm,o_,a_,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(rW)),nW=(e,t)=>{var r=typeof t.height=="number"?t.height:kv;return{width:e.width,height:r}},jfe=(e,t)=>{var r=typeof t.width=="number"?t.width:tp;return{width:r,height:e.height}},xM=se(Fr,gl,nW),$fe=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},Lfe=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},zfe=se(Ko,Fr,Ife,o_,a_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=nW(t,s);i==null&&(i=$fe(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}),Bfe=se(qo,Fr,Dfe,o_,a_,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=jfe(t,s);i==null&&(i=Lfe(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}),Ffe=(e,t)=>{var r=gl(e,t);if(r!=null)return zfe(e,r.orientation,r.mirror)},oW=se([Fr,gl,Ffe,(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}}}),Ufe=(e,t)=>{var r=hl(e,t);if(r!=null)return Bfe(e,r.orientation,r.mirror)},aW=se([Fr,hl,Ufe,(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}}}),bM=se(Fr,hl,(e,t)=>{var r=typeof t.width=="number"?t.width:tp;return{width:r,height:e.height}}),wM=(e,t,r)=>{switch(t){case"xAxis":return xM(e,r).width;case"yAxis":return bM(e,r).height;default:return}},SM=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=sa(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&TT(u))return l}},kM=se([Bt,lx,En,vn],SM),_M=se([Bt,Rpe,mu,n_,kM,vM,Tg,fM,vn],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=sa(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}}}),Wfe=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=sa(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?Zr(a[0]-a[1])*2*m:m;var y=d||o;return y?y.map((x,h)=>{var g=i?i.indexOf(x):x,v=n.map(g);return Ot(v)?{index:h,coordinate:v+m,value:x,offset:m}:null}).filter(Ao):u&&s?s.map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(Ao):n.ticks?n.ticks(p).map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:x,index:h,offset:m}:null}).filter(Ao):n.domain().map((x,h)=>{var g=n.map(x);return Ot(g)?{coordinate:g+m,value:i?i[x]:x,index:h,offset:m}:null}).filter(Ao)}},i_=se([Bt,Ep,mu,n_,fM,Tg,kM,vM,vn],Wfe),Hfe=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=sa(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?Zr(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Ao):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(Ao):r.domain().map((c,d)=>{var p=r.map(c);return Ot(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(Ao)}},Ci=se([Bt,Ep,n_,Tg,kM,vM,vn],Hfe),Ai=se(En,n_,(e,t)=>{if(!(e==null||t==null))return Rk(Rk({},e),{},{scale:t})}),qfe=se([En,mu,pM,tW],rx),Kfe=se([qfe],Dv),G8e=se((e,t,r)=>QP(e,r),Kfe,(e,t)=>{if(!(e==null||t==null))return Rk(Rk({},e),{},{scale:t})}),iW=se([Bt,Zm,Jm],(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}}),Vfe=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},Y8e=se([Vfe],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,AM=e=>e.options.validateTooltipEventTypes;function EM(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function $c(e,t){var r=CM(e),n=AM(e);return EM(t,r,n)}function sW(e){return $e(t=>$c(t,e))}var s_=(e,t)=>{var r,n=Number(t);if(!(Wo(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var lW=e=>e.tooltip.settings;var gu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},Gfe={itemInteraction:{click:gu,hover:gu},axisInteraction:{click:gu,hover:gu},keyboardInteraction:gu,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}},uW=Cr({name:"tooltip",initialState:Gfe,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Zt(t.payload))},prepare:Ir()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).tooltipItemPayloads.indexOf(Zt(n));a>-1&&(e.tooltipItemPayloads[a]=Zt(o))},prepare:Ir()},removeTooltipEntrySettings:{reducer(e,t){var r=ea(e).tooltipItemPayloads.indexOf(Zt(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:Ir()},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}}}),ts=uW.actions,cW=ts.addTooltipEntrySettings,dW=ts.replaceTooltipEntrySettings,pW=ts.removeTooltipEntrySettings,fW=ts.setTooltipSettingsState,l_=ts.setActiveMouseOverItemIndex,mW=ts.mouseLeaveItem,u_=ts.mouseLeaveChart,gW=ts.setActiveClickItemIndex,c_=ts.setMouseOverAxisIndex,hW=ts.setMouseClickAxisIndex,Og=ts.setSyncInteraction,mx=ts.setKeyboardInteraction;var yW=uW.reducer;function vW(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 d_(e){for(var t=1;t{if(t==null)return gu;var o=Jfe(e,t,r);if(o==null)return gu;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(Qfe(o)){if(a)return d_(d_({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return d_(d_({},gu),{},{coordinate:o.coordinate})};function Rfe(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 eme(e,t){var r=Rfe(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 tme(e,t,r){if(r==null||t==null)return!0;var n=Ht(e,t);return n==null||!wi(r)?!0:eme(n,r)}var Lc=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!Ot(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||tme(u,r,n)?String(l):null};var f_=(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 m_=(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 hu=e=>e.tooltip;function xW(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 bW(e){for(var t=1;te(t)}function wW(e){if(typeof e=="string")return e}function lme(e){if(!(e==null||typeof e!="object")){var t="name"in e?ame(e.name):void 0,r="unit"in e?ime(e.unit):void 0,n="dataKey"in e?sme(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?wW(e.color):void 0,i="fill"in e?wW(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function ume(e,t){return e??t}var h_=(e,t,r,n,o,a,i)=>{if(!(t==null||a==null)){var s=r.chartData,l=r.computedData,u=r.dataStartIndex,c=r.dataEndIndex,d=[];return e.reduce((p,f)=>{var m,y=f.dataDefinedOnItem,x=f.settings,h=ume(y,s),g=Array.isArray(h)?kS(h,u,c):h,v=(m=x?.dataKey)!==null&&m!==void 0?m:n,b=x?.nameKey,k;if(n&&Array.isArray(g)&&!Array.isArray(g[0])&&i==="axis"?(k=uw(g,n,o),k==null&&(k=a(g,t,l,b))):k=a(g,t,l,b),Array.isArray(k))k.forEach(w=>{var _,A,C=lme(w),E=C?.name,I=C?.dataKey,J=C?.payload,$=bW(bW({},x),{},{name:E,unit:C?.unit,color:(_=C?.color)!==null&&_!==void 0?_:x?.color,fill:(A=C?.fill)!==null&&A!==void 0?A:x?.fill});p.push(WO({tooltipEntrySettings:$,dataKey:I,payload:J,value:Ht(J,I),name:E==null?void 0:String(E)}))});else{var S;p.push(WO({tooltipEntrySettings:x,dataKey:v,payload:k,value:Ht(k,v),name:(S=Ht(k,b))!==null&&S!==void 0?S:x?.name}))}return p},d)}};var NM=se([so,RP,lg],Jk),cme=se([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),dme=se([oo,Tc],ox),zc=se([cme,so,dme],ax,{memoizeOptions:{resultEqualityCheck:ug}}),pme=se([zc],e=>e.filter(pp)),SW=se([zc],ix,{memoizeOptions:{resultEqualityCheck:ug}}),fme=se([zc],e=>e.some(t=>!t.data)),yu=se([SW,Ya],sx),mme=se([pme,Ya,so],fk),TM=se([yu,so,zc,Ya,fme,SW],nM),kW=se([so],e_),gme=se([so],e=>e.allowDataOverflow),_W=se([kW,gme],ek),hme=se([zc],e=>e.filter(pp)),yme=se([mme,hme,Ac,ak],oM),vme=se([yme,Ya,oo,_W],aM),xme=se([zc],eM),bme=se([yu,so,xme,Ng,oo,aF],ux,{memoizeOptions:{resultEqualityCheck:fp}}),wme=se([iM,oo,Tc],Np),Sme=se([wme,oo],uM),kme=se([sM,oo,Tc],Np),_me=se([kme,oo],cM),Cme=se([lM,oo,Tc],Np),Ame=se([Cme,oo],dM),Eme=se([Sme,Ame,_me],nx),Nme=se([so,kW,_W,vme,bme,Eme,Bt,oo],cx),Bc=se([so,Bt,yu,TM,Ac,oo,Nme],dx),Tme=se([Bc,so,NM],px),Ome=se([so,Bc,Tme,oo],fx),CW=e=>{var t=oo(e),r=Tc(e),n=!1;return Tg(e,t,r,n)},OM=se([so,CW],up),Pme=se([so,NM,Ome,OM],rx),PM=se([Pme],Dv),Mme=se([Bt,TM,so,oo],SM),Ime=se([Bt,TM,so,oo],yM),Dme=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=sa(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?Zr(o[0]-o[1])*2*d:d,u&&i?i.map((p,f)=>{var m=n.map(p);return Ot(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(Ao):n.domain().map((p,f)=>{var m=n.map(p);return Ot(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(Ao)}}},Za=se([Bt,so,NM,PM,CW,Mme,Ime,oo],Dme),MM=se([CM,AM,lW],(e,t,r)=>EM(r.shared,e,t)),AW=e=>e.tooltip.settings.trigger,IM=e=>e.tooltip.settings.defaultIndex,gx=se([hu,MM,AW,IM],p_),rs=se([gx,yu,fu,Bc],Lc),y_=se([Za,rs],s_),Pg=se([gx],e=>{if(e)return e.dataKey}),v_=se([gx],e=>{if(e)return e.graphicalItemId}),EW=se([hu,MM,AW,IM],m_),jme=se([qo,Ko,Bt,Fr,Za,IM,EW],f_),DM=se([gx,jme],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),jM=se([gx],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),$me=se([EW,rs,Ya,fu,y_,g_,MM],h_),NW=se([$me],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function TW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function OW(e){for(var t=1;t$e(so),PW=()=>{var e=Fme(),t=$e(Za),r=$e(PM);return!e||!r?Zi(void 0,t):Zi(OW(OW({},e),{},{scale:r}),t)};function MW(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 Mg(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}},DW=(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 Mg(Mg(Mg({},n),an(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Mg(Mg(Mg({},n),an(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 jW(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 $M=(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=(U,N,T)=>[e,e+s,e-s].some(D=>(T?D>=U:D>U)&&D<=N),u=0;u0?(c=r[u-1])===null||c===void 0?void 0:c.coordinate:(d=r[i-1])===null||d===void 0?void 0:d.coordinate,x=(p=r[u])===null||p===void 0?void 0:p.coordinate,h=u>=i-1?(f=r[0])===null||f===void 0?void 0:f.coordinate:(m=r[u+1])===null||m===void 0?void 0:m.coordinate,g=void 0;if(!(y==null||x==null||h==null))if(Zr(x-y)!==Zr(h-x)){var v=[];if(Zr(h-x)===Zr(o[1]-o[0])){g=h;var b=x+o[1]-o[0];v[0]=Math.min(b,(b+y)/2),v[1]=Math.max(b,(b+y)/2)}else{g=y;var k=h+o[1]-o[0];v[0]=Math.min(x,(k+x)/2),v[1]=Math.max(x,(k+x)/2)}var S=[Math.min(x,(g+x)/2),Math.max(x,(g+x)/2)];if(l(S[0],S[1],!1)||l(v[0],v[1],!0)){var w;return(w=r[u])===null||w===void 0?void 0:w.index}}else{var _=Math.min(y,h),A=Math.max(y,h);if(l((_+x)/2,(A+x)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var E=0;E(I.coordinate+$.coordinate)/2||E>0&&E(I.coordinate+$.coordinate)/2&&e<=(I.coordinate+J.coordinate)/2)return I.index}}return-1};var x_=()=>$e(lg),LM=(e,t)=>t,$W=(e,t,r)=>r,zM=(e,t,r,n)=>n,LW=se(Za,e=>au(e,t=>t.coordinate)),BM=se([hu,LM,$W,zM],p_),FM=se([BM,yu,fu,Bc],Lc),zW=(e,t,r)=>{if(t!=null){var n=hu(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},BW=se([hu,LM,$W,zM],m_),hx=se([qo,Ko,Bt,Fr,Za,zM,BW],f_),FW=se([BM,hx],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),UM=se([Za,FM],s_),UW=se([BW,FM,Ya,fu,UM,g_,LM],h_),WW=se([BM,FM],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),qme=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&jW(e,i)){var s=g7(e,t),l=$M(s,a,o,r,n),u=IW(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},Kme=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=K9(e,r);if(s){var l=h7(s,t),u=$M(l,i,a,n,o),c=DW(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},HW=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?qme(e,t,n,o,a,i,s):Kme(e,t,r,n,o,a,i)};var Ig=Z(Q()),RW=Z(ny());var qW=se(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}}),KW=se(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(ir)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:SF}});function VW(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 GW(e){for(var t=1;tGW(GW({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),Xme)},Jme=new Set(Object.values(ir));function Qme(e){return Jme.has(e)}var YW=Cr({name:"zIndex",initialState:Zme,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:Ir()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!Qme(r)&&delete e.zIndexMap[r])},prepare:Ir()},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=Zt(o):e.zIndexMap[n].element=Zt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Zt(o),panoramaElement:a?Zt(o):void 0}},prepare:Ir()},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:Ir()}}}),b_=YW.actions,XW=b_.registerZIndexPortal,w_=b_.unregisterZIndexPortal,ZW=b_.registerZIndexPortalElement,JW=b_.unregisterZIndexPortalElement;var QW=YW.reducer;function sn(e){var t=e.zIndex,r=e.children,n=P7(),o=n&&t!==void 0&&t!==0,a=Ar(),i=(0,Ig.useRef)(void 0),s=(0,Ig.useRef)(new Set),l=jt(),u=$e(d=>qW(d,t,a));if((0,Ig.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(w_({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(XW({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(w_({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,Ig.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(w_({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,RW.createPortal)(r,c):null}function WM(){return WM=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,__.useContext)(HM);var vx=Z(Q());var aH=Z(oH(),1);var iH=aH.default;var jg=new iH;var A_="recharts.syncEvent.tooltip",KM="recharts.syncEvent.brush";var Fc=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!Wo(r))return e[r]}},ige={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},sH=Cr({name:"options",initialState:ige,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),lH=sH.reducer,uH=sH.actions.createEventEmitter;function cH(e){return e.tooltip.syncInteraction}var sge={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},dH=Cr({name:"chartData",initialState:sge,reducers:{setChartData(e,t){if(e.chartData=Zt(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)}}}),VM=dH.actions,GM=VM.setChartData,pH=VM.setDataStartEndIndexes,lge=VM.setComputedData;var fH=dH.reducer;var uge=["x","y"];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 $g(e){for(var t=1;tl.rootProps.className);(0,vx.useEffect)(()=>{if(e==null)return Sa;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(Og({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var p;if(i&&c!==null&&c!==void 0&&(p=c.payload)!==null&&p!==void 0&&p.coordinate&&c.payload.sourceViewBox){var f=c.payload.coordinate,m=f.x,y=f.y,x=fge(f,uge),h=c.payload.sourceViewBox,g=h.x,v=h.y,b=h.width,k=h.height,S=$g($g({},x),{},{x:i.x+(b?(m-g)/b:0)*i.width,y:i.y+(k?(y-v)/k:0)*i.height});r($g($g({},c),{},{payload:$g($g({},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(T=>String(T.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(Og({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(w==null){r(Og({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var E=C.x,I=C.y,J=Math.min(E,i.x+i.width),$=Math.min(I,i.y+i.height),U={x:a==="horizontal"?w.coordinate:J,y:a==="horizontal"?$:w.coordinate},N=Og({active:c.payload.active,coordinate:U,dataKey:c.payload.dataKey,index:String(w.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return jg.on(A_,l),()=>{jg.off(A_,l)}},[s,r,t,e,n,o,a,i])}function hge(){var e=$e(ik),t=$e(sk),r=jt();(0,vx.useEffect)(()=>{if(e==null)return Sa;var n=(o,a,i)=>{t!==i&&e===o&&r(pH(a))};return jg.on(KM,n),()=>{jg.off(KM,n)}},[r,t,e])}function gH(){var e=jt();(0,vx.useEffect)(()=>{e(uH())},[e]),gge(),hge()}function hH(e,t,r,n,o,a){var i=$e(m=>zW(m,e,t)),s=$e(v_),l=$e(sk),u=$e(ik),c=$e(dP),d=$e(cH),p=d?.sourceViewBox!=null,f=op();(0,vx.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=Og({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});jg.emit(A_,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function yH(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 vH(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{w(fW({shared:g,trigger:v,axisId:S,active:o,defaultIndex:_}))},[w,g,v,S,o,_]);var A=op(),C=LS(),E=sW(g),I=(t=$e(R=>WW(R,E,v,_)))!==null&&t!==void 0?t:{},J=I.activeIndex,$=I.isActive,U=$e(R=>UW(R,E,v,_)),N=$e(R=>UM(R,E,v,_)),T=$e(R=>FW(R,E,v,_)),D=U,O=rH(),j=(r=o??$)!==null&&r!==void 0?r:!1,M=Zw([D,j]),H=bge(M,2),G=H[0],z=H[1],V=E==="axis"?N:void 0;hH(E,v,T,V,J,j);var K=k??O;if(K==null||A==null||E==null)return null;var ie=D??bH;j||(ie=bH),u&&ie.length&&(ie=qw(ie.filter(R=>R.value!=null&&(R.hide!==!0||n.includeHidden)),p,Cge));var Ie=ie.length>0,ge=vH(vH({},n),{},{payload:ie,label:V,active:j,activeIndex:J,coordinate:T,accessibilityLayer:C}),de=ns.createElement(r9,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:j,coordinate:T,hasPayload:Ie,offset:d,position:f,reverseDirection:m,useTranslate3d:y,viewBox:A,wrapperStyle:x,lastBoundingBox:G,innerRef:z,hasPortalFromProps:!!k},Age(l,ge));return ns.createElement(ns.Fragment,null,(0,SH.createPortal)(de,K),j&&ns.createElement(tH,{cursor:h,tooltipEventType:E,coordinate:T,payload:ie,index:J}))}var vu=e=>null;vu.displayName="Cell";var XM=Z(Q()),O_=Z(Q());function Nge(e,t,r){return(t=Tge(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Tge(e){var t=Oge(e,"string");return typeof t=="symbol"?t:t+""}function Oge(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 E_=class{constructor(t){Nge(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 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 Pge(e){for(var t=1;t{try{var r=document.getElementById(CH);r||(r=document.createElement("span"),r.setAttribute("id",CH),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,$ge,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Tp=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Ji.isSsr)return{width:0,height:0};if(!EH.enableCache)return AH(t,r);var n=Lge(t,r),o=_H.get(n);if(o)return o;var a=AH(t,r);return _H.set(n,a),a};var MH;function N_(e,t){return Uge(e)||Fge(e,t)||Bge(e,t)||zge()}function zge(){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 Bge(e,t){if(e){if(typeof e=="string")return NH(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)?NH(e,t):void 0}}function NH(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=[];ar(t)||(r?o=t.toString().split(""):o=t.toString().split(BH));var a=o.map(s=>({word:s,width:Tp(s,n).width})),i=r?0:Tp("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function P_(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function UH(e){return ar(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var WH=(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),she="\u2026",LH=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=FH({breakAll:r,style:n,children:l+she});if(!u)return[!1,[]];var c=WH(u.wordsWithComputedWidth,a,i,s),d=c.length>o||HH(c).width>Number(a);return[d,c]},lhe=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=je(a),c=String(i),d=WH(t,n,r,o);if(!u||o)return d;var p=d.length>a||HH(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,y=0,x;f<=m&&y<=c.length-1;){var h=Math.floor((f+m)/2),g=h-1,v=LH(c,g,l,s,a,n,r,o),b=jH(v,2),k=b[0],S=b[1],w=LH(c,h,l,s,a,n,r,o),_=jH(w,1),A=_[0];if(!k&&!A&&(f=h+1),k&&A&&(m=h-1),!k&&A){x=S;break}y++}return x||d},zH=e=>{var t=ar(e)?[]:e.toString().split(BH);return[{words:t,width:void 0}]},uhe=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!Ji.isSsr){var s,l,u=FH({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return zH(n);return lhe({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return zH(n)},qH="#808080",che={angle:0,breakAll:!1,capHeight:"0.71em",fill:qH,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},Op=(0,O_.forwardRef)((e,t)=>{var r=nr(e,che),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=DH(r,ehe),p=(0,O_.useMemo)(()=>uhe({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:l,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,l,d.style,d.width]),f=d.dx,m=d.dy,y=d.angle,x=d.className,h=d.breakAll,g=DH(d,the);if(!wa(n)||!wa(o)||p.length===0)return null;var v=Number(n)+(je(f)?f:0),b=Number(o)+(je(m)?m:0);if(!Ot(v)||!Ot(b))return null;var k;switch(c){case"start":k=T_("calc(".concat(i,")"));break;case"middle":k=T_("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:k=T_("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(je(A)&&je(_)?A/_:1,")"))}return y&&S.push("rotate(".concat(y,", ").concat(v,", ").concat(b,")")),S.length&&(g.transform=S.join(" ")),XM.createElement("text",YM({},yn(g),{ref:t,x:v,y:b,className:bt("recharts-text",x),textAnchor:u,fill:s.includes("url")?qH:s}),p.map((C,E)=>{var I=C.words.join(h?"":" ");return XM.createElement("tspan",{x:v,dy:E===0?k:a,key:"".concat(I,"-").concat(E)},I)}))});Op.displayName="Text";var Ja=Z(Q()),No=Z(Q());var dhe=["labelRef"],phe=["content"];function KH(e,t){if(e==null)return{};var r,n,o=fhe(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,No.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return Ja.createElement(GH.Provider,{value:l},s)},XH=()=>{var e=(0,No.useContext)(GH),t=op();return e||(t?sv(t):void 0)},ZH=(0,No.createContext)(null),JH=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,No.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return Ja.createElement(ZH.Provider,{value:u},l)},yhe=()=>{var e=(0,No.useContext)(ZH),t=$e(pk);return e||t},vhe=e=>{var t=e.value,r=e.formatter,n=ar(e.children)?t:e.children;return typeof r=="function"?r(n):n},Mp=e=>e!=null&&typeof e=="function",xhe=(e,t)=>{var r=Zr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},bhe=(e,t,r,n,o)=>{var a=e.offset,i=e.className,s=o.cx,l=o.cy,u=o.innerRadius,c=o.outerRadius,d=o.startAngle,p=o.endAngle,f=o.clockWise,m=(u+c)/2,y=xhe(d,p),x=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+x*a,g=f;break;case"insideEnd":h=p-x*a,g=!f;break;case"end":h=p+x*a,g=f;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=an(s,l,m,h),b=an(s,l,m,h+(g?1:-1)*359),k="M".concat(v.x,",").concat(v.y,` A`).concat(m,",").concat(m,",0,1,").concat(g?0:1,`, - `).concat(b.x,",").concat(b.y),w=ar(e.id)?eu("recharts-radial-line-"):e.id;return Ja.createElement("text",xu({},n,{dominantBaseline:"central",className:bt("recharts-radial-bar-label",i)}),Ja.createElement("defs",null,Ja.createElement("path",{id:w,d:S})),Ja.createElement("textPath",{xlinkHref:"#".concat(w)},r))},mhe=(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=nn(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=nn(n,o,f,u),y=m.x,x=m.y;return{x:y,y:x,textAnchor:"middle",verticalAnchor:"middle"}},jg=e=>e!=null&&"cx"in e&&je(e.cx),ghe={angle:0,offset:5,zIndex:ir.label,position:"middle",textBreakAll:!1};function hhe(e){if(!jg(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 vu(e){var t,r,n=nr(e,ghe),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=che(),y=HH(),x=i==="center"?y:m??y,h,g,v;o==null?h=x:jg(o)?h=o:h=nv(o);var b=hhe(h);if(!h||ar(s)&&ar(l)&&!(0,Ao.isValidElement)(u)&&typeof u!="function")return null;var S=jg(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(jg(h))S||(v=mhe(h,n.offset,n.position));else if(b){var w=ow({viewBox:b,position:i,offset:n.offset,parentViewBox:jg(a)?void 0:a,clamp:!0});v=Np(Np({x:w.x,y:w.y,textAnchor:w.horizontalAnchor,verticalAnchor:w.verticalAnchor},w.width!==void 0?{width:w.width}:{}),w.height!==void 0?{height:w.height}:{})}var _=Np(Np(Np(Np({},((t=v)===null||t===void 0?void 0:t.x)!==void 0?{x:v.x}:{}),((r=v)===null||r===void 0?void 0:r.y)!==void 0?{y:v.y}:{}),n),{},{viewBox:h});if((0,Ao.isValidElement)(u)){var k=_.labelRef,A=BH(_,ohe);return(0,Ao.cloneElement)(u,A)}if(typeof u=="function"){var C=_.content,E=BH(_,ahe);if(g=(0,Ao.createElement)(u,E),(0,Ao.isValidElement)(g))return g}else g=dhe(n);var I=gn(n);return S&&jg(h)?fhe(n,i,g,I,h):v==null?null:Ja.createElement(on,{zIndex:n.zIndex},Ja.createElement(Ep,xu({ref:f,className:bt("recharts-label",d)},I,v,{textAnchor:C_(I.textAnchor)?I.textAnchor:v.textAnchor,breakAll:p}),g))}vu.displayName="Label";var yhe=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?Ja.createElement(vu,xu({key:"label-implicit"},n)):wa(e)?Ja.createElement(vu,xu({key:"label-implicit",value:e},n)):(0,Ao.isValidElement)(e)?e.type===vu?(0,Ao.cloneElement)(e,Np({key:"label-implicit"},n)):Ja.createElement(vu,xu({key:"label-implicit",content:e},n)):Tp(e)?Ja.createElement(vu,xu({key:"label-implicit",content:e},n)):e&&typeof e=="object"?Ja.createElement(vu,xu({},e,{key:"label-implicit"},n)):null};function VH(e){var t=e.label,r=e.labelRef,n=HH();return yhe(t,n,r)||null}var bu=Z(J()),$g=Z(J());var vhe=["valueAccessor"],xhe=["dataKey","clockWise","id","textBreakAll","zIndex"];function E_(){return E_=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(jH(t))return t},YH=(0,$g.createContext)(void 0),Lg=YH.Provider,XH=(0,$g.createContext)(void 0),ZH=XH.Provider;function She(){return(0,$g.useContext)(YH)}function khe(){return(0,$g.useContext)(XH)}function A_(e){var t=e.valueAccessor,r=t===void 0?whe:t,n=GH(e,vhe),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=GH(n,xhe),c=She(),d=khe(),p=c||d;return!p||!p.length?null:bu.createElement(on,{zIndex:l??ir.label},bu.createElement(br,{className:"recharts-label-list"},p.map((f,m)=>{var y,x=ar(o)?r(f,m):Wt(f.payload,o),h=ar(i)?{}:{id:"".concat(i,"-").concat(m)};return bu.createElement(vu,E_({key:"label-".concat(m)},gn(f),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:f.fill,parentViewBox:f.parentViewBox,value:x,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}A_.displayName="LabelList";function Wc(e){var t=e.label;return t?t===!0?bu.createElement(A_,{key:"labelList-implicit"}):bu.isValidElement(t)||Tp(t)?bu.createElement(A_,{key:"labelList-implicit",content:t}):typeof t=="object"?bu.createElement(A_,E_({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var JH=Z(J());function H5(){return H5=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 je(t)&&je(r)&&je(n)?JH.createElement("circle",H5({},mn(e),$m(e),{className:a,cx:t,cy:r,r:n})):null};var q5=e=>e.graphicalItems.polarItems,_he=ae([hn,lp],ex),T_=ae([q5,An,_he],tx),Che=ae([T_],rx),O_=ae([Che,op],nx),Ahe=ae([O_,An,T_],XP),D7e=ae([O_,An,T_],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Wt(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Wt(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),QH=()=>{},Ehe=ae([O_,An,T_,Cg,hn,Q9],ax),Nhe=ae([An,Xk,Zk,QH,Ehe,QH,zt,hn],ix),RH=ae([An,zt,O_,Ahe,Cc,hn,Nhe],sx),The=ae([RH,_p,fu],lx),Ohe=ae([An,RH,The,hn],ux),j7e=ae([fu,Ohe],lk);var Phe={radiusAxis:{},angleAxis:{}},eq=Cr({name:"polarAxis",initialState:Phe,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Zt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Zt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),P_=eq.actions,B7e=P_.addRadiusAxis,F7e=P_.removeRadiusAxis,U7e=P_.addAngleAxis,W7e=P_.removeAngleAxis;var tq=eq.reducer;function M_(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Gt=Z(J()),qg=Z(J());function rq(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 nq(e){for(var t=1;tt,K5=ae([q5,jhe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),$he=[],V5=(e,t,r)=>r?.length===0?$he:r,oq=ae([op,K5,V5],(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=>nq(nq({},t.presentationProps),a.props))),o!=null)return o}}),aq=ae([oq,K5,V5],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Wt(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:xi(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),iq=ae([oq,K5,V5,Fr],(e,t,r,n)=>{if(!(t==null||e==null))return sq({offset:n,pieSettings:t,displayedData:e,cells:r})});var fq=Z(J()),mq=Z(cq());var dq=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",pq=null,X5=null,gq=e=>{if(e===pq&&Array.isArray(X5))return X5;var t=[];return fq.Children.forEach(e,r=>{ar(r)||((0,mq.isFragment)(r)?t=t.concat(gq(r.props.children)):t.push(r))}),X5=t,pq=e,t};function gx(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>dq(o)):n=[dq(t)],gq(e).forEach(o=>{var a=Fo(o,"type.displayName")||Fo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var zg=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Bg=Z(J()),hx=Z(J());function hq(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 yq(e){for(var t=1;t{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(r_({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},vx=e=>{var t=Dt();return(r,n)=>o=>{e?.(r,n,o),t(lW())}},xx=(e,t,r)=>{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(uW({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var bx=Z(J());function qc(e){var t=e.tooltipEntrySettings,r=Dt(),n=Ar(),o=(0,bx.useRef)(null);return(0,bx.useLayoutEffect)(()=>{n||(o.current===null?r(oW(t)):o.current!==t&&r(aW({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,bx.useLayoutEffect)(()=>()=>{o.current&&(r(iW(o.current)),o.current=null)},[r]),null}var Kc=Z(J());function Fg(e){var t=e.legendPayload,r=Dt(),n=Ar(),o=(0,Kc.useRef)(null);return(0,Kc.useLayoutEffect)(()=>{n||(o.current===null?r(BO(t)):o.current!==t&&r(FO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Kc.useLayoutEffect)(()=>()=>{o.current&&(r(UO(o.current)),o.current=null)},[r]),null}function xq(e){var t=e.legendPayload,r=Dt(),n=$e(zt),o=(0,Kc.useRef)(null);return(0,Kc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(BO(t)):o.current!==t&&r(FO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Kc.useLayoutEffect)(()=>()=>{o.current&&(r(UO(o.current)),o.current=null)},[r]),null}var Sq=Z(J()),kx=Z(J());function Vhe(e,t){return Zhe(e)||Xhe(e,t)||Yhe(e,t)||Ghe()}function Ghe(){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 Yhe(e,t){if(e){if(typeof e=="string")return bq(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)?bq(e,t):void 0}}function bq(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 Z5(n,t)}function Qhe(e,t){var r=t.map((n,o)=>e[o]);return Z5(r,t)}function Rhe(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=Vhe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return Z5(a,t,i)}function Sx(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Op?Jhe(e,t):r===wx?Qhe(e,t):eye(e,t,r)}var Ug=Z(J());function H_(e,t){var r=(0,Ug.useRef)(e),n=(0,Ug.useRef)(t.current),o=(0,Ug.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,Ug.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 tye(e,t){return aye(e)||oye(e,t)||nye(e,t)||rye()}function rye(){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 nye(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);r{typeof e=="function"&&e(),a(!0)},[e]),s=(0,kx.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function Gc(e){var t,r=e.animationInput,n=e.animationIdPrefix,o=e.items,a=e.previousItemsRef,i=e.isAnimationActive,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.onAnimationStart,d=e.onAnimationEnd,p=e.animationInterpolateFn,f=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,x=e.layout,h=LS(r,n),g=H_(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,b=Sx(v,o,f??Op);return Sq.createElement($S,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},S=>{var w=v==null,_=o==null?o:p(b,S,x),k=m?m(S):S>0;return g.syncStepValue(_,S,k),_==null?null:y(_,S,w)})}var Cq=Z(J()),Q5=Z(J());var q_=Z(J());var J5;function iye(e,t){return cye(e)||uye(e,t)||lye(e,t)||sye()}function sye(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lye(e,t){if(e){if(typeof e=="string")return kq(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)?kq(e,t):void 0}}function kq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=q_.useState(()=>eu("uid-")),t=iye(e,1),r=t[0];return r},K_=(J5=q_.useId)!==null&&J5!==void 0?J5:dye;function _q(e,t){var r=K_();return t||(e?"".concat(e,"-").concat(r):r)}var pye=(0,Q5.createContext)(void 0),Yc=e=>{var t=e.id,r=e.type,n=e.children,o=_q("recharts-".concat(r),t);return Cq.createElement(pye.Provider,{value:o},n(o))};var Ls=Z(J());var fye={cartesianItems:[],polarItems:[]},Aq=Cr({name:"graphicalItems",initialState:fye,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Zt(t.payload))},prepare:Ir()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Ro(e).cartesianItems.indexOf(Zt(n));a>-1&&(e.cartesianItems[a]=Zt(o))},prepare:Ir()},removeCartesianGraphicalItem:{reducer(e,t){var r=Ro(e).cartesianItems.indexOf(Zt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:Ir()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Zt(t.payload))},prepare:Ir()},removePolarGraphicalItem:{reducer(e,t){var r=Ro(e).polarItems.indexOf(Zt(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:Ir()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Ro(e).polarItems.indexOf(Zt(n));a>-1&&(e.polarItems[a]=Zt(o))},prepare:Ir()}}}),Wg=Aq.actions,Eq=Wg.addCartesianGraphicalItem,Nq=Wg.replaceCartesianGraphicalItem,Tq=Wg.removeCartesianGraphicalItem,Oq=Wg.addPolarGraphicalItem,Pq=Wg.removePolarGraphicalItem,Mq=Wg.replacePolarGraphicalItem;var Iq=Aq.reducer;var mye=e=>{var t=Dt(),r=(0,Ls.useRef)(null);return(0,Ls.useLayoutEffect)(()=>{r.current===null?t(Eq(e)):r.current!==e&&t(Nq({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ls.useLayoutEffect)(()=>()=>{r.current&&(t(Tq(r.current)),r.current=null)},[t]),null},Hg=(0,Ls.memo)(mye),gye=e=>{var t=Dt(),r=(0,Ls.useRef)(null);return(0,Ls.useLayoutEffect)(()=>{r.current===null?t(Oq(e)):r.current!==e&&t(Mq({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ls.useLayoutEffect)(()=>()=>{r.current&&(t(Pq(r.current)),r.current=null)},[t]),null},Dq=(0,Ls.memo)(gye);var hye=["key"],yye=["onMouseEnter","onClick","onMouseLeave"],vye=["id"],xye=["id"];function Pp(){return Pp=Object.assign?Object.assign.bind():function(e){for(var t=1;tgx(e.children,yu),[e.children]),r=$e(n=>aq(n,e.id,t));return r==null?null:Gt.createElement(xq,{legendPayload:r})}function Cye(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Gt.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 Aye=Gt.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=Cye(p),m=n.map(x=>{var h=x.tooltipPayload;return f==null||h==null?h:h.map(g=>En(En({},g),{},{color:f,fill:f}))}),y={dataDefinedOnItem:m,getPosition:x=>{var h;return(h=n[Number(x)])===null||h===void 0?void 0:h.tooltipPosition},settings:{stroke:o,strokeWidth:a,fill:i,dataKey:t,nameKey:r,name:xi(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Gt.createElement(qc,{tooltipEntrySettings:y})}),Eye=(e,t)=>e>t?"start":etypeof t=="function"?Dn(t(e),r,r*.8):Dn(t,r,r*.8),Tye=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=US(a,i),l=o+Dn(e.cx,a,a/2),u=n+Dn(e.cy,i,i/2),c=Dn(e.innerRadius,s,0),d=Nye(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}},Oye=(e,t)=>{var r=Xr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Pye=(e,t)=>{if(Gt.isValidElement(e))return Gt.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=V_(t,hye);return Gt.createElement(ll,Pp({},o,{type:"linear",className:r}))},Mye=(e,t,r)=>{if(Gt.isValidElement(e))return Gt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Gt.isValidElement(n)))return n;var o=bt("recharts-pie-label-text",M_(e));return Gt.createElement(Ep,Pp({},t,{alignmentBaseline:"middle",className:o}),n)};function Iye(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=mn(r),l=mi(o),u=mi(a),c=typeof o=="object"&&"offsetRadius"in o&&typeof o.offsetRadius=="number"&&o.offsetRadius||20,d=t.map((p,f)=>{var m=(p.startAngle+p.endAngle)/2,y=nn(p.cx,p.cy,p.outerRadius+c,m),x=En(En(En(En({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:Eye(y.x,p.cx)},y),h=En(En(En(En({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[nn(p.cx,p.cy,p.outerRadius,m),y],key:"line"});return Gt.createElement(on,{zIndex:ir.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Gt.createElement(br,null,a&&Pye(a,h),Mye(o,x,Wt(p,i))))});return Gt.createElement(br,{className:"recharts-pie-labels"},d)}function Dye(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Gt.createElement(Wc,{label:o}):Gt.createElement(Iye,{sectors:t,props:r,showLabels:n})}function jye(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=$e(ts),d=$e(Ng),p=$e(p_),f=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,x=V_(o,yye),h=yx(f,o.dataKey,i),g=vx(y),v=xx(m,o.dataKey,i);return t==null||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((b,S)=>{if(b?.startAngle===0&&b?.endAngle===0&&t.length!==1)return null;var w=p==null||p===i,_=String(S)===c&&(d==null||o.dataKey===d)&&w,k=c?n:null,A=r&&_?r:k,C=En(En({},b),{},{stroke:b.stroke,tabIndex:-1,index:S,isActive:_,animationElapsedTime:s,isAnimating:l,isEntrance:u,[xS]:S,[bS]:i});return Gt.createElement(br,Pp({key:"sector-".concat(b?.startAngle,"-").concat(b?.endAngle,"-").concat(b.midAngle,"-").concat(S),tabIndex:-1,className:"recharts-pie-sector"},ru(x,b,S),{onMouseEnter:h(b,S),onMouseLeave:g(b,S),onClick:v(b,S)}),Gt.createElement(Hc,{option:A??a,DefaultShape:$q,shapeProps:C}))}))}function sq(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=Oye(s,l),m=Math.abs(f),y=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,x=n.filter(k=>Wt(k,u,0)!==0).length,h=(m>=360?x:x-1)*y,g=n.reduce((k,A)=>{var C=Wt(A,u,0);return k+(je(C)?C:0)},0),v=p>0&&g>0&&n.some(k=>{var A=Wt(k,u,0),C=(je(A)?A:0)/g;return A!==0&&C*m0){var _;w=n.map((k,A)=>{var C=Wt(k,u,0),E=Wt(k,c,A),I=Tye(r,a,k),Q=(je(C)?C:0)/g,$,F=En(En({},k),o&&o[A]&&o[A].props),N=F!=null&&"fill"in F&&typeof F.fill=="string"?F.fill:r.fill;A?$=_.endAngle+Xr(f)*y*(C!==0?1:0):$=s;var O=$+Xr(f)*((C!==0?b:0)+Q*S),j=($+O)/2,T=(I.innerRadius+I.outerRadius)/2,D=[{name:E,value:C,payload:F,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],M=nn(I.cx,I.cy,T,j);return _=En(En(En(En({},r.presentationProps),{},{percent:Q,cornerRadius:typeof i=="string"?parseFloat(i):i,name:E,tooltipPayload:D,midAngle:j,middleRadius:T,tooltipPosition:M},F),I),{},{value:C,dataKey:u,startAngle:$,endAngle:O,payload:F,paddingAngle:C!==0?Xr(f)*y:0}),_})}return w}function $ye(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,qg.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 Gt.createElement(ZH,{value:t?o:void 0},n)}var Lye=(e,t)=>{if(e==null)return[];var r=[],n=e.find(a=>a.status!=="removed"),o=n?n.next.startAngle:0;return e.forEach((a,i)=>{if(a.status!=="removed"){var s=i>0?Fo(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=_r(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=En(En({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=_r(0,a.next.endAngle-a.next.startAngle,t),d=En(En({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function zye(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=Vc(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,y=p.handleAnimationEnd,x=_7();if(x==null)return null;var h=l[0];return Gt.createElement($ye,{showLabels:!f,sectors:l},Gt.createElement(Gc,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:y,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:x},(g,v,b)=>Gt.createElement(br,null,Gt.createElement(jye,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:f||v<1,isEntrance:b}))),Gt.createElement(Dye,{showLabels:!f,sectors:l,props:a}),Gt.createElement(KH,{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 Bye={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Lye,animationMatchBy:wx,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:$q,startAngle:0,stroke:"#fff",zIndex:ir.area};function Fye(e){var t=e.id,r=V_(e,vye),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,qg.useMemo)(()=>gx(e.children,yu),[e.children]),s=$e(c=>iq(c,t,i)),l=(0,qg.useRef)(null),u=bt("recharts-pie",o);return n||s==null?(l.current=null,Gt.createElement(br,{tabIndex:a,className:u})):Gt.createElement(on,{zIndex:e.zIndex},Gt.createElement(Aye,{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}),Gt.createElement(br,{tabIndex:a,className:u},Gt.createElement(zye,{props:En(En({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function Uye(e){var t=nr(e,Bye),r=t.id,n=V_(t,xye),o=mn(n);return Gt.createElement(Yc,{id:r,type:"pie"},a=>Gt.createElement(Gt.Fragment,null,Gt.createElement(Dq,{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}),Gt.createElement(_ye,Pp({},n,{id:a})),Gt.createElement(Fye,Pp({},n,{id:a}))))}var G_=Uye;G_.displayName="Pie";var _x=Z(J()),X_=Z(J());var Wye=["points"];function Lq(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 R5(e){for(var t=1;t{var h,g,v=R5(R5(R5({r:3},i),p),{},{index:x,cx:(h=y.x)!==null&&h!==void 0?h:void 0,cy:(g=y.y)!==null&&g!==void 0?g:void 0,dataKey:a,value:y.value,payload:y.payload,points:t});return _x.createElement(Yye,{key:"dot-".concat(x),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),_x.createElement(on,{zIndex:c},_x.createElement(br,Y_({className:n},m),f))}var Cx=Z(J()),Q_=Z(J());function zq(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 J_(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var Zq=ae([Xq,Ho,qo],(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 Xc=()=>$e(Zq),Jq=()=>$e(SW);function Qq(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 tM(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=tM(tM(tM({},s),mi(o)),$m(o)),u;return(0,Q_.isValidElement)(o)?u=(0,Q_.cloneElement)(o,l):typeof o=="function"?u=o(l):u=Cx.createElement(N_,l),Cx.createElement(br,{className:"recharts-active-dot",clipPath:i},u)};function Ax(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?ir.activeDot:i,l=$e(ts),u=Jq();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return ar(c)?null:Cx.createElement(on,{zIndex:s},Cx.createElement(nve,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function ove(e,t){return lve(e)||sve(e,t)||ive(e,t)||ave()}function ave(){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 ive(e,t){if(e){if(typeof e=="string")return Rq(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)?Rq(e,t):void 0}}function Rq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!ar(n))return Dn(n,t,0)},tK=(e,t,r)=>{var n={},o=e.filter(up),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=ove(u,2),p=d[0],f=d[1],m=f.map(x=>x.dataKey),y=eK(t,r,(c=f[0])===null||c===void 0?void 0:c.barSize);return{stackId:p,dataKeys:m,barSize:y}}),l=a.map(u=>{var c=[u.dataKey].filter(p=>p!=null),d=eK(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function rK(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 R_(e){for(var t=1;tg+(v.barSize||0),0);p+=(i-1)*s,p>=r&&(p-=(i-1)*s,s=0),p>=r&&d>0&&(c=!0,d*=.9,p=i*d);var f=Math.round((r-p)/2),m={offset:f-s,size:0};l=n.reduce((g,v)=>{var b,S={stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(b=v.barSize)!==null&&b!==void 0?b:0}},w=[...g,S];return m=S.position,w},u)}else{var y=Dn(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var x=(r-2*y-(i-1)*s)/i;x>1&&(x=Math.round(x));var h=Ot(o)?Math.min(x,o):x;l=n.reduce((g,v,b)=>[...g,{stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:y+i*(x-h)/2+(h+s)*b,size:h}}],u)}return l}}var nK=(e,t,r,n,o,a,i)=>{var s=ar(i)?t:i,l=pve(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>R_(R_({},u),{},{position:R_(R_({},u.position),{},{offset:u.position.offset-o/2})}))),l};var oK=(e,t)=>{var r=Ec(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 aK=(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 iK(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Ot(e.zIndex)?e.zIndex:t}var sK=Z(J());var eC=e=>{var t=e.chartData,r=Dt(),n=Ar();return(0,sK.useEffect)(()=>n?()=>{}:(r(F5(t)),()=>{r(F5(void 0))}),[t,r,n]),null};var lK={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},uK=Cr({name:"brush",initialState:lK,reducers:{setBrushSettings(e,t){return t.payload==null?lK:t.payload}}}),fUe=uK.actions.setBrushSettings;var cK=uK.reducer;function fve(e){return(e%180+180)%180}var dK=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=fve(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=Ro(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=Ro(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(Zt(t.payload))},removeLine:(e,t)=>{var r=Ro(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Kg=pK.actions,vUe=Kg.addDot,xUe=Kg.removeDot,bUe=Kg.addArea,wUe=Kg.removeArea,SUe=Kg.addLine,kUe=Kg.removeLine;var fK=pK.reducer;var Ex=Z(J()),Nx=Z(J());function gve(e,t){return xve(e)||vve(e,t)||yve(e,t)||hve()}function hve(){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 yve(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);r{var t=e.children,r=(0,Nx.useState)("".concat(eu("recharts"),"-clip")),n=gve(r,1),o=n[0],a=Xc();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return Ex.createElement(bve.Provider,{value:o},Ex.createElement("defs",null,Ex.createElement("clipPath",{id:o},Ex.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var yn=Z(J()),ca=Z(J());function hK(){}function rM(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 yK(e,t,r){return Tx(e,t,void 0,void 0,void 0,void 0,r)}function Tx(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 Ox(e,t,a,i)}return Ox(e,t,a,i)}function Ox(e,t,r,n){if(Object.is(e,t))return!0;let o=nu(e),a=nu(t);if(o==="[object Arguments]"&&(o=Fm),a==="[object Arguments]"&&(a=Fm),o!==a)return!1;switch(o){case Lm:return e.toString()===t.toString();case zm:return Sc(e.valueOf(),t.valueOf());case Bm:case vw:case yw:return Object.is(e.valueOf(),t.valueOf());case gw:return e.source===t.source&&e.flags===t.flags;case xz: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 xw:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!Tx(u,t.get(l),l,e,t,r,n))return!1;return!0;case bw:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cTx(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case ww:case _w:case Cw:case Aw:case Ew:case wz:case Nw:case Tw:case Ow:case Sz:case Pw:case Mw:if(uv(e)!==uv(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 bK(e,t){return tC(e,t+1)}function wK(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:tC(n,u)};var y=l,x,h=()=>(x===void 0&&(x=r(m,y)),x),g=m.coordinate,v=l===0||Mp(e,g,h,c,s);v||(l=0,c=i,u+=1),v&&(c=g+e*(h()/2+o),l+=u)},p;u<=a.length;)if(p=d(),p)return p.v;return[]}function SK(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 b=n[y];if(b==null)return 0;var S=y,w,_=()=>(w===void 0&&(w=r(b,S)),w),k=b.coordinate,A=y===c||Mp(e,k,_,d,l);if(!A)return p=!1,1;A&&(d=k+e*(_()/2+o))},m,y=c;y(y===void 0&&(y=r(f,p)),y);if(p===i-1){var h=e*(m.coordinate+e*x()/2-l);a[p]=m=ua(ua({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=ua(ua({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=Mp(e,m.tickCoord,x,s,l);g&&(l=m.tickCoord-e*(x()/2+o),a[p]=ua(ua({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function Cve(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=ua(ua({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=Mp(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=ua(ua({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,y=function(g){var v=i[g];if(v==null)return 1;var b=v,S,w=()=>(S===void 0&&(S=r(v,g)),S);if(g===0){var _=e*(b.coordinate-e*w()/2-l);i[g]=b=ua(ua({},b),{},{tickCoord:_<0?b.coordinate-_*e:b.coordinate})}else i[g]=b=ua(ua({},b),{},{tickCoord:b.coordinate});if(b.tickCoord!=null){var k=Mp(e,b.tickCoord,w,l,u);k&&(l=b.tickCoord+e*(w()/2+o),i[g]=ua(ua({},b),{},{isShow:!0}))}},x=0;x{var _=typeof u=="function"?u(S.value,w):S.value;return m==="width"?vK(Ap(_,{fontSize:t,letterSpacing:r}),y,d):Ap(_,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?Xr(g.coordinate-h.coordinate):1,b=xK(a,v,m);return l==="equidistantPreserveStart"?wK(v,b,x,o,i):l==="equidistantPreserveEnd"?SK(v,b,x,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=Cve(v,b,x,o,i,l==="preserveStartEnd"):f=_ve(v,b,x,o,i),f.filter(S=>S.isShow))}var _K=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 CK=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 Ave={xAxis:{},yAxis:{}},AK=Cr({name:"renderedTicks",initialState:Ave,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Zt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),EK=AK.actions,NK=EK.setRenderedTicks,TK=EK.removeRenderedTicks;var OK=AK.reducer;var Eve=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function PK(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);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&&nM(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(NK({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,ca.useEffect)(()=>n==null||r==null?Sa:()=>{o(TK({axisId:n,axisType:r}))},[o,n,r]),null}var Hve=(0,ca.forwardRef)((e,t)=>{var r=e.ticks,n=r===void 0?[]:r,o=e.tick,a=e.tickLine,i=e.stroke,s=e.tickFormatter,l=e.unit,u=e.padding,c=e.tickTextProps,d=e.orientation,p=e.mirror,f=e.x,m=e.y,y=e.width,x=e.height,h=e.tickSize,g=e.tickMargin,v=e.fontSize,b=e.letterSpacing,S=e.getTicksConfig,w=e.events,_=e.axisType,k=e.axisId,A=Px(Vn(Vn({},S),{},{ticks:n}),v,b),C=mn(S),E=mi(o),I=C_(C.textAnchor)?C.textAnchor:Bve(d,p),Q=Fve(d,p),$={};typeof a=="object"&&($=a);var F=Vn(Vn({},C),{},{fill:"none"},$),N=A.map(T=>Vn({entry:T},zve(T,f,m,y,x,d,h,p,g))),O=N.map(T=>{var D=T.entry,M=T.line;return yn.createElement(br,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(D.value,"-").concat(D.coordinate,"-").concat(D.tickCoord)},a&&yn.createElement("line",Ip({},F,M,{className:bt("recharts-cartesian-axis-tick-line",Fo(a,"className"))})))}),j=N.map((T,D)=>{var M,K,V=T.entry,L=T.tick,G=Vn(Vn(Vn(Vn({verticalAnchor:Q},C),{},{textAnchor:I,stroke:"none",fill:i},L),{},{index:D,payload:V,visibleTicksCount:A.length,tickFormatter:s,padding:u},c),{},{angle:(M=(K=c?.angle)!==null&&K!==void 0?K:C.angle)!==null&&M!==void 0?M:0}),W=Vn(Vn({},G),E);return yn.createElement(br,Ip({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(V.value,"-").concat(V.coordinate,"-").concat(V.tickCoord)},ru(w,V,D)),o&&yn.createElement(Uve,{option:o,tickProps:W,value:"".concat(typeof s=="function"?s(V.value,D):V.value).concat(l||"")}))});return yn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(_,"-ticks")},yn.createElement(Wve,{ticks:A,axisId:k,axisType:_}),j.length>0&&yn.createElement(on,{zIndex:ir.label},yn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(_,"-tick-labels"),ref:t},j)),O.length>0&&yn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(_,"-tick-lines")},O))}),qve=(0,ca.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=Mve(e,Eve),d=(0,ca.useState)(""),p=PK(d,2),f=p[0],m=p[1],y=(0,ca.useState)(""),x=PK(y,2),h=x[0],g=x[1],v=(0,ca.useRef)(null);(0,ca.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var S;return _K({ticks:v.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})},getCalculatedHeight:()=>{var S;return CK({ticks:v.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var b=(0,ca.useCallback)(S=>{if(S){var w=S.getElementsByClassName("recharts-cartesian-axis-tick-value");v.current=w;var _=w[0];if(_){var k=window.getComputedStyle(_),A=k.fontSize,C=k.letterSpacing;(A!==f||C!==h)&&(m(A),g(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:yn.createElement(on,{zIndex:e.zIndex},yn.createElement(br,{className:bt("recharts-cartesian-axis",a)},yn.createElement(Lve,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:mn(e)}),yn.createElement(Hve,{ref:b,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}),yn.createElement(WH,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},yn.createElement(VH,{label:e.label,labelRef:e.labelRef}),e.children)))}),Mx=yn.forwardRef((e,t)=>{var r=nr(e,os);return yn.createElement(qve,Ip({},r,{ref:t}))});Mx.displayName="CartesianAxis";var Gn=Z(J());var rC=Z(J());var DK={grid:{stroke:"#ccc",fill:"none"}};var jK=(0,rC.createContext)(DK),EWe=jK.Provider,$K=()=>(0,rC.useContext)(jK);var Kve=["x1","y1","x2","y2","key"],Vve=["offset"],Gve=["xAxisId","yAxisId"],Yve=["xAxisId","yAxisId"];function LK(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 da(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 Gn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function zK(e){var t=e.option,r=e.lineItemProps,n;if(Gn.isValidElement(t))n=Gn.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=nC(r,Kve),d=(o=mn(c))!==null&&o!==void 0?o:{},p=d.offset,f=nC(d,Vve),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=Gn.createElement("line",Dp({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function exe(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=nC(e,Gve),u=a.map((c,d)=>{var p=da(da({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return Gn.createElement(zK,{key:"line-".concat(d),option:o,lineItemProps:p})});return Gn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function txe(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=nC(e,Yve),u=a.map((c,d)=>{var p=da(da({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return Gn.createElement(zK,{option:o,lineItemProps:p,key:"line-".concat(d)})});return Gn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function rxe(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.horizontalPoints,l=e.horizontal,u=l===void 0?!0:l;if(!u||!t||!t.length||s==null)return null;var c=s.map(p=>Math.round(p+o-o)).sort((p,f)=>p-f);o!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,x=y?o+i-p:m-p;if(x<=0)return null;var h=f%t.length;return Gn.createElement("rect",{key:"react-".concat(f),y:p,x:n,height:x,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return Gn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function nxe(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,o=e.fillOpacity,a=e.x,i=e.y,s=e.width,l=e.height,u=e.verticalPoints;if(!r||!n||!n.length)return null;var c=u.map(p=>Math.round(p+a-a)).sort((p,f)=>p-f);a!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,x=y?a+s-p:m-p;if(x<=0)return null;var h=f%n.length;return Gn.createElement("rect",{key:"react-".concat(f),x:p,y:i,width:x,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return Gn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var oxe=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return OO(Px(da(da(da({},os),r),{},{ticks:PO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},axe=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return OO(Px(da(da(da({},os),r),{},{ticks:PO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},ixe={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:ir.grid};function wu(e){var t,r,n,o,a,i,s=Qm(),l=Rm(),u=CS(),c=da(da({},nr(e,ixe)),{},{x:je(e.x)?e.x:u.left,y:je(e.y)?e.y:u.top,width:je(e.width)?e.width:u.width,height:je(e.height)?e.height:u.height}),d=c.xAxisId,p=c.yAxisId,f=c.x,m=c.y,y=c.width,x=c.height,h=c.syncWithTicks,g=c.horizontalValues,v=c.verticalValues,b=Ar(),S=$e(O=>y5(O,"xAxis",d,b)),w=$e(O=>y5(O,"yAxis",p,b)),_=$K(),k={stroke:(t=c.stroke)!==null&&t!==void 0?t:_.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:_.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:_.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:_.grid.strokeDasharray};if(!qa(y)||!qa(x)||!je(f)||!je(m))return null;var A=c.verticalCoordinatesGenerator||oxe,C=c.horizontalCoordinatesGenerator||axe,E=c.horizontalPoints,I=c.verticalPoints;if((!E||!E.length)&&typeof C=="function"){var Q=g&&g.length,$=C({yAxis:w?da(da({},w),{},{ticks:Q?g:w.ticks}):void 0,width:s??y,height:l??x,offset:u},Q?!0:h);Jm(Array.isArray($),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof $,"]")),Array.isArray($)&&(E=$)}if((!I||!I.length)&&typeof A=="function"){var F=v&&v.length,N=A({xAxis:S?da(da({},S),{},{ticks:F?v:S.ticks}):void 0,width:s??y,height:l??x,offset:u},F?!0:h);Jm(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(I=N)}return Gn.createElement(on,{zIndex:c.zIndex},Gn.createElement("g",{className:"recharts-cartesian-grid"},Gn.createElement(Rve,{fill:(a=c.fill)!==null&&a!==void 0?a:_.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:_.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),Gn.createElement(rxe,Dp({},c,{horizontalPoints:E})),Gn.createElement(nxe,Dp({},c,{verticalPoints:I})),Gn.createElement(exe,Dp({},c,k,{offset:u,horizontalPoints:E,xAxis:S,yAxis:w})),Gn.createElement(txe,Dp({},c,k,{offset:u,verticalPoints:I,xAxis:S,yAxis:w}))))}wu.displayName="CartesianGrid";var Sr=Z(J()),Su=Z(J());var BK=Z(J());var sxe=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function oM(){return oM=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return FK(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[...pxe(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function mxe(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return fxe(r,t,n)}return FK(t,r)}function UK(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=lxe(e,sxe),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=cxe((c=d?.current)!==null&&c!==void 0?c:null);u=mxe(a,p,o)}else a!=null&&(u=String(a));return BK.createElement(ll,oM({},s,{connectNulls:l,strokeDasharray:u}))}var jp=Z(J());function WK(e){var t=(0,jp.useRef)(0),r=(0,jp.useRef)(0),n=(0,jp.useRef)(!1),o=(0,jp.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,jp.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(qi(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 KK=Z(J()),Ix=Z(J());var gxe={},HK=Cr({name:"errorBars",initialState:gxe,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))}}}),aM=HK.actions,ZWe=aM.addErrorBar,JWe=aM.replaceErrorBar,QWe=aM.removeErrorBar;var qK=HK.reducer;var hxe=["children"];function yxe(e,t){if(e==null)return{};var r,n,o=vxe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},bxe=(0,Ix.createContext)(xxe);function oC(e){var t=e.children,r=yxe(e,hxe);return KK.createElement(bxe.Provider,{value:r},t)}var iM=Z(J());function $p(e,t){var r,n,o=$e(u=>gl(u,e)),a=$e(u=>hl(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:oo.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:ao.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function Vg(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=Xc(),a=$p(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=$e(v=>s5(v,t,!1)),c=$e(v=>l5(v,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-f/2,x=s&&c?Math.min(c[0],c[1]):p-m/2,h=i&&u?Math.abs(u[1]-u[0]):f*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return iM.createElement("clipPath",{id:"clipPath-".concat(n)},iM.createElement("rect",{x:y,y:x,width:h,height:g}))}var VK=(e,t,r,n)=>Ai(e,"xAxis",t,n),GK=(e,t,r,n)=>Ci(e,"xAxis",t,n),YK=(e,t,r,n)=>Ai(e,"yAxis",r,n),XK=(e,t,r,n)=>Ci(e,"yAxis",r,n),wxe=ae([zt,VK,YK,GK,XK],(e,t,r,n,o)=>sa(e,"xAxis")?Xi(t,n,!1):Xi(r,o,!1)),Sxe=(e,t,r,n,o)=>o;function kxe(e){return e.type==="line"}var _xe=ae([Dc,Sxe],(e,t)=>e.filter(kxe).find(r=>r.id===t)),ZK=ae([zt,VK,YK,GK,XK,_xe,wxe,ap],(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 JK({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function aC(e){var t=mi(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 Cxe=["id"],Axe=["type","layout","connectNulls","needClip","shape","strokeDasharray"],Exe=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function iC(){return iC=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Dxe=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Ixe(e),n=[];for(var o of e)if(o.status==="matched")n.push(yl(yl({},o.next),{},{x:_r(o.prev.x,o.next.x,t),y:_r(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(yl(yl({},o.next),{},{x:_r(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(yl(yl({},o.prev),{},{x:_r(o.prev.x,i,t),y:o.prev.y}))}return n},uM={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Dxe,animationMatchBy:Op,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:UK,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:ir.line,type:"linear"},jxe=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:xi(r,t),payload:e}]},$xe=Sr.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:Sa,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:xi(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return Sr.createElement(qc,{tooltipEntrySettings:p})});function Lxe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=lM(n,Cxe),u=mn(l);return Sr.createElement(Z_,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function zxe(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,Su.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 yl(yl({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return Sr.createElement(Lg,{value:t?o:void 0},r)}function Bxe(e){var t=e.clipPathId,r=e.pathRef,n=e.points,o=e.props,a=e.animationElapsedTime,i=e.isAnimating,s=e.isEntrance,l=e.visibleLength,u=o.type,c=o.layout,d=o.connectNulls,p=o.needClip,f=o.shape,m=o.strokeDasharray,y=lM(o,Axe),x=yl(yl({},gn(y)),{},{fill:"none",className:"recharts-line-curve",clipPath:p?"url(#clipPath-".concat(t,")"):void 0,points:n,type:u,layout:c,connectNulls:d,strokeDasharray:m??o.strokeDasharray,pathRef:r,animationElapsedTime:a,isAnimating:i,isEntrance:o.animateNewValues?s:!1,visibleLength:l});return Sr.createElement(Sr.Fragment,null,n?.length>1&&Sr.createElement(Hc,{option:f,DefaultShape:uM.shape,shapeProps:x}),Sr.createElement(Lxe,{points:n,clipPathId:t,props:o}))}function Fxe(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=Mxe(n.current),m=Vc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,x=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=WK(a),b=(0,Su.useCallback)(S=>S>0&&f>0,[f]);return Sr.createElement(zxe,{points:a,showLabels:g},r.children,Sr.createElement(Gc,{animationInput:a,animationIdPrefix:"recharts-line-",items:a,previousItemsRef:o,isAnimationActive:i,animationBegin:s,animationDuration:l,animationEasing:u,onAnimationStart:x,onAnimationEnd:h,animationInterpolateFn:d,animationMatchBy:c,shouldUpdatePreviousRef:b,layout:p},(S,w,_)=>{var k=y||w<1,A=k?v(w,f):null;return Sr.createElement(Bxe,{props:r,points:S,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:k,isEntrance:_,visibleLength:A})}),Sr.createElement(Wc,{label:r.label}))}function Uxe(e){var t=e.clipPathId,r=e.props,n=(0,Su.useRef)(null),o=(0,Su.useRef)(null);return Sr.createElement(Fxe,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var Wxe=(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:Wt(e.payload,t)}},sM=class extends Su.Component{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.top,u=t.left,c=t.width,d=t.height,p=t.id,f=t.needClip,m=t.zIndex;if(r)return null;var y=bt("recharts-line",a),x=p,h=aC(n),g=h.r,v=h.strokeWidth,b=zg(n),S=g*2+v,w=f?"url(#clipPath-".concat(b?"":"dots-").concat(x,")"):void 0;return Sr.createElement(on,{zIndex:m},Sr.createElement(br,{className:y},f&&Sr.createElement("defs",null,Sr.createElement(Vg,{clipPathId:x,xAxisId:i,yAxisId:s}),!b&&Sr.createElement("clipPath",{id:"clipPath-dots-".concat(x)},Sr.createElement("rect",{x:u-S/2,y:l-S/2,width:c+S,height:d+S}))),Sr.createElement(oC,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:Wxe,errorBarOffset:0},Sr.createElement(Uxe,{props:this.props,clipPathId:x}))),Sr.createElement(Ax,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function Hxe(e){var t=nr(e,uM),r=t.activeDot,n=t.animateNewValues,o=t.animationBegin,a=t.animationDuration,i=t.animationEasing,s=t.connectNulls,l=t.dot,u=t.hide,c=t.isAnimationActive,d=t.label,p=t.legendType,f=t.xAxisId,m=t.yAxisId,y=t.id,x=lM(t,Exe),h=$p(f,m),g=h.needClip,v=Xc(),b=Va(),S=Ar(),w=$e(E=>ZK(E,f,m,S,y));if(b!=="horizontal"&&b!=="vertical"||w==null||v==null)return null;var _=v.height,k=v.width,A=v.x,C=v.y;return Sr.createElement(sM,iC({},x,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:p,xAxisId:f,yAxisId:m,points:w,layout:b,height:_,width:k,left:A,top:C,needClip:g}))}function JK(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=Wt(u,i);if(t==="horizontal"){var p=Km({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=ar(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=ar(d)?null:r.scale.map(d),y=Km({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||y==null?null:{x:m,y,value:d,payload:u}}).filter(Boolean)}function qxe(e){var t=nr(e,uM),r=Ar();return Sr.createElement(Yc,{id:t.id,type:"line"},n=>Sr.createElement(Sr.Fragment,null,Sr.createElement(Fg,{legendPayload:jxe(t)}),Sr.createElement($xe,{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}),Sr.createElement(Hg,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),Sr.createElement(Hxe,iC({},t,{id:n}))))}var sC=Sr.memo(qxe,Ga);sC.displayName="Line";var hr=Z(J()),Lp=Z(J());function as(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:eM}function is(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:eM}var RK=(e,t,r)=>Ai(e,"xAxis",as(e,t),r),eV=(e,t,r)=>Ci(e,"xAxis",as(e,t),r),tV=(e,t,r)=>Ai(e,"yAxis",is(e,t),r),rV=(e,t,r)=>Ci(e,"yAxis",is(e,t),r),Kxe=ae([zt,RK,tV,eV,rV],(e,t,r,n,o)=>sa(e,"xAxis")?Xi(t,n,!1):Xi(r,o,!1)),Vxe=(e,t)=>t,cM=ae([Dc,Vxe],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),nV=e=>{var t=zt(e),r=sa(t,"xAxis");return r?"yAxis":"xAxis"},Gxe=(e,t)=>{var r=nV(e);return r==="yAxis"?is(e,t):as(e,t)},oV=(e,t,r)=>_g(e,nV(e),Gxe(e,t),r),Yxe=ae([cM,oV],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Ec(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]])}}}),Xxe=ae([cM,oV],(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(_o)}}),aV=ae([zt,RK,tV,eV,rV,Yxe,GS,Kxe,cM,cF,Xxe],(e,t,r,n,o,a,i,s,l,u,c)=>{var d=i.chartData,p=i.dataStartIndex,f=i.dataEndIndex;if(!(l==null||e!=="horizontal"&&e!=="vertical"||t==null||r==null||n==null||o==null||n.length===0||o.length===0||s==null)){var m=l.data,y;if(m&&m.length>0?y=m:y=d?.slice(p,f+1),y!=null)return iV({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:p,areaSettings:l,stackedData:a,displayedData:y,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var pa=Z(J());var Zxe=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Jxe=["id","baseLine"];function Dx(){return Dx=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return je(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),je(c)?pa.createElement("rect",{x:sd.x||0));return je(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),je(c)?pa.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Gg(Gg({},r.next),{},{x:_r(r.prev.x,r.next.x,t),y:_r(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),dV={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Op,animationInterpolateFn:l0e,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:lV,xAxisId:0,yAxisId:0,zIndex:ir.area};function uC(e,t){return e&&e!=="none"?e:t}var u0e=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:uC(n,o),value:xi(r,t),payload:e}]},c0e=hr.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:Sa,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:xi(i,t),hide:s,type:c,color:uC(n,a),unit:l,formatter:u,graphicalItemId:d}};return hr.createElement(qc,{tooltipEntrySettings:p})});function d0e(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=mn(n);return hr.createElement(Z_,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function p0e(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 Gg(Gg({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return hr.createElement(Lg,{value:t?o:void 0},r)}function f0e(e){var t=e.points,r=e.baseLine,n=e.needClip,o=e.clipPathId,a=e.props,i=e.animationElapsedTime,s=e.isAnimating,l=e.isEntrance,u=a.layout,c=a.type,d=a.stroke,p=a.connectNulls,f=a.isRange,m=a.shape,y=a.id,x=cV(a,r0e),h=gn(x),g=Gg(Gg({},h),{},{id:y,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,animationElapsedTime:i,isAnimating:s,isEntrance:l});return hr.createElement(hr.Fragment,null,t?.length>1&&hr.createElement(br,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},hr.createElement(Hc,{option:m,DefaultShape:dV.shape,shapeProps:g})),hr.createElement(d0e,{points:t,props:x,clipPathId:o}))}function m0e(e,t,r){if(je(e)){var n=je(t)?t:void 0;return _r(n,e,r)}if(ar(e)||Uo(e)){var o=je(t)?t:void 0;return _r(o,0,r)}return e}function g0e(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,Lp.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=H_(m,a),x=eg(),h=Vc(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,v=h.handleAnimationStart,b=h.handleAnimationEnd,S=y.startValue;if(x==null)return null;var w;return Array.isArray(s)&&Array.isArray(S)?w=Sx(S,s,p):Array.isArray(s)?w=Sx(null,s,p):w=null,hr.createElement(Gc,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:b,animationInterpolateFn:f,animationMatchBy:p,layout:x},(_,k,A)=>{var C;return k===1?C=s:Array.isArray(s)?C=f(w,k,x):C=A?s:m0e(s,S,k),y.syncStepValue(C,k),hr.createElement(p0e,{showLabels:!g,points:i},n.children,hr.createElement(f0e,{points:_,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:k,isAnimating:g||k<1,isEntrance:A}),hr.createElement(Wc,{label:n.label}))})}function h0e(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Lp.useRef)(null),a=(0,Lp.useRef)();return hr.createElement(g0e,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var dM=class extends Lp.PureComponent{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.top,s=t.left,l=t.needClip,u=t.xAxisId,c=t.yAxisId,d=t.width,p=t.height,f=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var x=bt("recharts-area",a),h=f,g=aC(n),v=g.r,b=g.strokeWidth,S=zg(n),w=v*2+b,_=l?"url(#clipPath-".concat(S?"":"dots-").concat(h,")"):void 0;return hr.createElement(on,{zIndex:y},hr.createElement(br,{className:x},l&&hr.createElement("defs",null,hr.createElement(Vg,{clipPathId:h,xAxisId:u,yAxisId:c}),!S&&hr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},hr.createElement("rect",{x:s-w/2,y:i-w/2,width:d+w,height:p+w}))),hr.createElement(h0e,{needClip:l,clipPathId:h,props:this.props})),hr.createElement(Ax,{points:o,mainColor:uC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}),this.props.isRange&&Array.isArray(m)&&hr.createElement(Ax,{points:m,mainColor:uC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}))}};function y0e(e){var t,r=e.activeDot,n=e.animationBegin,o=e.animationDuration,a=e.animationEasing,i=e.connectNulls,s=e.dot,l=e.fill,u=e.fillOpacity,c=e.hide,d=e.isAnimationActive,p=e.legendType,f=e.stroke,m=e.xAxisId,y=e.yAxisId,x=cV(e,n0e),h=Va(),g=f_(),v=$p(m,y),b=v.needClip,S=Ar(),w=(t=$e(F=>aV(F,e.id,S)))!==null&&t!==void 0?t:{},_=w.points,k=w.isRange,A=w.baseLine,C=Xc();if(h!=="horizontal"&&h!=="vertical"||C==null||g!=="AreaChart"&&g!=="ComposedChart")return null;var E=C.height,I=C.width,Q=C.x,$=C.y;return!_||!_.length?null:hr.createElement(dM,lC({},x,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:A,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:E,hide:c,layout:h,isAnimationActive:d,isRange:k,legendType:p,needClip:b,points:_,stroke:f,width:I,left:Q,top:$,xAxisId:m,yAxisId:y}))}var v0e=(e,t,r,n,o)=>{var a=r??t;if(je(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 iV(e){var t=e.areaSettings,r=t.connectNulls,n=t.baseValue,o=t.dataKey,a=e.stackedData,i=e.layout,s=e.chartBaseValue,l=e.xAxis,u=e.yAxis,c=e.displayedData,d=e.dataStartIndex,p=e.xAxisTicks,f=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,x=a&&a.length,h=v0e(i,s,n,l,u),g=i==="horizontal",v=!1,b=c.map((w,_)=>{var k,A,C,E;if(x)E=a[d+_];else{var I=Wt(w,o);Array.isArray(I)?(E=I,v=!0):E=[h,I]}var Q=(k=(A=E)===null||A===void 0?void 0:A[1])!==null&&k!==void 0?k:null,$=Wt(w,o),F=x&&$==null&&y!=null&&y.length>0&&y.every(j=>Wt(w,j)==null),N=Q==null||x&&!r&&$==null||F;if(g){var O;return{x:Km({axis:l,ticks:p,bandSize:m,entry:w,index:_}),y:N?null:(O=u.scale.map(Q))!==null&&O!==void 0?O:null,value:E,payload:w}}return{x:N?null:(C=l.scale.map(Q))!==null&&C!==void 0?C:null,y:Km({axis:u,ticks:f,bandSize:m,entry:w,index:_}),value:E,payload:w}}),S;return x||v?S=b.map(w=>{var _,k=Array.isArray(w.value)?w.value[0]:null;if(g){var A;return{x:w.x,y:k!=null&&w.y!=null&&(A=u.scale.map(k))!==null&&A!==void 0?A:null,payload:w.payload}}return{x:k!=null&&(_=l.scale.map(k))!==null&&_!==void 0?_:null,y:w.y,payload:w.payload}}):S=g?u.scale.map(h):l.scale.map(h),{points:b,baseLine:S??0,isRange:v}}function x0e(e){var t=nr(e,dV),r=Ar();return hr.createElement(Yc,{id:t.id,type:"area"},n=>hr.createElement(hr.Fragment,null,hr.createElement(Fg,{legendPayload:u0e(t)}),hr.createElement(c0e,{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}),hr.createElement(Hg,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:vS(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),hr.createElement(y0e,lC({},t,{id:n}))))}var ku=hr.memo(x0e,Ga);ku.displayName="Area";var Qt=Z(J()),Bs=Z(J());var fV=Z(J());var b0e=!0,pM="Invariant failed";function pV(e,t){if(!e){if(b0e)throw new Error(pM);var r=typeof t=="function"?t():t,n=r?"".concat(pM,": ").concat(r):pM;throw new Error(n)}}var w0e=["option"];function S0e(e,t){if(e==null)return{};var r,n,o=k0e(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(je(t))return t;var a=je(n)||ar(n);return a?t(n,o):(a||pV(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var _0e=(e,t,r)=>r,C0e=(e,t)=>t,jx=ae([Dc,C0e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),A0e=ae([jx],e=>e?.maxBarSize),E0e=(e,t,r,n)=>n,N0e=ae([zt,Dc,as,is,_0e],(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")),T0e=(e,t,r)=>{var n=zt(e),o=as(e,t),a=is(e,t);if(!(o==null||a==null))return n==="horizontal"?_g(e,"yAxis",a,r):_g(e,"xAxis",o,r)},O0e=(e,t)=>{var r=zt(e),n=as(e,t),o=is(e,t);if(!(n==null||o==null))return r==="horizontal"?m5(e,"xAxis",n):m5(e,"yAxis",o)},P0e=ae([N0e,uF,O0e],tK),M0e=(e,t,r)=>{var n,o,a=jx(e,t);if(a==null)return 0;var i=as(e,t),s=is(e,t);if(i==null||s==null)return 0;var l=zt(e),u=nP(e),c=a.maxBarSize,d=ar(c)?u:c,p,f;return l==="horizontal"?(p=Ai(e,"xAxis",i,r),f=Ci(e,"xAxis",i,r)):(p=Ai(e,"yAxis",s,r),f=Ci(e,"yAxis",s,r)),(n=(o=Xi(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},gV=(e,t,r)=>{var n=zt(e),o=as(e,t),a=is(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=Ai(e,"xAxis",o,r),s=Ci(e,"xAxis",o,r)):(i=Ai(e,"yAxis",a,r),s=Ci(e,"yAxis",a,r)),Xi(i,s)}},I0e=ae([P0e,nP,lF,QS,M0e,gV,A0e],nK),D0e=(e,t,r)=>{var n=as(e,t);if(n!=null)return Ai(e,"xAxis",n,r)},j0e=(e,t,r)=>{var n=is(e,t);if(n!=null)return Ai(e,"yAxis",n,r)},$0e=(e,t,r)=>{var n=as(e,t);if(n!=null)return Ci(e,"xAxis",n,r)},L0e=(e,t,r)=>{var n=is(e,t);if(n!=null)return Ci(e,"yAxis",n,r)},z0e=ae([I0e,jx],aK),B0e=ae([T0e,jx],oK),hV=ae([Fr,Xm,D0e,j0e,$0e,L0e,z0e,zt,GS,gV,B0e,jx,E0e],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=l.chartData,m=l.dataStartIndex,y=l.dataEndIndex;if(!(d==null||i==null||t==null||s!=="horizontal"&&s!=="vertical"||r==null||n==null||o==null||a==null||u==null)){var x=d.data,h;if(x!=null&&x.length>0?h=x:h=f?.slice(m,y+1),h!=null)return yV({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 mM=Z(J()),Yg=Z(J());var F0e=["index"];function fM(){return fM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,Yg.useContext)(vV);if(t!=null)return t.stackId;if(e!=null)return vS(e)};var H0e=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),q0e=e=>{var t=(0,Yg.useContext)(vV);if(t!=null){var r=t.stackId;return"url(#".concat(H0e(r,e),")")}},gM=e=>{var t=e.index,r=U0e(e,F0e),n=q0e(t);return mM.createElement(br,fM({className:"recharts-bar-stack-layer",clipPath:n},r))};var K0e=["onMouseEnter","onMouseLeave","onClick"],V0e=["value","background","tooltipPosition"],G0e=["id"],Y0e=["onMouseEnter","onClick","onMouseLeave"];function bV(e,t){return Q0e(e)||J0e(e,t)||Z0e(e,t)||X0e()}function X0e(){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 Z0e(e,t){if(e){if(typeof e=="string")return wV(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)?wV(e,t):void 0}}function wV(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:xi(r,t),payload:e}]},obe=Qt.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:Sa,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:xi(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Qt.createElement(qc,{tooltipEntrySettings:d})});function abe(e){var t=$e(ts),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=pC(a,K0e),c=yx(i,n,a.id),d=vx(s),p=xx(l,n,a.id);if(!o||r==null)return null;var f=mi(o);return Qt.createElement(on,{zIndex:iK(o,ir.barBackground)},r.map((m,y)=>{var x=m.value,h=m.background,g=m.tooltipPosition,v=pC(m,V0e);if(!h)return null;var b=c(m,m.originalDataIndex),S=d(m,m.originalDataIndex),w=p(m,m.originalDataIndex),_=Eo(Eo(Eo(Eo(Eo({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),f),ru(u,m,y)),{},{onMouseEnter:b,onMouseLeave:S,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Qt.createElement(dC,Zc({key:"background-bar-".concat(y)},_))}))}function ibe(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 Eo(Eo({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return Qt.createElement(Lg,{value:t?o:void 0},r)}function sbe(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=$e(ts),l=$e(Ng),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,Bs.useState)(!1),p=bV(d,2),f=p[0],m=p[1],y=(0,Bs.useState)(!1),x=bV(y,2),h=x[0],g=x[1];(0,Bs.useEffect)(()=>{var k;return u?(m(!0),k=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(k)}},[u,c]);var v=(0,Bs.useCallback)(()=>{u||m(!1)},[u]),b=u&&h,S=u||f,w;u?r===!0?w=t:w=r:w=t;var _=Qt.createElement(dC,Zc({},n,{name:String(n.name)},o,{isActive:b,option:w,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:v}));return S?Qt.createElement(on,{zIndex:ir.activeBar},Qt.createElement(gM,{index:o.originalDataIndex},_)):_}function lbe(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Qt.createElement(dC,Zc({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function ube(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=mn(n))!==null&&t!==void 0?t:{},l=s.id,u=pC(s,G0e),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,x=pC(n,Y0e),h=yx(f,d,l),g=vx(y),v=xx(m,d,l);return r?Qt.createElement(Qt.Fragment,null,r.map((b,S)=>Qt.createElement(gM,Zc({index:b.originalDataIndex,key:"rectangle-".concat(b?.x,"-").concat(b?.y,"-").concat(b?.value,"-").concat(S),className:"recharts-bar-rectangle"},ru(x,b,S),{onMouseEnter:h(b,b.originalDataIndex),onMouseLeave:g(b,b.originalDataIndex),onClick:v(b,b.originalDataIndex)}),p?Qt.createElement(sbe,{shape:c,activeBar:p,baseProps:u,entry:b,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Qt.createElement(lbe,{shape:c,baseProps:u,entry:b,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var cbe=(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"?[Eo(Eo({},n.prev),{},{height:_r(n.prev.height,0,t),y:_r(n.prev.y,n.prev.y+n.prev.height,t)})]:[Eo(Eo({},n.prev),{},{width:_r(n.prev.width,0,t)})];if(n.status==="matched")return[Eo(Eo({},n.next),{},{x:_r(n.prev.x,n.next.x,t),y:_r(n.prev.y,n.next.y,t),width:_r(n.prev.width,n.next.width,t),height:_r(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[Eo(Eo({},o),{},{height:_r(0,o.height,t),y:_r(o.stackedBarStart,o.y,t)})]:[Eo(Eo({},o),{},{width:_r(0,o.width,t),x:_r(o.stackedBarStart,o.x,t)})]});function dbe(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=Vc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return Qt.createElement(ibe,{showLabels:!d,rects:n},Qt.createElement(Gc,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:p,onAnimationEnd:f,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,x)=>Qt.createElement(br,null,Qt.createElement(ube,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:x}))),Qt.createElement(Wc,{label:t.label}),t.children)}function pbe(e){var t=(0,Bs.useRef)(null);return Qt.createElement(dbe,{previousRectanglesRef:t,props:e})}var kV=0,fbe=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Wt(e,t)}},hM=class extends Bs.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 Qt.createElement(br,{className:d,id:c},l&&Qt.createElement("defs",null,Qt.createElement(Vg,{clipPathId:p,xAxisId:i,yAxisId:s})),Qt.createElement(br,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},Qt.createElement(abe,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Qt.createElement(pbe,this.props)))}},mbe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:cbe,animationMatchBy:wx,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:kV,shape:cC,xAxisId:0,yAxisId:0,zIndex:ir.bar};function gbe(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=$p(t,r),p=d.needClip,f=Va(),m=Ar(),y=gx(e.children,yu),x=$e(v=>hV(v,e.id,m,y));if(f!=="vertical"&&f!=="horizontal")return null;var h,g=x?.[0];return g==null||g.height==null||g.width==null?h=0:h=f==="vertical"?g.height/2:g.width/2,Qt.createElement(oC,{xAxisId:t,yAxisId:r,data:x,dataPointFormatter:fbe,errorBarOffset:h},Qt.createElement(hM,Zc({},e,{layout:f,needClip:p,data:x,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function yV(e){var t=e.layout,r=e.barSettings,n=r.dataKey,o=r.minPointSize,a=r.hasCustomShape,i=e.pos,s=e.bandSize,l=e.xAxis,u=e.yAxis,c=e.xAxisTicks,d=e.yAxisTicks,p=e.stackedData,f=e.displayedData,m=e.offset,y=e.cells,x=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=p?g.scale.domain():null,b=s7({numericAxis:g}),S=g.scale.map(b);return f.map((w,_)=>{var k,A,C,E,I,Q;if(p){var $=p[_+h];if($==null)return null;k=a7($,v)}else k=Wt(w,n),Array.isArray(k)||(k=[b,k]);var F=mV(o,kV)(k[1],_);if(t==="horizontal"){var N,O=u.scale.map(k[0]),j=u.scale.map(k[1]);if(O==null||j==null)return null;A=MO({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:w,index:_}),C=(N=j??O)!==null&&N!==void 0?N:void 0,E=i.size;var T=O-j;if(I=Uo(T)?0:T,Q={x:A,y:m.top,width:E,height:m.height},Math.abs(F)>0&&Math.abs(I)0&&Math.abs(E)Qt.createElement(Qt.Fragment,null,Qt.createElement(Fg,{legendPayload:nbe(t)}),Qt.createElement(obe,{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}),Qt.createElement(Hg,{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!==cC}),Qt.createElement(on,{zIndex:t.zIndex},Qt.createElement(gbe,Zc({},t,{id:o})))))}var fC=Qt.memo(hbe,Ga);fC.displayName="Bar";var _u=Z(J()),ss=Z(J());var ybe=["domain","range"],vbe=["domain","range"];function _V(e,t){if(e==null)return{};var r,n,o=xbe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return EV(EV({},a),{},{type:i})},[a,i]);return(0,ss.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(Fq(s)):r.current!==s&&t(Uq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,ss.useLayoutEffect)(()=>()=>{r.current&&(t(Wq(r.current)),r.current=null)},[t]),null}var Nbe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,ss.useRef)(null),i=(0,ss.useRef)(null),s=$e(Xm),l=Ar(),u=Dt(),c="xAxis",d=$e(w=>e_(w,c,t,l)),p=$e(w=>p5(w,t)),f=$e(w=>QU(w,t)),m=$e(w=>HP(w,t));if((0,ss.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Tp(o)||(0,ss.isValidElement)(o)||m==null)){var w=a.current;if(w){var _=w.getCalculatedHeight();Math.round(p.height)!==Math.round(_)&&u(Gq({id:t,height:_}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=vM(e,wbe),v=m.id,b=m.scale,S=vM(m,Sbe);return _u.createElement(Mx,yM({},g,S,{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}))},Tbe={allowDataOverflow:oo.allowDataOverflow,allowDecimals:oo.allowDecimals,allowDuplicatedCategory:oo.allowDuplicatedCategory,angle:oo.angle,axisLine:os.axisLine,height:oo.height,hide:!1,includeHidden:oo.includeHidden,interval:oo.interval,label:!1,minTickGap:oo.minTickGap,mirror:oo.mirror,orientation:oo.orientation,padding:oo.padding,reversed:oo.reversed,scale:oo.scale,tick:oo.tick,tickCount:oo.tickCount,tickLine:os.tickLine,tickSize:os.tickSize,type:oo.type,niceTicks:oo.niceTicks,xAxisId:0},Obe=e=>{var t=nr(e,Tbe);return _u.createElement(_u.Fragment,null,_u.createElement(Ebe,{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}),_u.createElement(Nbe,t))},Cu=_u.memo(Obe,mC);Cu.displayName="XAxis";var Au=Z(J()),ls=Z(J());var Pbe=["type"],Mbe=["dangerouslySetInnerHTML","ticks","scale"],Ibe=["id","scale"];function xM(){return xM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return TV(TV({},a),{},{type:i})},[i,a]);return(0,ls.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(Hq(s)):r.current!==s&&t(qq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,ls.useLayoutEffect)(()=>()=>{r.current&&(t(Kq(r.current)),r.current=null)},[t]),null}function Bbe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,ls.useRef)(null),i=(0,ls.useRef)(null),s=$e(Xm),l=Ar(),u=Dt(),c="yAxis",d=$e(w=>f5(w,t)),p=$e(w=>RU(w,t)),f=$e(w=>e_(w,c,t,l)),m=$e(w=>qP(w,t));if((0,ls.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Tp(o)||(0,ls.isValidElement)(o)||m==null)){var w=a.current;if(w){var _=w.getCalculatedWidth();Math.round(d.width)!==Math.round(_)&&u(Vq({id:t,width:_}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=bM(e,Mbe),v=m.id,b=m.scale,S=bM(m,Ibe);return Au.createElement(Mx,xM({},g,S,{ref:a,labelRef:i,x:p.x,y:p.y,tickTextProps:n==="auto"?{width:void 0}:{width:n},width:d.width,height:d.height,className:bt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:f,axisType:c,axisId:t}))}var Fbe={allowDataOverflow:ao.allowDataOverflow,allowDecimals:ao.allowDecimals,allowDuplicatedCategory:ao.allowDuplicatedCategory,angle:ao.angle,axisLine:os.axisLine,hide:!1,includeHidden:ao.includeHidden,interval:ao.interval,label:!1,minTickGap:ao.minTickGap,mirror:ao.mirror,orientation:ao.orientation,padding:ao.padding,reversed:ao.reversed,scale:ao.scale,tick:ao.tick,tickCount:ao.tickCount,tickLine:os.tickLine,tickSize:os.tickSize,type:ao.type,niceTicks:ao.niceTicks,width:ao.width,yAxisId:0},Ube=e=>{var t=nr(e,Fbe);return Au.createElement(Au.Fragment,null,Au.createElement(zbe,{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}),Au.createElement(Bbe,t))},Eu=Au.memo(Ube,mC);Eu.displayName="YAxis";var rG=Z(J()),nG=Z(J());var Hp=Z(J()),tG=Z(J());var qV=Z(J()),KV=Z(J());var Wbe=(e,t)=>t,$x=ae([Wbe,zt,ik,no,k5,Za,PW,Fr],LW);function Hbe(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Lx(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(Hbe(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 SM=ho("mouseClick"),kM=su();kM.startListening({actionCreator:SM,effect:(e,t)=>{var r=e.payload,n=$x(t.getState(),Lx(r));n?.activeIndex!=null&&t.dispatch(cW({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var gC=ho("mouseMove"),_M=su(),Xg=null,zp=null,wM=null;_M.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");Xg!==null&&(cancelAnimationFrame(Xg),Xg=null),zp!==null&&(typeof a!="number"||!s)&&(clearTimeout(zp),zp=null),wM=Lx(r);var l=()=>{var u=t.getState(),c=jc(u,u.tooltip.settings.shared);if(!wM){Xg=null,zp=null;return}if(c==="axis"){var d=$x(u,wM);d?.activeIndex!=null?t.dispatch(o_({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(n_())}Xg=null,zp=null};if(!s){l();return}a==="raf"?Xg=requestAnimationFrame(l):typeof a=="number"&&zp===null&&(zp=setTimeout(l,a))}});function OV(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 PV={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},MV=Cr({name:"rootProps",initialState:PV,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:PV.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}}}),IV=MV.reducer,DV=MV.actions.updateOptions;var qbe=null,Kbe={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)},jV=Cr({name:"polarOptions",initialState:qbe,reducers:Kbe}),$V=jV.actions.updatePolarOptions;var LV=jV.reducer;var CM=ho("keyDown"),AM=ho("focus"),EM=ho("blur"),zx=su(),Zg=null,Bp=null,hC=null;zx.startListening({actionCreator:CM,effect:(e,t)=>{hC=e.payload,Zg!==null&&(cancelAnimationFrame(Zg),Zg=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Bp!==null&&(typeof o!="number"||!i)&&(clearTimeout(Bp),Bp=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=hC;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=$c(c,hu(l),pu(l),zc(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,y=Za(l),x=hu(l),h=jc(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=px(l,h,"hover",String(c.index));t.dispatch(cx({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=eW(l),b=v==="left-to-right"?1:-1,S=d==="ArrowRight"?1:-1,w;if(m){var _=pu(l),k=zc(l),A=S*b,C=F=>({active:!1,index:String(F),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(w=-1,A>0){for(var E=0;E=0;I--)if($c(C(I),x,_,k)!=null){w=I;break}if(w<0)return}else{w=f+S*b;var Q=y?.length||x.length;if(Q===0||w>=Q||w<0)return}var $=px(l,h,"hover",String(w));t.dispatch(cx({active:!0,activeIndex:w.toString(),activeCoordinate:$}))}finally{Zg=null,Bp=null}};if(!i){s();return}o==="raf"?Zg=requestAnimationFrame(s):typeof o=="number"&&Bp===null&&(s(),hC=null,Bp=setTimeout(()=>{hC?s():(Bp=null,Zg=null)},o))}});zx.startListening({actionCreator:AM,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=px(r,i,"hover",String(a));t.dispatch(cx({active:!0,activeIndex:a,activeCoordinate:s}))}}}});zx.startListening({actionCreator:EM,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(cx({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function yC(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 Ei=ho("externalEvent"),TM=su(),vC=new Map,Bx=new Map,NM=new Map;TM.startListening({actionCreator:Ei,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=yC(o);NM.set(a,{handler:n,reactEvent:i});var s=vC.get(a);s!==void 0&&(cancelAnimationFrame(s),vC.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=Bx.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),Bx.delete(a));var y=()=>{var g=NM.get(a);try{if(!g)return;var v=g.handler,b=g.reactEvent,S=t.getState(),w={activeCoordinate:E5(S),activeDataKey:Ng(S),activeIndex:ts(S),activeLabel:d_(S),activeTooltipIndex:ts(S),isTooltipActive:N5(S)};v&&v(w,b)}finally{vC.delete(a),Bx.delete(a),NM.delete(a)}};if(!f){y();return}if(c==="raf"){var x=requestAnimationFrame(y);vC.set(a,x)}else if(typeof c=="number"){if(!Bx.has(a)){y();var h=setTimeout(y,c);Bx.set(a,h)}}else y()}}});var Vbe=ae([gu],e=>e.tooltipItemPayloads),zV=ae([Vbe,(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 OM=ho("touchMove"),PM=su(),Fp=null,Jc=null,BV=null,Fx=null;PM.startListening({actionCreator:OM,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){Fx=yC(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Fp!==null&&(cancelAnimationFrame(Fp),Fp=null),Jc!==null&&(typeof a!="number"||!s)&&(clearTimeout(Jc),Jc=null),BV=Array.from(r.touches).map(u=>Lx({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(Fx!=null){var u=t.getState(),c=jc(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=BV)===null||d===void 0?void 0:d[0];if(p==null){Fp=null,Jc=null;return}var f=$x(u,p);f?.activeIndex!=null&&t.dispatch(o_({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,y=Fx.touches[0];if(document.elementFromPoint==null||y==null)return;var x=document.elementFromPoint(y.clientX,y.clientY);if(!x||!x.getAttribute)return;var h=x.getAttribute(xS),g=(m=x.getAttribute(bS))!==null&&m!==void 0?m:void 0,v=Lc(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var b=v.dataKey,S=zV(u,h,g);t.dispatch(r_({activeDataKey:b,activeIndex:h,activeCoordinate:S,activeGraphicalItemId:g}))}Fp=null,Jc=null}};if(!s){l();return}a==="raf"?Fp=requestAnimationFrame(l):typeof a=="number"&&Jc===null&&(l(),Fx=null,Jc=setTimeout(()=>{Fx?l():(Jc=null,Fp=null)},a))}}});var Ux={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},FV=Cr({name:"eventSettings",initialState:Ux,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Zt(t.payload.throttledEvents))}}}),UV=FV.actions.setEventSettings;var WV=FV.reducer;var Gbe=Gw({brush:cK,cartesianAxis:Yq,chartData:sH,errorBars:qK,eventSettings:WV,graphicalItems:Iq,layout:r7,legend:N7,options:rH,polarAxis:tq,polarOptions:LV,referenceElements:fK,renderedTicks:OK,rootProps:IV,tooltip:dW,zIndex:VW}),HV=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return zB({reducer:Gbe,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([kM.middleware,_M.middleware,zx.middleware,TM.middleware,PM.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(AO({type:"raf"}))},devTools:Zi.devToolsEnabled&&{serialize:{replacer:OV},name:"recharts-".concat(r)}})};function xC(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Ar(),a=(0,KV.useRef)(null);if(o)return r;a.current==null&&(a.current=HV(t,n));var i=cv;return qV.createElement($7,{context:i,store:a.current},r)}var bC=Z(J());function Ybe(e){var t=e.layout,r=e.margin,n=Dt(),o=Ar();return(0,bC.useEffect)(()=>{o||(n(RB(t)),n(TO(r)))},[n,o,t,r]),null}var wC=(0,bC.memo)(Ybe,Ga);var VV=Z(J());function SC(e){var t=Dt();return(0,VV.useEffect)(()=>{t(DV(e))},[t,e]),null}var kC=Z(J());var Xbe=e=>{var t=Dt();return(0,kC.useEffect)(()=>{t(UV(e))},[t,e]),null},_C=(0,kC.memo)(Xbe,Ga);var Nu=Z(J()),RV=Z(J());var Wp=Z(J()),IM=Z(J());var Up=Z(J()),CC=Z(J());function GV(e){var t=e.zIndex,r=e.isPanorama,n=(0,CC.useRef)(null),o=Dt();return(0,CC.useLayoutEffect)(()=>(n.current&&o(qW({zIndex:t,element:n.current,isPanorama:r})),()=>{o(KW({zIndex:t,isPanorama:r}))}),[o,t,r]),Up.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function MM(e){var t=e.children,r=e.isPanorama,n=$e(BW);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Up.createElement(Up.Fragment,null,o.map(i=>Up.createElement(GV,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Up.createElement(GV,{key:i,zIndex:i,isPanorama:r})))}var Zbe=["children"];function Jbe(e,t){if(e==null)return{};var r,n,o=Qbe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=Qm(),n=Rm(),o=PS();if(!qa(r)||!qa(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),Wp.createElement(rv,AC({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:Rbe,ref:t}),a)}),t1e=e=>{var t=e.children,r=$e(Rd);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Wp.createElement(rv,{width:n,height:o,x:i,y:a},t)},DM=(0,IM.forwardRef)((e,t)=>{var r=e.children,n=Jbe(e,Zbe),o=Ar();return o?Wp.createElement(t1e,null,Wp.createElement(MM,{isPanorama:!0},r)):Wp.createElement(e1e,AC({ref:t},n),Wp.createElement(MM,{isPanorama:!1},r))});var Nn=Z(J()),fr=Z(J());var EC=Z(J());function r1e(e,t){return i1e(e)||a1e(e,t)||o1e(e,t)||n1e()}function n1e(){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 o1e(e,t){if(e){if(typeof e=="string")return YV(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)?YV(e,t):void 0}}function YV(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;Ot(s)&&s!==a&&e(t7(s))}},[n,e,a]),o}function ZV(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 s1e(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(uH(),null);function TC(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var h1e=(0,fr.forwardRef)((e,t)=>{var r,n,o=(0,fr.useRef)(null),a=(0,fr.useState)({containerWidth:TC((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:TC((n=e.style)===null||n===void 0?void 0:n.height)}),i=NC(a,2),s=i[0],l=i[1],u=(0,fr.useCallback)((d,p)=>{l(f=>{var m=Math.round(d),y=Math.round(p);return f.containerWidth===m&&f.containerHeight===y?f:{containerWidth:m,containerHeight:y}})},[]),c=(0,fr.useCallback)(d=>{if(typeof t=="function"&&t(d),o.current!=null&&(o.current.disconnect(),o.current=null),d!=null&&typeof ResizeObserver<"u"){var p=d.getBoundingClientRect(),f=p.width,m=p.height;u(f,m);var y=h=>{var g=h[0];if(g!=null){var v=g.contentRect,b=v.width,S=v.height;u(b,S)}},x=new ResizeObserver(y);x.observe(d),o.current=x}},[t,u]);return(0,fr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),Nn.createElement(Nn.Fragment,null,Nn.createElement(rp,{width:s.containerWidth,height:s.containerHeight}),Nn.createElement("div",Qc({ref:c},e)))}),y1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,fr.useState)({containerWidth:TC(r),containerHeight:TC(n)}),a=NC(o,2),i=a[0],s=a[1],l=(0,fr.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,fr.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 Nn.createElement(Nn.Fragment,null,Nn.createElement(rp,{width:i.containerWidth,height:i.containerHeight}),Nn.createElement("div",Qc({ref:u},e)))}),v1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return Nn.createElement(Nn.Fragment,null,Nn.createElement(rp,{width:r,height:n}),Nn.createElement("div",Qc({ref:t},e)))}),x1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?Nn.createElement(y1e,Qc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?Nn.createElement(v1e,Qc({},e,{width:r,height:n,ref:t})):Nn.createElement(Nn.Fragment,null,Nn.createElement(rp,{width:r,height:n}),Nn.createElement("div",Qc({ref:t},e)))});function b1e(e){return e?h1e:x1e}var QV=(0,fr.forwardRef)((e,t)=>{var r=e.children,n=e.className,o=e.height,a=e.onClick,i=e.onContextMenu,s=e.onDoubleClick,l=e.onMouseDown,u=e.onMouseEnter,c=e.onMouseLeave,d=e.onMouseMove,p=e.onMouseUp,f=e.onTouchEnd,m=e.onTouchMove,y=e.onTouchStart,x=e.style,h=e.width,g=e.responsive,v=e.dispatchTouchEvents,b=v===void 0?!0:v,S=(0,fr.useRef)(null),w=Dt(),_=(0,fr.useState)(null),k=NC(_,2),A=k[0],C=k[1],E=(0,fr.useState)(null),I=NC(E,2),Q=I[0],$=I[1],F=XV(),N=bv(),O=N?.width>0?N.width:h,j=N?.height>0?N.height:o,T=(0,fr.useCallback)(U=>{F(U),typeof t=="function"&&t(U),C(U),$(U),U!=null&&(S.current=U)},[F,t,C,$]),D=(0,fr.useCallback)(U=>{w(SM(U)),w(Ei({handler:a,reactEvent:U}))},[w,a]),M=(0,fr.useCallback)(U=>{w(gC(U)),w(Ei({handler:u,reactEvent:U}))},[w,u]),K=(0,fr.useCallback)(U=>{w(n_()),w(Ei({handler:c,reactEvent:U}))},[w,c]),V=(0,fr.useCallback)(U=>{w(gC(U)),w(Ei({handler:d,reactEvent:U}))},[w,d]),L=(0,fr.useCallback)(()=>{w(AM())},[w]),G=(0,fr.useCallback)(()=>{w(EM())},[w]),W=(0,fr.useCallback)(U=>{w(CM(U.key))},[w]),ie=(0,fr.useCallback)(U=>{w(Ei({handler:i,reactEvent:U}))},[w,i]),Ie=(0,fr.useCallback)(U=>{w(Ei({handler:s,reactEvent:U}))},[w,s]),ge=(0,fr.useCallback)(U=>{w(Ei({handler:l,reactEvent:U}))},[w,l]),ce=(0,fr.useCallback)(U=>{w(Ei({handler:p,reactEvent:U}))},[w,p]),R=(0,fr.useCallback)(U=>{w(Ei({handler:y,reactEvent:U}))},[w,y]),ee=(0,fr.useCallback)(U=>{b&&w(OM(U)),w(Ei({handler:m,reactEvent:U}))},[w,b,m]),z=(0,fr.useCallback)(U=>{w(Ei({handler:f,reactEvent:U}))},[w,f]),te=b1e(g);return Nn.createElement($5.Provider,{value:A},Nn.createElement(kT.Provider,{value:Q},Nn.createElement(te,{width:O??x?.width,height:j??x?.height,className:bt("recharts-wrapper",n),style:s1e({position:"relative",cursor:"default",width:O,height:j},x),onClick:D,onContextMenu:ie,onDoubleClick:Ie,onFocus:L,onBlur:G,onKeyDown:W,onMouseDown:ge,onMouseEnter:M,onMouseLeave:K,onMouseMove:V,onMouseUp:ce,onTouchEnd:z,onTouchMove:ee,onTouchStart:R,ref:T},Nn.createElement(g1e,null),r)))});var w1e=["width","height","responsive","children","className","style","compact","title","desc"];function S1e(e,t){if(e==null)return{};var r,n,o=k1e(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=S1e(e,w1e),p=mn(d);return l?Nu.createElement(Nu.Fragment,null,Nu.createElement(rp,{width:r,height:n}),Nu.createElement(DM,{otherAttributes:p,title:u,desc:c},a)):Nu.createElement(QV,{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},Nu.createElement(DM,{otherAttributes:p,title:u,desc:c,ref:t},Nu.createElement(gK,null,a)))});function jM(){return jM=Object.assign?Object.assign.bind():function(e){for(var t=1;trG.createElement(Jg,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:O1e,tooltipPayloadSearcher:Bc,categoricalChartProps:e,ref:t}));var oG=Z(J()),aG=Z(J());var P1e=["axis","item"],LM=(0,aG.forwardRef)((e,t)=>oG.createElement(Jg,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:P1e,tooltipPayloadSearcher:Bc,categoricalChartProps:e,ref:t}));var fG=Z(J()),mG=Z(J());var uG=Z(J()),Rc=Z(J());var iG=Z(J());function sG(e){var t=Dt();return(0,iG.useEffect)(()=>{t($V(e))},[t,e]),null}var M1e=["layout"];function zM(){return zM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=nr(e,q1e);return fG.createElement(cG,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:H1e,tooltipPayloadSearcher:Bc,categoricalChartProps:r,ref:t})});var gG=Z(J()),hG=Z(J());var K1e=["axis"],ed=(0,hG.forwardRef)((e,t)=>gG.createElement(Jg,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:K1e,tooltipPayloadSearcher:Bc,categoricalChartProps:e,ref:t}));var us=Z(J()),Qg=[{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}],yG="30m",vG="activeagents.timeWindow",xG=(0,us.createContext)(null),UM=e=>Qg.find(t=>t.id===e);function bG({children:e}){let[t,r]=(0,us.useState)(()=>{try{let a=localStorage.getItem(vG);if(a&&UM(a))return a}catch{}return yG}),n=(0,us.useCallback)(a=>{if(UM(a)){r(a);try{localStorage.setItem(vG,a)}catch{}}},[]),o=(0,us.useMemo)(()=>{let a=Qg.findIndex(s=>s.id===t),i=Qg[a]||UM(yG);return{timeWindow:i,windowIndex:a,windows:Qg,setWindow:n,zoomTo:s=>{let l=Qg[Math.min(Math.max(s,0),Qg.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return us.default.createElement(xG.Provider,{value:o},e)}function vl(){let e=(0,us.useContext)(xG);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Rg=Z(J());function xl({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=vl(),{darkMode:i}=ut(),s=Hi(i),l={color:s.textSecondary};return Rg.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Rg.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"),Rg.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=>Rg.default.createElement("option",{key:u.id,value:u.id},u.label))),Rg.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 $n=Z(J());var Qr=Z(J());var Wx=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},td=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},PC=e=>{let t=e?.spans||[],r=null;for(let m of t){let y=m.tokens||{},x=(y.input||0)+(y.output||0);x>0&&(!r||x>r.total)&&(r={input:y.input||0,output:y.output||0,thinking:y.thinking||0,cached:y.cached||0,total:x})}if(!r)return null;let n=m=>{for(let y of t){let x=(y.attributes||{})[m];if(x)return x}return null},o=(m,...y)=>{let x=Number(n(m));if(Number.isFinite(x)&&x>0)return x;for(let h of y){let g=n(h);if(g)return td(g)}return 0},a=o("prompt.input.instructions.tokens","prompt.input.instructions","llm.instructions"),i=o("prompt.input.tools.tokens","prompt.input.tools","llm.tools"),s=o("prompt.input.mcp_tools.tokens","prompt.input.mcp_tools"),l=o("prompt.input.messages.tokens","prompt.input.messages","llm.messages"),u=0;for(let m of t){let y=m.attributes||{},x=y["tool.output.result"]||y["tool.result"],h=y["tool.input.args"]||y["tool.arguments"];x&&(u+=td(x)),h&&(u+=td(h))}u=Math.min(u,r.input);let c=["messages","toolResults","instructions","toolSchemas","mcpSchemas"],d={messages:l,toolResults:u,instructions:a,toolSchemas:i,mcpSchemas:s},p=c.reduce((m,y)=>m+d[y],0),f;if(p>0&&r.input>0){let m=r.input/p;f={};for(let x of c)f[x]=Math.round(d[x]*m);let y=r.input-c.reduce((x,h)=>x+f[h],0);if(y!==0){let x=c.reduce((h,g)=>f[g]>f[h]?g:h);f[x]=Math.max(f[x]+y,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:Wx(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 V1e={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},eh=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 rd({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,Qr.useState)(i),p=r.filter(_=>_.tokens>0),f=e??p.reduce((_,k)=>_+k.tokens,0),m=t>0?f/t:0,y=m>=.9?"#dc2626":m>=.75?"#eab308":null,x=u?"rgba(255,255,255,0.4)":"#9ca3af",h=u?"rgba(255,255,255,0.6)":"#6b7280",g=u?"rgba(255,255,255,0.75)":"#4b5563",v=u?"rgba(255,255,255,0.1)":"#f3f4f6",b=`${eh(f)} / ${eh(t)} (${Math.round(m*100)}%)`,S=_=>_.key==="messages"&&y?y:_.color||V1e[_.key]||"#2563eb",w=_=>Qr.default.createElement("div",{style:{display:"flex",height:_,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},p.map(k=>Qr.default.createElement("div",{key:k.key,title:`${k.label} \xB7 ${eh(k.tokens)}`,style:{width:`${Math.min(k.tokens/t*100,100)}%`,background:S(k)}})));return a?Qr.default.createElement("span",{title:`${s}: ${b}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},w("6px"),Qr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||x,whiteSpace:"nowrap"}},Math.round(m*100),"%")):Qr.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${y?y+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},Qr.default.createElement("div",{onClick:_=>{_.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},Qr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&Qr.default.createElement("span",{style:{color:x,fontWeight:400}}," \xB7 estimated")),Qr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},Qr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},b),Qr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),Qr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},w("9px")),m>=.9&&Qr.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&&Qr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(_=>Qr.default.createElement("div",{key:_.key,style:{display:"flex",alignItems:"center",gap:"8px"}},Qr.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:_.key==="__free"?v:S(_),border:_.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),Qr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},_.label),Qr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},eh(_.tokens)),Qr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:x,width:"46px",textAlign:"right"}},t>0?`${(_.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&Qr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x}},n>0&&Qr.default.createElement("span",null,Qr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",eh(n)),o>0&&Qr.default.createElement("span",null,Qr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",eh(o)))))}var wt=Z(J());var Le=Z(J());var Yn=Z(J());var ke=Z(J());var wG=["ui","json-ui","genui"],qp="render_ui",Fs=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),WM=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Kp(e){let t=typeof e=="string"?WM(e):e;if(Array.isArray(t))return t.every(Fs)?t:null;if(Fs(t)){if(Array.isArray(t.blocks))return t.blocks.every(Fs)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Fs)?t.ui:null}return null}function HM(e,t){let r=String(e||"").trim().toLowerCase();if(wG.includes(r))return Kp(t);if(r==="json"){let n=WM(t);return Fs(n)&&Array.isArray(n.ui)?Kp(n):null}return null}function qM(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=WM(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Fs(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Kp(o);return a?{blocks:a}:{object:o}}var G1e=e=>Fs(e)?e.function?.name||e.name:void 0,Y1e=e=>Fs(e)?e.function?.arguments??e.arguments??e.input:void 0;function th(e,{callId:t}={}){if(!Fs(e))return null;if(e.tool_name===qp&&e.tool_arguments!=null){let o=Kp(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Fs(a)&&a.id!=null);r.forEach(a=>{if(G1e(a)!==qp||t!=null&&o&&a.id!==t)return;let i=Kp(Y1e(a));i&&n.push(...i)})}else if(Fs(r)&&e.tool_name===qp){let o=Kp(r);o&&n.push(...o)}return n.length>0?n:null}function MC(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function IC(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 SG(e){try{return new URL(String(e).trim()).host}catch{return""}}var NG=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],X1e=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],Hx=NG.length,kG=220,rh=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),Rt=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),TG=e=>{if(typeof e!="number"||!Number.isFinite(e))return Rt(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()},YM=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,_G={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"]}},Z1e={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},KM=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),XM=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"}),nh=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Tu({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${Rt(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),ke.default.createElement("pre",{style:{...XM(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function J1e({block:e,colors:t,darkMode:r,onAction:n}){let o=MC(e.image_url)&&IC(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:Rt(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:nh(t)},Rt(e.title)),e.body!=null&&ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Us,{text:Rt(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}`}},Rt(e.footer))))}function OG({block:e,colors:t,darkMode:r}){let n=e.delta!=null?Rt(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=YM(Z1e,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?TG(e.value):Rt(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}},Rt(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 Q1e({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(rh):[];return n.length===0?ke.default.createElement(Tu,{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(OG,{key:a,block:o,colors:t,darkMode:r})))}var GM=(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"}),R1e=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:Pt.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function PG({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:R1e(r)},Rt(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:GM(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():Rt(l))}))))))}function ewe({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(Tu,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:rh(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:nh(t)},Rt(e.title)),ke.default.createElement(PG,{columns:n,rows:a,colors:t}))}var twe=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},rwe=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function nwe({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(rh):[];if(o.length===0)return ke.default.createElement(Tu,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:twe(o),i=Array.isArray(e.series)?e.series.filter(x=>typeof x=="string"):[],s=(i.length>0?i:rwe(o,a)).slice(0,Hx);if(!a||s.length===0)return ke.default.createElement(Tu,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?X1e:NG,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ke.default.createElement(Fc,{contentStyle:{background:u,border:`1px solid ${t.cardBorder}`,borderRadius:"8px",fontSize:"12px"},labelStyle:{color:t.textPrimary,fontWeight:600,marginBottom:"4px"},itemStyle:{color:t.textCell},formatter:x=>typeof x=="number"?x.toLocaleString():Rt(x)}),p=s.length>1||n==="pie"?ke.default.createElement(NS,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=ke.default.createElement(ke.default.Fragment,null,ke.default.createElement(wu,{stroke:t.cardBorder,vertical:!1}),ke.default.createElement(Cu,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ke.default.createElement(Eu,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:TG,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=ke.default.createElement($M,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(sC,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:u,fill:l[h]},activeDot:{r:5,strokeWidth:2,stroke:u},isAnimationActive:!1})));else if(n==="area")y=ke.default.createElement(ed,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(ku,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,fill:l[h],fillOpacity:.12,dot:{r:3,strokeWidth:2,stroke:u,fill:l[h]},isAnimationActive:!1})));else if(n==="pie"){let x=s[0],h=[...o].sort((b,S)=>(Number(S[x])||0)-(Number(b[x])||0)),g=h.slice(0,Hx),v=h.slice(Hx);v.length>0&&(g[Hx-1]={[a]:"Other",[x]:v.reduce((b,S)=>b+(Number(S[x])||0),Number(g[Hx-1][x])||0)}),y=ke.default.createElement(FM,{margin:m},d,p,ke.default.createElement(G_,{data:g,dataKey:x,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},g.map((b,S)=>ke.default.createElement(yu,{key:S,fill:l[S]}))))}else y=ke.default.createElement(LM,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((x,h)=>ke.default.createElement(fC,{key:x,dataKey:x,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:nh(t)},Rt(e.title)),ke.default.createElement("div",{style:{width:"100%",height:kG,minWidth:0}},ke.default.createElement(kc,{width:"100%",height:kG},y)))}function owe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ke.default.createElement(Tu,{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:nh(t)},Rt(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(Us,{text:i,darkMode:r,onUiAction:n}):Rt(i)))))}function awe({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}},Rt(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:Jo,borderRadius:"999px",transition:"width 0.3s ease"}})))}var iwe=["text","textarea","number","select","checkbox"],VM=e=>Rt(e.name||e.label),CG=e=>Rt(e.label||e.name),AG=e=>iwe.includes(e.type)?e.type:"text";function swe({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>rh(p)&&(p.name||p.label)),[a,i]=(0,ke.useState)(()=>Object.fromEntries(o.map(p=>[VM(p),AG(p)==="checkbox"?!1:""]))),[s,l]=(0,ke.useState)(!1);if(o.length===0)return ke.default.createElement(Tu,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?Rt(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 y=a[VM(m)];return`${CG(m)}: ${typeof y=="boolean"?y?"yes":"no":Rt(y)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?Rt(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:nh(t)},Rt(e.title)),o.map(p=>{let f=VM(p),m=AG(p),y=CG(p),x=`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:Jo}}),y):ke.default.createElement("div",{key:f},ke.default.createElement("label",{htmlFor:x,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,p.required?" *":""),m==="textarea"?ke.default.createElement("textarea",{id:x,name:f,value:a[f],onChange:h=>c(f,h.target.value),placeholder:p.placeholder!=null?Rt(p.placeholder):void 0,required:!!p.required,rows:3,className:"aa-field",style:{...KM(t),resize:"vertical"}}):m==="select"?ke.default.createElement("select",{id:x,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:KM(t)},ke.default.createElement("option",{value:""},p.placeholder!=null?Rt(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,g)=>ke.default.createElement("option",{key:g,value:Rt(h)},Rt(h)))):ke.default.createElement("input",{id:x,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?Rt(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:KM(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:Jo,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 lwe({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(Tu,{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}},Rt(e.prompt)),ke.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=Rt(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?Jo:t.inputBorder}`,background:c?Jo:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function uwe({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=SG(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 cwe({block:e,colors:t,darkMode:r}){if(!MC(e.url))return ke.default.createElement(Tu,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?Rt(e.alt):"";return ke.default.createElement("figure",{style:{margin:0}},IC(n)?ke.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ke.default.createElement(uwe,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&ke.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},Rt(e.caption)))}function dwe({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(YM(_G,e.tone)||_G.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}},Rt(e.title)),ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Us,{text:Rt(e.body),darkMode:r,onUiAction:n})))}function pwe({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}},Rt(e.language)),ke.default.createElement("pre",{style:XM(r)},Rt(e.code)))}function EG({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(Us,{text:Rt(o),darkMode:r,onUiAction:n}))}var fwe=3;function DC({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,Rt(e));if(n>=fwe)return ke.default.createElement("pre",{style:{...XM(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(rh)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ke.default.createElement(PG,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ke.default.createElement(DC,{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(Rt).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(DC,{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:{...GM(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ke.default.createElement("td",{style:GM(t,!1)},ke.default.createElement(DC,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function mwe({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:nh(t)},Rt(e.title)),ke.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ke.default.createElement(DC,{value:n,colors:t,darkMode:r,depth:0})))}var gwe={card:J1e,stat:OG,stats:Q1e,table:ewe,chart:nwe,list:owe,progress:awe,form:swe,choices:lwe,image:cwe,callout:dwe,code:pwe,object:mwe,text:EG,markdown:EG};function bl({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(rh):[];if(n.length===0)return null;let o=Hi(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=YM(gwe,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(Tu,{block:a,colors:o,darkMode:r}))}))}var hwe=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,qx=(e,t)=>e.split(hwe).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return Yn.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return Yn.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return Yn.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?Yn.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),MG=e=>/^\s*\|.*\|\s*$/.test(e),ywe=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),IG=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function Us({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` -`),a=0,i=0;for(;aYn.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},qx(p,`th${d}-${f}`))))),Yn.default.createElement("tbody",null,c.map((p,f)=>Yn.default.createElement("tr",{key:f},u.map((m,y)=>Yn.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},qx(p[y]??"",`td${d}-${f}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aYn.default.createElement("li",{key:d},qx(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(Yn.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(Yn.default.createElement("div",{key:i++},qx(s,`p${i}`))),a+=1}return Yn.default.createElement("div",{className:"break-words"},n)}var Qa=Z(J()),vwe=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"},xwe=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function ZM({tool:e,darkMode:t}){let r=xwe(e);return Qa.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Qa.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Qa.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"}},Qa.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Qa.default.createElement("span",null,"source: ",vwe(e))))}function JM({tools:e,darkMode:t}){let[r,n]=(0,Qa.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 Qa.default.createElement("div",{style:{marginTop:"8px"}},Qa.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Qa.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Qa.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&&Qa.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"}`}},Qa.default.createElement(ZM,{tool:a,darkMode:t})))}var bwe=["application/json","application/xml","application/x-yaml","application/csv"],wwe=/\.(csv|md|txt|json|ya?ml)$/i;function DG(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/")||bwe.includes(t)||wwe.test(r)?"text":"file"}function jG(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 $G(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 LG=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,Kx=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}},Swe=["text","output","body","content"],zG=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},kwe=e=>{let t=zG(e.tool_result)??zG(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=Swe.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}},_we=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||Kx(e.content)),UG=280,Cwe=["tool","system","developer"],Vx=(e,t=UG)=>e.replace(/\s+/g," ").trim().slice(0,t),QM=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)}},WG=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:QM(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:QM(t)}]:[]},HG=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),Awe=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||HG(o.content))return;let i=WG(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))},BG=e=>Cwe.includes(e.role)&&typeof e.content=="string"&&Vx(e.content).length>=UG,Ewe=({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 Le.default.createElement("span",{title:`${Math.round(e.span_duration_ms)}ms \xB7 starts at ${Math.round(e.span_start_ms||0)}ms of ${Math.round(r)}ms`,style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px",display:"inline-block"}},Le.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},jC=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}),jn=(e,t)=>{switch(e){case"user":return t?{background:"rgba(59,130,246,0.15)",color:"#93c5fd",label:"User"}:{background:"#eff6ff",color:"#1d4ed8",label:"User"};case"assistant":return t?{background:"rgba(239,68,68,0.12)",color:"#fca5a5",label:"Assistant"}:{background:"#fef2f2",color:"#b91c1c",label:"Assistant"};case"tool":return t?{background:"rgba(245,158,11,0.12)",color:"#fcd34d",label:"Tool"}:{background:"#fffbeb",color:"#b45309",label:"Tool"};case"system":return t?{background:"rgba(139,92,246,0.15)",color:"#c4b5fd",label:"System"}:{background:"#f5f3ff",color:"#6d28d9",label:"System"};case"developer":return t?{background:"rgba(20,184,166,0.15)",color:"#5eead4",label:"Dev"}:{background:"#f0fdfa",color:"#0f766e",label:"Dev"};default:return t?{background:"rgba(255,255,255,0.08)",color:"rgba(255,255,255,0.7)",label:e}:{background:"#f3f4f6",color:"#374151",label:e}}},FG={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function $C({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=Hi(t);return Le.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/"))&&$G(s.url),d=jG(s.byte_size);return Le.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?Le.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):Le.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},FG[s.kind]||FG.file),Le.default.createElement("span",{className:"min-w-0"},Le.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&Le.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&Le.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 qG=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},Nwe=(e,t)=>{let r=th(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?qG(o).has(e.tool_call_id):th(o)));return n?th(n,{callId:e.tool_call_id}):null},Twe=(e,t)=>{let r=qG(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===qp&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function cs({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,Le.useState)({}),[u,c]=(0,Le.useState)(null),[d,p]=(0,Le.useState)(""),[f,m]=(0,Le.useState)(!1),[y,x]=(0,Le.useState)(null),h=A=>l(C=>({...C,[A]:!C[A]})),g={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},v=A=>i?`${i}-${A}`:void 0,b=A=>A.stopPropagation(),S=A=>{c(A.id),p(A.content||""),x(null)},w=()=>{c(null),x(null)},_=async A=>{if(!f){m(!0),x(null);try{await o(A,d),c(null)}catch(C){x(C.message||"Could not save the message")}finally{m(!1)}}},k=Awe(e);return Le.default.createElement("div",{className:"space-y-3"},k.map(A=>{let C=jn(A.role,t),E=!!s[A.id],I=u===A.id,Q=!!((o||a)&&["user","assistant"].includes(A.role)),$=A.role==="tool"&&A.tool_name===qp?Nwe(A,k):null,F=A.role==="assistant"&&!I?qM(A.content):null,N=A.role==="assistant"&&!Twe(A,k)?th(A):null,O=BG(A)&&!E,j=_we(A)||BG(A),T=Kx(A.tool_arguments),D=Kx(A.tool_result)||Kx(A.content),M=A.tool_calls&&(!Array.isArray(A.tool_calls)||A.tool_calls.length>0)?Kx(A.tool_calls):null,K=A.role==="tool"?kwe(A):null,V=A.tool_name?(r||[]).find(R=>R&&R.name===A.tool_name):null,L=A.role==="tool"?QM(A.tool_arguments):null,G=A.role==="tool"&&!!L,W=jn("assistant",t),ie=jn("tool",t),Ie=A.role==="tool"&&!A.tool_arguments&&k.some(R=>R&&R.role==="assistant"&&(A.tool_call_id&&R.tool_call_id===A.tool_call_id||Array.isArray(R.tool_calls)&&R.tool_calls.some(ee=>ee.id&&ee.id===A.tool_call_id))),ge=A.role==="assistant"&&!HG(A.content)?WG(A):[],ce=jC(t);return Le.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},Le.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${j?"cursor-pointer":""}`,onClick:j?()=>h(A.id):void 0,style:E?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},Le.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(G?[W,ie]:[C]).map(R=>Le.default.createElement("span",{key:R.label,className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:R.background,color:R.color,textAlign:"center"}},R.label))),Le.default.createElement("div",{className:"min-w-0 flex-1"},Le.default.createElement("div",{className:"text-sm break-words",style:{color:g.textPrimary}},I?Le.default.createElement("div",{className:"space-y-2",onClick:b},Le.default.createElement("textarea",{"data-testid":v("editor"),value:d,onChange:R=>p(R.target.value),onKeyDown:R=>{R.key==="Escape"&&w(),R.key==="Enter"&&(R.metaKey||R.ctrlKey)&&_(A)},rows:Math.min(12,Math.max(3,d.split(` -`).length)),autoFocus:!0,className:"aa-field w-full",style:{padding:"8px 10px",borderRadius:"8px",border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,background:t?"rgba(255,255,255,0.06)":"#ffffff",color:g.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),Le.default.createElement("div",{className:"flex items-center gap-2 text-xs"},Le.default.createElement("button",{type:"button","data-testid":v("save"),onClick:()=>_(A),disabled:f,style:{padding:"4px 10px",borderRadius:"6px",background:"#ef4444",color:"#ffffff",border:"none",cursor:f?"wait":"pointer",fontWeight:500}},f?"Saving\u2026":"Save"),Le.default.createElement("button",{type:"button","data-testid":v("cancel"),onClick:w,disabled:f,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:g.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),y&&Le.default.createElement("span",{style:{color:"#dc2626"}},y))):$?Le.default.createElement("div",null,Le.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:ie.color}},"\u2699 ",A.tool_name," \xB7 ",$.length," block",$.length===1?"":"s"),Le.default.createElement(bl,{blocks:$,onAction:n,darkMode:t})):A.role==="tool"?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},L&&!Ie&&Le.default.createElement("span",{className:"font-mono text-xs break-words"},A.tool_name&&Le.default.createElement("span",{style:{color:ie.color}},"\u2699 ",A.tool_name," "),Le.default.createElement("span",{style:{color:G?W.color:g.textMuted}},"in:")," ",Vx(L,180),L.length>180?"\u2026":""),K?Le.default.createElement("span",null,A.tool_name&&!(L&&!Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(L||Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:G?ie.color:g.textMuted}},"out:"),K.meta&&Le.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:g.textMuted}},K.meta),"\u201C",K.body.replace(/\s+/g," ").trim().slice(0,180),K.body.length>180?"\u2026":"","\u201D"):A.content?Le.default.createElement("span",null,A.tool_name&&!(L&&!Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(L||Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:G?ie.color:g.textMuted}},"out:"),"\u201C",Vx(A.content,180),A.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):Le.default.createElement("span",{className:"whitespace-pre-wrap"},A.tool_name?`\u2192 ${A.tool_name}(...)`:"\u2014")):O?Le.default.createElement("span",{style:{color:g.textSecondary}},Vx(A.content),"\u2026"):ge.length>0?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},ge.map((R,ee)=>Le.default.createElement("span",{key:ee,className:"font-mono text-xs break-words"},R.name&&Le.default.createElement("span",{style:{color:g.textMuted}},R.name," "),Le.default.createElement("span",{style:{color:g.textMuted}},"in:")," ",R.args?Le.default.createElement(Le.default.Fragment,null,Vx(R.args,180),R.args.length>180?"\u2026":""):"\u2014"))):F&&F.blocks?Le.default.createElement(bl,{blocks:F.blocks,onAction:n,darkMode:t}):F&&F.object?Le.default.createElement(bl,{blocks:[{type:"object",value:F.object}],darkMode:t}):Le.default.createElement(Us,{text:A.content||"\u2014",darkMode:t,onUiAction:n}),N&&!I&&Le.default.createElement("div",{className:"mt-2"},Le.default.createElement(bl,{blocks:N,onAction:n,darkMode:t})),A.role==="user"&&Le.default.createElement($C,{attachments:A.attachments,darkMode:t,testId:v("attachment")})),Le.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:g.textMuted}},Q&&!I&&Le.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:b},o&&Le.default.createElement("button",{type:"button","data-testid":v("edit"),onClick:()=>S(A),className:"hover:underline",style:{color:g.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&Le.default.createElement("button",{type:"button","data-testid":v("delete"),onClick:()=>a(A),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),A.created_at&&Le.default.createElement("span",null,new Date(A.created_at).toLocaleTimeString()),A.tool_name&&A.role!=="tool"&&Le.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&&Le.default.createElement("span",null,LG(A.duration_ms)),(A.tool_calls||[]).length>0&&Le.default.createElement("span",null,A.tool_calls.length," tool call",A.tool_calls.length>1?"s":""),A.content_checksum&&Le.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",A.content_checksum.slice(0,8)))),Le.default.createElement(Ewe,{message:A,darkMode:t}),j&&Le.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${E?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:g.textMuted}},Le.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),E&&Le.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:C.color+"55"}},Le.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:g.textSecondary}},A.created_at&&Le.default.createElement("span",null,new Date(A.created_at).toLocaleString()),A.tool_call_id&&Le.default.createElement("span",null,"call: ",A.tool_call_id),A.duration_ms!=null&&Le.default.createElement("span",null,"took ",LG(A.duration_ms)),A.content_checksum&&Le.default.createElement("span",null,"\u{1F512} ",A.content_checksum)),T&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:G?W.color:g.textMuted}},"Arguments",G?" \xB7 from the agent":""),Le.default.createElement("pre",{style:ce},T)),K?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:G?ie.color:g.textMuted}},"Result",G?" \xB7 from the tool":""),Object.keys(K.rest).length>0&&Le.default.createElement("pre",{style:ce},JSON.stringify(K.rest,null,2)),Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:g.textMuted}},K.field," \xB7 ",K.body.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...ce,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},K.body.slice(0,8e3),K.body.length>8e3?` -\u2026`:"")):D?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},A.role==="tool"?"Result":"Content (parsed)"),Le.default.createElement("pre",{style:ce},D)):A.role==="tool"&&A.content?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:G?ie.color:g.textMuted}},"Result",G?" \xB7 from the tool":""," \xB7 ",A.content.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...ce,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},A.content.slice(0,8e3),A.content.length>8e3?` -\u2026`:"")):null,M&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Requested tool calls"),Le.default.createElement("pre",{style:ce},M)),V&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Tool definition"),Le.default.createElement(ZM,{tool:V,darkMode:t}))))}))}var or=Z(J());var an=Z(J());var Xn=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"}),KG=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Vp({open:e,darkMode:t,size:r=14,style:n}){return an.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:Xn(t).textMuted,...n},"aria-hidden":"true"},an.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function LC({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=Xn(e);return an.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var Ea={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function nd({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=Xn(t),i=(e||[]).filter(Boolean);return i.length===0?null:an.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{display:"grid",gridTemplateColumns:i.map(s=>s.width?`${s.width}px`:"minmax(0, auto)").join(" "),alignItems:"center",columnGap:`${r}px`,color:a.textSecondary,...o}},i.map(s=>{let l=s.content!=null&&s.content!==!1&&s.content!=="";return an.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:an.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var VG=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:Xn(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),Owe=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 oh({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=ah(),c=Xn(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?an.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:Pt.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((p,f)=>{let m=`${p.label}-${f}`,y=l(m),x=p.max||i,h=!p.text,g=String(p.text??"").replace(/\s+/g," ").trim(),v=Owe(p.text),b=!h&&(v.json||g.length>60||g!==String(p.text).trim());return an.default.createElement("div",{key:m},an.default.createElement("div",{onClick:b?S=>{S.stopPropagation(),u(m)}:void 0,title:b?y?"Collapse":"Expand":void 0,style:{cursor:b?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},an.default.createElement("span",{style:{color:p.color||c.textMuted}},b?y?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!y&&(h?an.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):KG(g,x))),y&&an.default.createElement("pre",{onClick:S=>S.stopPropagation(),style:VG(t,{wrap:!v.json})},v.text))})):null}function Gx({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=Xn(n);return an.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&an.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>an.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 GG({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=Xn(o);return an.default.createElement("div",null,an.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},an.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&an.default.createElement("span",{style:{color:s.textMuted}},KG(t,i))),r&&an.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:VG(o,{wrap:a})},t))}function ah(e={}){let[t,r]=(0,an.useState)(e),n=(0,an.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,an.useCallback)(a=>!!t[a],[t]),n,r]}var RM={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},XG=[{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"}],Zn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,eI=e=>{switch(e){case"root":return Bo.spans.root;case"prompt":return Bo.spans.prompt;case"generate":return Bo.spans.generate;case"llm":return Bo.spans.llm;case"thinking":return Bo.spans.thinking;case"tool":return Bo.spans.tool;case"response":return Bo.spans.response;default:return"-"}},Pwe=(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))},Mwe=(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))}},Iwe=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},Dwe=(e,t)=>{if(!t.duration_ms)return Zn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Zn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},jwe=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},YG=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,tI=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}},$we=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}},Lwe=(e,t)=>{let r=$we(e),n=tI(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},zwe=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}},rI=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 Bwe({span:e,darkMode:t,tools:r=[]}){let[n,o]=ah(),a=Xn(t),{messages:i,rest:s}=zwe(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)=>YG(f[0])-YG(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 or.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:Pt.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},or.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},or.default.createElement("span",null,"duration: ",Zn(e.duration)),or.default.createElement("span",null,"status: ",e.status||"OK"),Iwe(e)>0&&or.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),or.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&or.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},or.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},or.default.createElement("span",{style:{color:jn("tool",t).color}},"\u2699 ",d.tool_name),p&&or.default.createElement(or.default.Fragment,null," ",or.default.createElement("span",{style:{color:jn("assistant",t).color}},"in:")," ",or.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&or.default.createElement("div",{style:{fontSize:"12px"}},or.default.createElement("span",{style:{color:jn("tool",t).color}},"out:")," ",or.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&&or.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},or.default.createElement(cs,{messages:i,darkMode:t,tools:l||r})),l&&or.default.createElement(JM,{tools:l,darkMode:t}),c.length>0&&or.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let y=f.match(/args|result|input|output/)?jwe(m):null,x=!y&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||x;if(!h)return or.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},or.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${f}`;return or.default.createElement(GG,{key:f,label:f,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function Fwe({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=Xn(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:Lwe(e,t);return or.default.createElement(or.default.Fragment,null,or.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},or.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},or.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},eI(e.type)),or.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),or.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:Pt.mono,color:l.textMuted}},Dwe(e,t)),u&&or.default.createElement(Vp,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),or.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},or.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":RM[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}%`:`${Pwe(e.duration,o)}%`}})),c&&or.default.createElement(oh,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:jn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:jn(c.outputTone,r).color,max:160}]})),a&&or.default.createElement(Bwe,{span:e,darkMode:r,tools:s}))}function nI({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=ah(),s=Xn(t),l=Mwe(e?.spans,r),u=n||rI(e);if(l.length===0)return or.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 or.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return or.default.createElement(Fwe,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var Uwe=[{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"}],Wwe=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 Hwe({trace:e,darkMode:t}){let r=Xn(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=Wwe(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:Pt.mono,color:r.textBody}},wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Zn(n)," (",l(n),")"),wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Zn(a)," (",l(a),")"),s>0&&wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Zn(s)," (",l(s),")")),o.length>0&&wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:Pt.mono,color:r.textSecondary}},o.map((c,d)=>wt.default.createElement("span",{key:d},c.name," ",Zn(c.duration)," (",l(c.duration||0),")"))))}function qwe({trace:e,darkMode:t}){let[r,n]=(0,wt.useState)(null),[o,a]=(0,wt.useState)(!1),i=Xn(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(cs,{messages:s,darkMode:t,tools:rI(e)})}function Yx({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,wt.useState)("spans"),[i,s]=(0,wt.useState)("time"),l=Xn(t),u=(e?.spans||[]).length,c=PC(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(Gx,{options:Uwe,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(Gx,{options:XG,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(qwe,{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,Zn(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(nI,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&wt.default.createElement("div",{className:"mt-3"},wt.default.createElement(rd,{...c,label:"Context pressure",darkMode:t})),wt.default.createElement(Hwe,{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:Pt.mono}},"T:",d.thinking.toLocaleString()),wt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:Pt.mono}},"in:",(d.input||0).toLocaleString()),wt.default.createElement("span",{className:"text-green-500",style:{fontFamily:Pt.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&wt.default.createElement("span",{style:{fontFamily:Pt.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 Kwe=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},Vwe=e=>e==null?null:`$${e.toFixed(4)}`;function zC({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=Xn(t),a=tI(e),i=PC(e),s=e.status!=="ERROR",l=Kwe(e.tokens);return $n.default.createElement(LC,{darkMode:t,id:`trace-row-${e.id}`},$n.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},$n.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},$n.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:Pt.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),$n.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:Pt.mono,color:o.textMuted}},e.short_id),$n.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),$n.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},$n.default.createElement(nd,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&$n.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:Pt.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:Ea.context,empty:"Context: no generation in this trace reported its token counts",content:i&&$n.default.createElement(rd,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:Ea.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&$n.default.createElement($n.default.Fragment,null,$n.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Zn(e.duration_ms))},{key:"tokens",width:Ea.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:Ea.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&$n.default.createElement($n.default.Fragment,null,$n.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),Vwe(e.estimated_cost))},{key:"status",width:Ea.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:$n.default.createElement("span",{style:{color:s?o.good:o.bad}},$n.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),$n.default.createElement(Vp,{open:r,darkMode:t}))),!r&&$n.default.createElement(oh,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:jn("user",t).color},{label:"output",text:a.output,color:jn("assistant",t).color}]}),r&&$n.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},$n.default.createElement(Yx,{trace:e,darkMode:t})))}function ZG(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function JG(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function tt(e=""){return ZG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function od(e="",t={}){window.history.pushState(t,"",tt(e))}function Jn(e=window.location.pathname){return JG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function lt(e,t={}){if(!e)return;let r=Jn(e);od(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:tt(r)}}))}var QG=({minutes:e,agentId:t=null})=>{let r=new URLSearchParams({minutes:String(e)});return t!=null&&t!==""&&r.set("agent_id",String(t)),`/api/traces?${r.toString()}`};var RG=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],Gwe=3e4,Ywe=e=>{let t={};return e.forEach((r,n)=>{t[r]=RG[n%RG.length]}),t},Xwe=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)},Zwe=(e,t,r,n=60)=>{let o=Date.now(),a=[],i=n*1e3,s=Math.max(1,Math.round(r*60/n));for(let l=s-1;l>=0;l--){let u=o-(l+1)*i,c=o-l*i,d=e.filter(f=>f.timestamp_ms>=u&&f.timestamp_ms{p[f]=d.filter(m=>m.agent===f).length}),a.push({time:r>1440?new Date(c).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(c).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:c,requests:d.length,errors:d.filter(f=>f.status==="ERROR").length,avgLatency:d.length>0?Math.round(d.reduce((f,m)=>f+(m.duration_ms||0),0)/d.length):0,traces:d,...p})}return a};function Gp({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,q.useState)([]),[a,i]=(0,q.useState)([]),[s,l]=(0,q.useState)({}),[u,c]=(0,q.useState)(!0),[d,p]=(0,q.useState)(null),[f,m]=(0,q.useState)(null),y=(0,q.useRef)(new URLSearchParams(window.location.search).get("trace")),[x,h]=(0,q.useState)(null),[g,v]=(0,q.useState)({status:"all",agent:"all",action:"all"}),[b,S]=(0,q.useState)("time"),[w,_]=(0,q.useState)(null),[k,A]=(0,q.useState)("timeline"),[C,E]=(0,q.useState)("popular"),{timeWindow:I}=vl(),Q=(0,q.useCallback)(async()=>{try{let z=await fetch(QG({minutes:I.minutes,agentId:e}));if(!z.ok)throw new Error(`Request failed (${z.status})`);let te=await z.json();o(te.traces||[]),i(te.agents||[]),l(te.agent_ids||{}),p(null)}catch(z){p(z.message)}finally{c(!1)}},[I.minutes,e]);(0,q.useEffect)(()=>{Q();let z=setInterval(Q,Gwe);return()=>clearInterval(z)},[Q]);let $=(0,q.useMemo)(()=>Ywe(a),[a]);(0,q.useEffect)(()=>{_(null)},[I.id]);let F=(0,q.useMemo)(()=>Zwe(n,a,I.minutes,I.bucketSeconds),[n,a,I]),N=Math.max(0,Math.ceil(F.length/6)-1),O=(0,q.useMemo)(()=>{let z=n;if(w!==null){let te=F[w];te&&(z=te.traces||[])}if(g.status!=="all"&&(z=z.filter(te=>g.status==="success"?te.status!=="ERROR":te.status==="ERROR")),g.agent!=="all"&&(z=z.filter(te=>te.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[te,U]=g.action.split("#");z=z.filter(P=>P.agent===te&&P.action===U)}else z=z.filter(te=>te.action===g.action);return b==="latency"&&(z=[...z].sort((te,U)=>(U.duration_ms||0)-(te.duration_ms||0))),x&&!z.some(te=>te.id===x.id)&&(z=[x,...z]),z},[n,w,F,g,b,x]);(0,q.useEffect)(()=>{let z=y.current;if(!z)return;let te=P=>{y.current=null,m(P.id),setTimeout(()=>{document.getElementById(`trace-row-${P.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},U=n.find(P=>P.id===z||P.trace_id===z||P.short_id&&String(z).startsWith(P.short_id));if(U){te(U);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(z)}`).then(P=>P.ok?P.json():Promise.reject(new Error("not found"))).then(({trace:P})=>{h(P),te(P)}).catch(()=>{y.current=null})},[n]);let j=(0,q.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,te={};z.forEach(P=>{P.agent&&(te[P.agent]||(te[P.agent]={agent:P.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),te[P.agent].count++,te[P.agent].totalDuration+=P.duration_ms||0,te[P.agent].cost+=P.estimated_cost||0,P.status==="ERROR"&&te[P.agent].errors++,P.tokens&&(te[P.agent].tokens.thinking+=P.tokens.thinking||0,te[P.agent].tokens.input+=P.tokens.input||0,te[P.agent].tokens.output+=P.tokens.output||0),P.action&&(te[P.agent].actions[P.action]=(te[P.agent].actions[P.action]||0)+1))});let U={popular:P=>P.count,longest:P=>P.totalDuration/(P.count||1),cost:P=>P.cost,tokens:P=>(P.tokens.input||0)+(P.tokens.output||0)+(P.tokens.thinking||0),errors:P=>P.errors}[C]||(P=>P.count);return Object.values(te).sort((P,Y)=>U(Y)-U(P)||Y.count-P.count)},[n,F,w,C]),T=(0,q.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,te={};return z.forEach(U=>{if(!U.agent)return;let P=`${U.agent}#${U.action||"unknown"}`;te[P]||(te[P]={key:P,agent:U.agent,action:U.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),te[P].count++,te[P].totalDuration+=U.duration_ms||0,te[P].minDuration=Math.min(te[P].minDuration,U.duration_ms||0),te[P].maxDuration=Math.max(te[P].maxDuration,U.duration_ms||0),U.status==="ERROR"&&te[P].errors++,U.tokens&&(te[P].tokens.thinking+=U.tokens.thinking||0,te[P].tokens.input+=U.tokens.input||0,te[P].tokens.output+=U.tokens.output||0)}),Object.values(te).forEach(U=>{U.minDuration===1/0&&(U.minDuration=0)}),Object.values(te).sort((U,P)=>P.count-U.count)},[n,F,w]),D=(0,q.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,te={};return z.forEach(U=>{(U.spans||[]).forEach(P=>{if(P.type!=="tool")return;let Y=P.attributes?.["tool.name"]||P.name?.replace(/^tool\./,"")||"unknown";te[Y]||(te[Y]={name:Y,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),te[Y].count++,te[Y].totalDuration+=P.duration||0,te[Y].maxDuration=Math.max(te[Y].maxDuration,P.duration||0),P.error&&te[Y].errors++,U.agent&&te[Y].agents.add(`${U.agent}#${U.action||"unknown"}`)})}),Object.values(te).map(U=>({...U,agents:[...U.agents],avgDuration:U.count?U.totalDuration/U.count:0})).sort((U,P)=>P.totalDuration-U.totalDuration)},[n,F,w]),M=(0,q.useMemo)(()=>g.agent==="all"?T.map(z=>z.key):T.filter(z=>z.agent===g.agent).map(z=>z.key),[g.agent,T]),K=(0,q.useMemo)(()=>Xwe(O),[O]),V=z=>{if(z&&z.activeTooltipIndex!==void 0){let te=z.activeTooltipIndex;_(w===te?null:te),m(null)}},L=z=>(z?.input||0)+(z?.output||0)+(z?.thinking||0),G=z=>{let te=z.count?z.errors/z.count:0;return[{label:`Calls ${I.label||""}`.trim(),value:z.count.toLocaleString()},{label:"Errors",value:`${(te*100).toFixed(1)}%`,tone:z.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(z.totalDuration/(z.count||1))}ms`},{label:"Tokens",value:L(z.tokens).toLocaleString()},{label:"Cost",value:W(z.cost),title:"Estimated from token counts at this model's published rates",tone:z.cost?void 0:"muted"},{label:"Actions",value:(z.agents?.length||0).toLocaleString()}]},W=z=>z?z<.01?"<$0.01":`$${z.toFixed(2)}`:"\u2014",ie=q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},q.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),q.default.createElement("select",{value:C,onChange:z=>E(z.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"}},q.default.createElement("option",{value:"popular"},"Most calls"),q.default.createElement("option",{value:"longest"},"Longest average"),q.default.createElement("option",{value:"cost"},"Highest cost"),q.default.createElement("option",{value:"tokens"},"Most tokens"),q.default.createElement("option",{value:"errors"},"Most errors"))),Ie=z=>v(te=>({...te,agent:te.agent===z?"all":z})),ge=z=>{let te=s[z];if(!te)return Ie(z);let U=tt(`/agents/${te}`);window.history.pushState(window.history.state,"",U),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:U}}))},ce=z=>{let te=K[0]?.total||1,U=z?"rgba(0,0,0,0.3)":"white",P=z?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",Y=z?"white":"#111827",B=z?"rgba(255,255,255,0.5)":"#6b7280",se={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return q.default.createElement("div",{style:{padding:z?"0 24px 24px 24px":0}},q.default.createElement("div",{style:{background:U,border:P,borderRadius:"12px",padding:"16px"}},q.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:Y,marginBottom:"4px"}},"Slowest operations"),q.default.createElement("div",{style:{fontSize:"12px",color:B,marginBottom:"14px"}},"Span durations aggregated across ",O.length," trace",O.length===1?"":"s"," \u2014 ranked by total time"),K.length===0?q.default.createElement("div",{style:{fontSize:"13px",color:B,padding:"12px 0"}},"No spans in the current selection"):q.default.createElement("div",{style:{display:"grid",gap:"10px"}},K.map(ne=>q.default.createElement("div",{key:ne.name,style:{display:"flex",alignItems:"center",gap:"12px"}},q.default.createElement("div",{style:{width:"220px",flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},q.default.createElement("span",{style:{color:B}},eI(ne.type)),q.default.createElement("span",{style:{fontSize:"13px",color:ne.errors>0?"#ef4444":Y,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ne.name)),q.default.createElement("div",{style:{flex:1,height:"18px",background:z?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},q.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ne.total/te*100,.5)}%`,background:se[ne.type]||"#6366f1"}})),q.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:B,fontFamily:Pt.mono,textAlign:"right"}},ne.count,"\xD7 \xB7 avg ",Zn(ne.avg)," \xB7 max ",Zn(ne.max)," \xB7 \u03A3 ",Zn(ne.total)))))))};if(u)return q.default.createElement("div",{className:"flex items-center justify-center h-64"},q.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let R={requests:F.reduce((z,te)=>z+te.requests,0),errors:F.reduce((z,te)=>z+te.errors,0),avgLatency:(()=>{let z=F.filter(te=>te.requests>0);return z.length===0?0:Math.round(z.reduce((te,U)=>te+U.avgLatency,0)/z.length)})(),throughput:(F.reduce((z,te)=>z+te.requests,0)/I.minutes).toFixed(1)},ee=n.length===0;return r?q.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},q.default.createElement("div",{style:{padding:"24px 24px 0 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px",paddingBottom:"16px"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},q.default.createElement("div",null,!t&&q.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),q.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},w!==null?`Viewing ${F[w]?.time} \u2022 ${O.length} requests`:`Last ${I.label} \u2022 Click timeline to drill down`)),q.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},q.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px"}},["timeline","agents","actions","tools","spans"].map(z=>q.default.createElement("button",{key:z,onClick:()=>A(z),style:{padding:"6px 12px",background:k===z?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},z))),!e&&q.default.createElement("select",{value:g.agent,onChange:z=>v({...g,agent:z.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"}},q.default.createElement("option",{value:"all"},"All Agents"),a.map(z=>q.default.createElement("option",{key:z,value:z},z))),q.default.createElement("select",{value:g.action,onChange:z=>v({...g,action:z.target.value}),style:{padding:"8px 12px",background:g.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:g.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Actions"),M.map(z=>q.default.createElement("option",{key:z,value:z},z))),q.default.createElement("select",{value:g.status,onChange:z=>v({...g,status:z.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"}},q.default.createElement("option",{value:"all"},"All Status"),q.default.createElement("option",{value:"success"},"Success"),q.default.createElement("option",{value:"error"},"Error")),q.default.createElement("select",{value:b,onChange:z=>S(z.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"}},q.default.createElement("option",{value:"time"},"Newest first"),q.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&q.default.createElement("button",{onClick:()=>_(null),style:{padding:"8px 16px",background:"rgba(255,255,255,0.2)",color:"white",borderRadius:"8px",border:"none",fontSize:"14px",fontWeight:"500",cursor:"pointer"}},"Clear Selection")))),d&&q.default.createElement("div",{style:{margin:"0 24px 16px 24px",padding:"12px 16px",background:"rgba(239, 68, 68, 0.1)",borderRadius:"8px",color:"#ef4444",fontSize:"13px"}},"Failed to load traces: ",d),q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},q.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},q.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"}},q.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),q.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries($).map(([z,te])=>q.default.createElement("div",{key:z,style:{display:"flex",alignItems:"center",gap:"6px"}},q.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:te}}),q.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},z.replace("Agent","")))))),q.default.createElement("div",{style:{height:"150px"}},q.default.createElement(kc,{width:"100%",height:"100%"},q.default.createElement(ed,{data:F,onClick:V,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries($).map(([z,te])=>q.default.createElement("linearGradient",{key:z,id:`gradient-${z}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:te,stopOpacity:.8}),q.default.createElement("stop",{offset:"95%",stopColor:te,stopOpacity:.1})))),q.default.createElement(wu,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),q.default.createElement(Cu,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:N}),q.default.createElement(Eu,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),q.default.createElement(Fc,{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:(z,te)=>[z,te.replace("Agent","")]}),Object.keys($).map(z=>q.default.createElement(ku,{key:z,type:"monotone",dataKey:z,stackId:"1",stroke:$[z],fill:`url(#gradient-${z})`}))))),q.default.createElement("div",{style:{display:"flex",gap:"24px",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"white"}},R.requests),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},R.errors),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},R.avgLatency,"ms"),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},R.throughput,"/min"),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),k==="agents"&&q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},ie,q.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"16px"}},j.map(z=>q.default.createElement(wm,{key:z.agent,name:z.agent,accentColor:$[z.agent],subtitle:z.agents?.length?z.agents.join(", "):void 0,badge:q.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[z.agent]+"30",color:$[z.agent],borderRadius:"4px",whiteSpace:"nowrap"}},z.count," calls"),onClick:()=>ge(z.agent),stats:G(z),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[z.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:te=>{te.stopPropagation(),Ie(z.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:g.agent===z.agent?"#ef4444":"inherit",font:"inherit"}},g.agent===z.agent?"Clear filter":"Filter traces"))})))),k==="actions"&&q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},q.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:"12px"}},T.map(z=>{let te=g.action===z.key;return q.default.createElement("div",{key:z.key,onClick:()=>{v({...g,action:te?"all":z.key}),A("timeline")},style:{background:te?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:te?"1px solid #ef4444":`1px solid ${$[z.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},q.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:$[z.agent]}}),q.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},z.agent),q.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",z.action)),q.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[z.agent]+"30",color:$[z.agent],borderRadius:"4px"}},z.count," calls")),q.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),q.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(z.totalDuration/z.count),"ms")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),q.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(z.minDuration),"ms / ",Math.round(z.maxDuration),"ms")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),q.default.createElement("div",{style:{fontSize:"13px",color:z.errors>0?"#ef4444":"#10b981"}},z.errors," (",(z.errors/z.count*100).toFixed(0),"%)")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),q.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},L(z.tokens).toLocaleString()))))}))),k==="spans"&&ce(!0),k==="timeline"&&!ee&&q.default.createElement("div",{className:"space-y-4"},O.length===0?q.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):O.map(z=>q.default.createElement(zC,{key:z.id,trace:z,darkMode:!0,expanded:f===z.id,onToggle:()=>m(f===z.id?null:z.id)}))),ee&&k==="timeline"&&q.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},q.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),q.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"))):q.default.createElement("div",{className:"space-y-6"},q.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},q.default.createElement("div",null,q.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),q.default.createElement("p",{className:"text-sm text-gray-500"},w!==null?`Viewing ${F[w]?.time} \u2022 ${O.length} requests`:`Last ${I.label} \u2022 Click timeline to drill down`)),q.default.createElement("div",{className:"flex items-center space-x-3 flex-wrap gap-y-2 min-w-0"},q.default.createElement(xl,null),q.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map(z=>q.default.createElement("button",{key:z,onClick:()=>A(z),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${k===z?"bg-white shadow text-gray-900":"text-gray-600"}`},z))),q.default.createElement("select",{value:g.agent,onChange:z=>v({...g,agent:z.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"}},q.default.createElement("option",{value:"all"},"All Agents"),a.map(z=>q.default.createElement("option",{key:z,value:z},z))),q.default.createElement("select",{value:g.action,onChange:z=>v({...g,action:z.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${g.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Actions"),M.map(z=>q.default.createElement("option",{key:z,value:z},z))),q.default.createElement("select",{value:g.status,onChange:z=>v({...g,status:z.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},q.default.createElement("option",{value:"all"},"All Status"),q.default.createElement("option",{value:"success"},"Success"),q.default.createElement("option",{value:"error"},"Error")),q.default.createElement("select",{value:b,onChange:z=>S(z.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},q.default.createElement("option",{value:"time"},"Newest first"),q.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&q.default.createElement("button",{onClick:()=>_(null),className:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors text-sm font-medium"},"Clear Selection"))),d&&q.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",d),q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},q.default.createElement("div",{className:"flex justify-between items-center mb-3"},q.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),q.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries($).map(([z,te])=>q.default.createElement("div",{key:z,className:"flex items-center gap-1.5"},q.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:te}}),q.default.createElement("span",{className:"text-xs text-gray-500"},z.replace("Agent","")))))),q.default.createElement("div",{className:"h-36"},q.default.createElement(kc,{width:"100%",height:"100%"},q.default.createElement(ed,{data:F,onClick:V,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries($).map(([z,te])=>q.default.createElement("linearGradient",{key:z,id:`gradient-light-${z}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:te,stopOpacity:.6}),q.default.createElement("stop",{offset:"95%",stopColor:te,stopOpacity:.05})))),q.default.createElement(wu,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),q.default.createElement(Cu,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),q.default.createElement(Eu,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),q.default.createElement(Fc,{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:(z,te)=>[z,te.replace("Agent","")]}),Object.keys($).map(z=>q.default.createElement(ku,{key:z,type:"monotone",dataKey:z,stackId:"1",stroke:$[z],fill:`url(#gradient-light-${z})`}))))),q.default.createElement("div",{className:"flex gap-6 mt-3 pt-3 border-t border-gray-100"},q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-gray-900"},R.requests),q.default.createElement("div",{className:"text-xs text-gray-500"},"Total Requests")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-red-500"},R.errors),q.default.createElement("div",{className:"text-xs text-gray-500"},"Errors")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-green-600"},R.avgLatency,"ms"),q.default.createElement("div",{className:"text-xs text-gray-500"},"Avg Latency")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-amber-500"},R.throughput,"/min"),q.default.createElement("div",{className:"text-xs text-gray-500"},"Throughput")))),k==="agents"&&q.default.createElement("div",null,ie,q.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},j.map(z=>q.default.createElement(wm,{key:z.agent,name:z.agent,accentColor:$[z.agent],subtitle:z.agents?.length?z.agents.join(", "):void 0,badge:q.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:$[z.agent]+"20",color:$[z.agent]}},z.count," calls"),onClick:()=>ge(z.agent),stats:G(z),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[z.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:te=>{te.stopPropagation(),Ie(z.agent)},className:g.agent===z.agent?"text-red-600":"hover:text-gray-700"},g.agent===z.agent?"Clear filter":"Filter traces"))})))),k==="actions"&&q.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},T.map(z=>{let te=g.action===z.key;return q.default.createElement("div",{key:z.key,onClick:()=>{v({...g,action:te?"all":z.key}),A("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${te?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:$[z.agent],borderLeftWidth:te?"2px":"4px"}},q.default.createElement("div",{className:"flex items-center justify-between mb-3"},q.default.createElement("div",{className:"flex items-center gap-2"},q.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:$[z.agent]}}),q.default.createElement("span",{className:"font-semibold text-gray-900"},z.agent),q.default.createElement("span",{className:"text-gray-500"},"#",z.action)),q.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:$[z.agent]+"20",color:$[z.agent]}},z.count," calls")),q.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),q.default.createElement("div",{className:"font-medium"},Math.round(z.totalDuration/z.count),"ms")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),q.default.createElement("div",{className:"text-gray-600"},Math.round(z.minDuration),"ms / ",Math.round(z.maxDuration),"ms")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),q.default.createElement("div",{className:z.errors>0?"text-red-600":"text-green-600"},z.errors," (",(z.errors/z.count*100).toFixed(0),"%)")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),q.default.createElement("div",{className:"text-gray-600"},L(z.tokens).toLocaleString()))))})),k==="tools"&&(D.length===0?q.default.createElement("div",{className:"text-center py-8 text-gray-500 text-sm"},"No tool calls in this window"):q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},q.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium text-gray-500 border-b border-gray-100"},q.default.createElement("div",{className:"flex-1"},"Tool"),q.default.createElement("div",{className:"w-20 text-right"},"Calls"),q.default.createElement("div",{className:"w-24 text-right"},"Total time"),q.default.createElement("div",{className:"w-20 text-right"},"Avg"),q.default.createElement("div",{className:"w-20 text-right"},"Slowest")),D.map(z=>{let te=D[0].totalDuration?z.totalDuration/D[0].totalDuration*100:0;return q.default.createElement("div",{key:z.name,className:"px-4 py-2 border-b border-gray-50 last:border-0"},q.default.createElement("div",{className:"flex items-center gap-4 text-sm"},q.default.createElement("div",{className:"flex-1 min-w-0"},q.default.createElement("div",{className:"font-medium text-gray-900 truncate",title:z.name},z.name),z.agents.length>0&&q.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:z.agents.join(", ")},z.agents.join(", "))),q.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:Pt.mono}},z.count.toLocaleString(),z.errors>0&&q.default.createElement("span",{className:"text-red-600 ml-1",title:`${z.errors} failed`},"(",z.errors,")")),q.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:Pt.mono}},Zn(z.totalDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Zn(z.avgDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Zn(z.maxDuration))),q.default.createElement("div",{className:"h-1 bg-gray-100 rounded mt-1.5"},q.default.createElement("div",{className:"h-1 bg-green-500 rounded",style:{width:`${Math.max(te,1)}%`}})))}))),k==="spans"&&ce(!1),k==="timeline"&&!ee&&q.default.createElement("div",{className:"space-y-4"},O.length===0?q.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):O.map(z=>q.default.createElement(zC,{key:z.id,trace:z,darkMode:!1,expanded:f===z.id,onToggle:()=>m(f===z.id?null:z.id)}))),ee&&k==="timeline"&&q.default.createElement("div",{className:"text-center py-12"},q.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),q.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 we=Z(J());var BC=Z(J());function oI({trace:e,darkMode:t,height:r=8}){let n=Xn(t);if(!e)return BC.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 BC.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>BC.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Zn(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":RM[s.type]||"#9ca3af"}})))}var Ws=Z(J());var yr=Z(J());var Vr=Z(J());var H="var(--font-mono)",Ou=e=>e>=1?"success":e>=.7?"warning":"error",vo={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)"}},Xx={object:"=",sample:"~",pass:Bo.success,fault:Bo.error,info:Bo.info,on:"[x]",off:"[ ]",link:Bo.arrow,chevron:Bo.chevronRight};function Na({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Vr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:H,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},Xx.chevron):Vr.default.createElement("span",{title:i,style:{fontFamily:H,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}},Xx[e]||e)}function Ce({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=vo[e]||vo.muted;return Vr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:H,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function We({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Vr.default.createElement(a,{htmlFor:i,style:{fontFamily:H,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function Ln({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Vr.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?H:"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 ds({options:e,value:t,onChange:r,style:n}){return Vr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Vr.default.createElement("button",{key:o.value,type:"button",onClick:()=>r(o.value),"aria-pressed":a,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${a?"var(--color-accent-ui)":"var(--color-border)"}`,color:a?"var(--color-accent-ui)":"var(--color-text-cell)"}},o.label)}))}function pe({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 Vr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function ze({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Vr.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 ih({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Vr.default.createElement(ze,{testId:a},Vr.default.createElement(We,{size:11,spacing:"0.05em"},e),Vr.default.createElement("div",{style:{marginTop:8,fontFamily:H,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Vr.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function Rr({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return Vr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Vr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Vr.default.createElement(We,null,e),t&&Vr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},t)),Vr.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||vo[Ou(u)].strong;return Vr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Vr.default.createElement("span",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Vr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Vr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Vr.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function FC({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Vr.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)=>Vr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(vo[l.tone]||vo.muted).strong,transition:"width 300ms"}})))}function vn({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i,testId:s}){return Vr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:H,fontSize:o,color:n,textDecoration:"none",...a}},e," ",Xx.link)}function en({children:e,style:t}){return Vr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:H,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Mu=Z(J());var Jwe=/\/agents\/(\d+)/;function Ra(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function Qwe(e){return t=>t===e?{}:null}function Zx(e){return t=>e.test(t)?{agentId:t.match(Jwe)?.[1]}:null}function UC(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var Rwe=e=>e.assistantEnabled!==!1,eSe=Zx(/\/agents\/\d+\/(interactions|history)/),tSe=["recording","context","run","scenario_result"],rSe=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function nSe(e){let t=e.match(rSe);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var aI=[{view:"assistant",match:Qwe("/assistant"),path:"/assistant",enabled:Rwe},{view:"traces",match:Ra("/traces"),path:"/traces"},{view:"metrics",match:Ra("/metrics"),path:"/metrics"},{view:"scenarios",match:Ra("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ra("/interactions"),path:"/interactions"},{view:"tools",match:Ra("/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:Ra("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ra("/analytics"),path:"/analytics"},{view:"projects",match:Ra("/projects"),path:"/projects"},{view:"exploration",match:Ra("/explorations"),path:"/explorations"},{view:"builder",match:Ra("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=eSe(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:UC("/interactions")},{view:"agent-analytics",match:Zx(/\/agents\/\d+\/analytics/),path:UC("/analytics")},{view:"editor",match:Zx(/\/agents\/\d+\/edit/),path:UC("/edit")},{view:"runner",match:Zx(/\/agents\/\d+\/run/),path:UC("/run")},{view:"history",match:Zx(/\/agents\/\d+\/?$/)},{view:"replay",match:nSe},{view:"sessions",match:Ra("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ra("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ra("/organization"),path:"/organization"},{view:"settings",match:Ra("/settings"),path:"/settings"}],oSe="list",eY=[{id:"agents",label:null,items:[{view:"assistant",label:"Ask ActiveAgents",glyph:">"},{view:"list",label:"Agents",icon:"agents",badge:"agentCount"},{view:"builder",label:"New Agent",icon:"newAgent"},{view:"sandbox",label:"Run Agents",icon:"demo"},{view:"projects",label:"Projects",glyph:""}]},{id:"observability",label:"Observability",items:[{view:"traces",label:"Traces",icon:"traces"},{view:"interactions",label:"Interactions",icon:"interactions",badge:"pendingInputCount",badgeTone:"attention",badgeTitle:"requests waiting for an answer"},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"},{view:"metrics",label:"Metrics",icon:"metrics"},{view:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"scenarios",label:"Scenarios",icon:"evaluations"},{view:"sessions",label:"Sessions",icon:"replay",also:["replay"]}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function tY(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function Jx(e,t={}){return aI.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function rY(e,t={}){for(let r of aI){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:oSe}}function WC(e,{agent:t=null,features:r={}}={}){if(!Jx(e,r))return null;let n=aI.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function nY(e){for(let t of eY){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function sh(e,t){return!tSe.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function oY(e={}){return eY.map(t=>({...t,items:t.items.filter(r=>Jx(r.view,e))}))}var iI="/api/input_requests",HC="action-agent:input-requests-changed",iY=3e4,aY=100,aSe=["text","choice","confirm","secret"];function sY({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?`${iI}?${n}`:iI}function lh(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function lY(e){let t=lh(e).length;if(t!==0)return t>=aY?`${aY-1}+`:t}function sI(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?lh(e.input_requests).length>0?"awaiting":"poll":"finished"}function lI(e){return aSe.includes(e?.kind)?e.kind:null}function uY(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 cY(e){return e?.id==null?"answer":`answer-${e.id}`}function dY(e){switch(lI(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:cY(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:uY(e).map(t=>t.label)}];default:return[]}}function pY(e,t){if(t?.kind==="form"){let r=t.values?.[cY(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return uY(e).find(r=>r.label===t.text)?.value}var iSe={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function sSe(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:iSe[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 uI(e){return["answered","declined","closed"].includes(e?.state)}async function fY(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${iI}/${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 sSe(a.status,i)}function mY(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 gY(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function hY(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 yY(e,t=Date.now()){return e?`asked ${Qy(e,t)}`:null}function vY(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 xY(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=WC("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function bY(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function qC(){window.dispatchEvent(new CustomEvent(HC))}function KC({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=iY}={}){let[o,a]=(0,Mu.useState)(null),[i,s]=(0,Mu.useState)(null),l=(0,Mu.useRef)(0),u=(0,Mu.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(sY({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,Mu.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(HC,u),()=>{clearInterval(c),window.removeEventListener(HC,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var lSe={text:"question",choice:"choice",confirm:"approval",secret:"secret"},uSe={answered:"success",declined:"muted",closed:"warning"},cI={fontFamily:H,fontSize:11,color:"var(--color-text-muted)"},cSe={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:H,fontSize:13};function dSe({request:e,busy:t,onSubmit:r}){let[n,o]=(0,yr.useState)("");return yr.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"}},yr.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:cSe}),yr.default.createElement(pe,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function pSe({request:e,busy:t,onApprove:r,onDecline:n}){let o=vY(e);return yr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},o&&yr.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:H,fontSize:12}},o),yr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},yr.default.createElement(pe,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),yr.default.createElement(pe,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Yp({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=ut(),[a,i]=(0,yr.useState)(!1),[s,l]=(0,yr.useState)(r),u=lI(e),c=uI(s),d=async g=>{if(a||c)return;i(!0);let v=await fY(e,g);i(!1),l(v),uI(v)&&(qC(),t&&t(e,v))},p=g=>{g!==void 0&&d({answer:g})},f=()=>d({decline:!0}),m=n?xY(e):null,y=gY(e.actor),x=hY(e.expires_at),h=yY(e.created_at);return yr.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}},yr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},yr.default.createElement(Ce,{tone:e.kind==="confirm"?"warning":"info",size:10},lSe[e.kind]||e.kind),yr.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e.agent?.name||"An agent"," is asking"),m&&yr.default.createElement(vn,{href:tt(m),onClick:()=>lt(m),title:"Open the run this request paused"},yr.default.createElement("span",{"data-testid":"input-request-run-link"},"run #",e.run_id)),x&&yr.default.createElement("span",{style:{...cI,marginLeft:"auto",color:x==="expired"?"var(--color-error-text)":cI.color}},x)),yr.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},e.prompt),yr.default.createElement("div",{style:{...cI,display:"flex",gap:10,flexWrap:"wrap"}},y&&yr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",y),e.tool_name&&yr.default.createElement("span",{"data-testid":"input-request-tool"},"via ",e.tool_name),h&&yr.default.createElement("span",null,h)),c?yr.default.createElement("div",{"data-testid":"input-request-outcome"},yr.default.createElement(Ce,{tone:uSe[s.state]||"muted"},mY(e,s))):yr.default.createElement(yr.default.Fragment,null,(u==="text"||u==="choice")&&yr.default.createElement(bl,{blocks:dY(e),darkMode:o,onAction:g=>p(pY(e,g))}),u==="confirm"&&yr.default.createElement(pSe,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&yr.default.createElement(dSe,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&yr.default.createElement("div",null,yr.default.createElement(pe,{variant:"ghost",size:"sm",onClick:f,disabled:a,testId:"input-request-decline",style:{padding:"2px 0"}},"Decline")),s?.message&&yr.default.createElement("div",{"data-testid":"input-request-error",role:"alert",style:{fontSize:12,color:"var(--color-error-text)"}},s.message)))}function fSe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:Ws.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}},Ws.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},Ws.default.createElement(We,{color:"var(--color-warning-text)"},"Needs input"),Ws.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:H,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),Ws.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=>Ws.default.createElement(Yp,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>Ws.default.createElement(Yp,{key:n.id,request:n,initialOutcome:o})))}function dI({agentId:e=null}){let{requests:t}=KC({agentId:e}),[r,n]=(0,Ws.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=lh(t).filter(s=>!o.has(s.id));return Ws.default.createElement(fSe,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var mr=Z(J());function wY(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 SY=e=>`/agents/${e.id}/run?new=1`;function Qx({inline:e=!1,label:t="New interaction"}){let[r,n]=(0,mr.useState)(e),[o,a]=(0,mr.useState)(null),[i,s]=(0,mr.useState)(null),[l,u]=(0,mr.useState)(""),c=(0,mr.useRef)(null);(0,mr.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,mr.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,mr.useMemo)(()=>wY(o||[],l),[o,l]),p=mr.default.createElement("div",{"data-testid":"new-interaction-agents"},(o?.length||0)>6&&mr.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&&mr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-error)"}},"Could not load agents: ",i),!o&&!i&&mr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-text-muted)"}},"Loading agents\u2026"),o&&d.length===0&&mr.default.createElement(en,null,o.length===0?"No agents in this workspace yet.":"No agent matches."," ",mr.default.createElement("a",{href:"#",onClick:f=>{f.preventDefault(),lt("/agents/new")},style:{color:"var(--color-info)"}},"Create an agent")),mr.default.createElement("ul",{className:"space-y-1 max-h-80 overflow-y-auto"},d.map(f=>mr.default.createElement("li",{key:f.id},mr.default.createElement("button",{type:"button","data-testid":`new-interaction-agent-${f.id}`,onClick:()=>lt(SY(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"}},mr.default.createElement("span",{className:"flex items-center justify-between gap-2"},mr.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"&&mr.default.createElement(Ce,{tone:"muted"},f.status)),mr.default.createElement("span",{className:"block truncate",style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},f.provider,"/",f.model),f.description&&mr.default.createElement("span",{className:"block text-xs truncate",style:{color:"var(--color-text-secondary)"}},f.description))))));return e?mr.default.createElement(ze,{testId:"new-interaction-card"},mr.default.createElement("div",{className:"flex items-baseline justify-between mb-3 gap-3"},mr.default.createElement("div",null,mr.default.createElement(We,null,"Your agents"),mr.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):mr.default.createElement("div",{ref:c,className:"relative"},mr.default.createElement(pe,{variant:"primary",size:"sm",testId:"new-interaction",onClick:()=>n(f=>!f)},t),r&&mr.default.createElement("div",{className:"absolute right-0 mt-2 z-20 p-3 rounded-xl",style:{width:360,background:"var(--color-card)",border:"1px solid var(--color-border)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"}},mr.default.createElement(We,{style:{display:"block",marginBottom:8}},"Start a conversation with"),p))}var Ye=Z(J());var GC=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var Hs=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Rx=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},YC=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),kY=e=>String(e??"").replace(/\s+/g," ").trim(),Xp=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),uh=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},XC=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)}`},pI=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`},AY=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:Hs(Number(t),"turn"),XC(r),pI(n)].filter(Boolean).join(" \xB7 "),EY=(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=Xp(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},mSe={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"}},NY=e=>mSe[e]||{label:YC(e)||"Unknown",tone:"neutral"},ZC=e=>["pending","provisioning"].includes(e?.status),TY=e=>e?.status==="ready",gSe={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"}},ps=e=>gSe[e]||{label:YC(e)||"Unknown",tone:"neutral"},qs=e=>["queued","running"].includes(e?.status),n0=e=>["succeeded","failed","cancelled"].includes(e?.status),fI=e=>n0(e)&&e?.diff_pending===!0,mI=e=>n0(e)&&!fI(e),OY=e=>e?.status==="cancelled"&&mI(e)&&e?.diff==null&&!(Number(e?.event_count)>0),gI=e=>{if(!n0(e)){let t=Number(e?.event_count)||0;return t>0?Hs(t,"event"):""}return AY(null,e)},PY=e=>[ps(e?.status).label,gI(e)].filter(Boolean).join(" \xB7 "),MY=(e,t=80)=>{let r=String(e||"").split(` -`).map(n=>n.trim()).find(Boolean)||"";return Rx(r,t)||"(empty prompt)"},ad=(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},IY=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?ad(e,t,r):e,DY=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},jY=(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}},$Y=(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]},wl=(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},hSe={Bash:e=>e.command,Read:(e,t)=>wl(e.file_path,t),Write:(e,t)=>wl(e.file_path,t),Edit:(e,t)=>wl(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${Hs(e.edits.length,"edit")})`:"";return`${wl(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>wl(e.notebook_path,t),NotebookRead:(e,t)=>wl(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${wl(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${wl(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>wl(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)?Hs(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},ySe=["command","file_path","path","url","query","pattern","description","name","prompt"],vSe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!Xp(t))return Rx(kY(typeof t=="string"?t:uh(t)),120);let n=hSe[e],o=n?n(t,r):null;if(o==null||o===""){let a=ySe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?wl(t[a],r):t[a]:o=Object.keys(t).length?uh(t):""}return Rx(kY(o),120)},xSe=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]":uh(t)).join(` -`):uh(e),bSe=(e,{chars:t=600,lines:r=12}={})=>{let n=String(e??"").replace(/\s+$/,""),o=n.split(` + `).concat(b.x,",").concat(b.y),S=ar(e.id)?tu("recharts-radial-line-"):e.id;return Ja.createElement("text",bu({},n,{dominantBaseline:"central",className:bt("recharts-radial-bar-label",i)}),Ja.createElement("defs",null,Ja.createElement("path",{id:S,d:k})),Ja.createElement("textPath",{xlinkHref:"#".concat(S)},r))},whe=(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=an(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=an(n,o,f,u),y=m.x,x=m.y;return{x:y,y:x,textAnchor:"middle",verticalAnchor:"middle"}},zg=e=>e!=null&&"cx"in e&&je(e.cx),She={angle:0,offset:5,zIndex:ir.label,position:"middle",textBreakAll:!1};function khe(e){if(!zg(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 xu(e){var t,r,n=nr(e,She),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=yhe(),y=XH(),x=i==="center"?y:m??y,h,g,v;o==null?h=x:zg(o)?h=o:h=sv(o);var b=khe(h);if(!h||ar(s)&&ar(l)&&!(0,No.isValidElement)(u)&&typeof u!="function")return null;var k=zg(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(zg(h))k||(v=whe(h,n.offset,n.position));else if(b){var S=cw({viewBox:b,position:i,offset:n.offset,parentViewBox:zg(a)?void 0:a,clamp:!0});v=Pp(Pp({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=Pp(Pp(Pp(Pp({},((t=v)===null||t===void 0?void 0:t.x)!==void 0?{x:v.x}:{}),((r=v)===null||r===void 0?void 0:r.y)!==void 0?{y:v.y}:{}),n),{},{viewBox:h});if((0,No.isValidElement)(u)){var _=w.labelRef,A=KH(w,dhe);return(0,No.cloneElement)(u,A)}if(typeof u=="function"){var C=w.content,E=KH(w,phe);if(g=(0,No.createElement)(u,E),(0,No.isValidElement)(g))return g}else g=vhe(n);var I=yn(n);return k&&zg(h)?bhe(n,i,g,I,h):v==null?null:Ja.createElement(sn,{zIndex:n.zIndex},Ja.createElement(Op,bu({ref:f,className:bt("recharts-label",d)},I,v,{textAnchor:P_(I.textAnchor)?I.textAnchor:v.textAnchor,breakAll:p}),g))}xu.displayName="Label";var _he=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?Ja.createElement(xu,bu({key:"label-implicit"},n)):wa(e)?Ja.createElement(xu,bu({key:"label-implicit",value:e},n)):(0,No.isValidElement)(e)?e.type===xu?(0,No.cloneElement)(e,Pp({key:"label-implicit"},n)):Ja.createElement(xu,bu({key:"label-implicit",content:e},n)):Mp(e)?Ja.createElement(xu,bu({key:"label-implicit",content:e},n)):e&&typeof e=="object"?Ja.createElement(xu,bu({},e,{key:"label-implicit"},n)):null};function QH(e){var t=e.label,r=e.labelRef,n=XH();return _he(t,n,r)||null}var wu=Z(Q()),Bg=Z(Q());var Che=["valueAccessor"],Ahe=["dataKey","clockWise","id","textBreakAll","zIndex"];function I_(){return I_=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(UH(t))return t},eq=(0,Bg.createContext)(void 0),Fg=eq.Provider,tq=(0,Bg.createContext)(void 0),rq=tq.Provider;function The(){return(0,Bg.useContext)(eq)}function Ohe(){return(0,Bg.useContext)(tq)}function M_(e){var t=e.valueAccessor,r=t===void 0?Nhe:t,n=RH(e,Che),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=RH(n,Ahe),c=The(),d=Ohe(),p=c||d;return!p||!p.length?null:wu.createElement(sn,{zIndex:l??ir.label},wu.createElement(br,{className:"recharts-label-list"},p.map((f,m)=>{var y,x=ar(o)?r(f,m):Ht(f.payload,o),h=ar(i)?{}:{id:"".concat(i,"-").concat(m)};return wu.createElement(xu,I_({key:"label-".concat(m)},yn(f),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:f.fill,parentViewBox:f.parentViewBox,value:x,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}M_.displayName="LabelList";function Hc(e){var t=e.label;return t?t===!0?wu.createElement(M_,{key:"labelList-implicit"}):wu.isValidElement(t)||Mp(t)?wu.createElement(M_,{key:"labelList-implicit",content:t}):typeof t=="object"?wu.createElement(M_,I_({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var nq=Z(Q());function ZM(){return ZM=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 je(t)&&je(r)&&je(n)?nq.createElement("circle",ZM({},hn(e),Bm(e),{className:a,cx:t,cy:r,r:n})):null};var JM=e=>e.graphicalItems.polarItems,Phe=se([vn,dp],ox),j_=se([JM,En,Phe],ax),Mhe=se([j_],ix),$_=se([Mhe,sp],sx),Ihe=se([$_,En,j_],rM),F7e=se([$_,En,j_],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Ht(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Ht(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),oq=()=>{},Dhe=se([$_,En,j_,Ng,vn,oF],ux),jhe=se([En,t_,r_,oq,Dhe,oq,Bt,vn],cx),aq=se([En,Bt,$_,Ihe,Ac,vn,jhe],dx),$he=se([aq,Ep,mu],px),Lhe=se([En,aq,$he,vn],fx),U7e=se([mu,Lhe],mk);var zhe={radiusAxis:{},angleAxis:{}},iq=Cr({name:"polarAxis",initialState:zhe,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Zt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Zt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),L_=iq.actions,K7e=L_.addRadiusAxis,V7e=L_.removeRadiusAxis,G7e=L_.addAngleAxis,Y7e=L_.removeAngleAxis;var sq=iq.reducer;function z_(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Gt=Z(Q()),Gg=Z(Q());function lq(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 uq(e){for(var t=1;tt,QM=se([JM,Whe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),Hhe=[],RM=(e,t,r)=>r?.length===0?Hhe:r,cq=se([sp,QM,RM],(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=>uq(uq({},t.presentationProps),a.props))),o!=null)return o}}),dq=se([cq,QM,RM],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Ht(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:xi(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),pq=se([cq,QM,RM,Fr],(e,t,r,n)=>{if(!(t==null||e==null))return fq({offset:n,pieSettings:t,displayedData:e,cells:r})});var xq=Z(Q()),bq=Z(hq());var yq=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",vq=null,r5=null,wq=e=>{if(e===vq&&Array.isArray(r5))return r5;var t=[];return xq.Children.forEach(e,r=>{ar(r)||((0,bq.isFragment)(r)?t=t.concat(wq(r.props.children)):t.push(r))}),r5=t,vq=e,t};function xx(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>yq(o)):n=[yq(t)],wq(e).forEach(o=>{var a=Uo(o,"type.displayName")||Uo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var Ug=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Wg=Z(Q()),bx=Z(Q());function Sq(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 kq(e){for(var t=1;t{var n=jt();return(o,a)=>i=>{e?.(o,a,i),n(l_({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},Sx=e=>{var t=jt();return(r,n)=>o=>{e?.(r,n,o),t(mW())}},kx=(e,t,r)=>{var n=jt();return(o,a)=>i=>{e?.(o,a,i),n(gW({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var _x=Z(Q());function Kc(e){var t=e.tooltipEntrySettings,r=jt(),n=Ar(),o=(0,_x.useRef)(null);return(0,_x.useLayoutEffect)(()=>{n||(o.current===null?r(cW(t)):o.current!==t&&r(dW({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,_x.useLayoutEffect)(()=>()=>{o.current&&(r(pW(o.current)),o.current=null)},[r]),null}var Vc=Z(Q());function Hg(e){var t=e.legendPayload,r=jt(),n=Ar(),o=(0,Vc.useRef)(null);return(0,Vc.useLayoutEffect)(()=>{n||(o.current===null?r(VO(t)):o.current!==t&&r(GO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Vc.useLayoutEffect)(()=>()=>{o.current&&(r(YO(o.current)),o.current=null)},[r]),null}function Cq(e){var t=e.legendPayload,r=jt(),n=$e(Bt),o=(0,Vc.useRef)(null);return(0,Vc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(VO(t)):o.current!==t&&r(GO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Vc.useLayoutEffect)(()=>()=>{o.current&&(r(YO(o.current)),o.current=null)},[r]),null}var Nq=Z(Q()),Ex=Z(Q());function Rhe(e,t){return nye(e)||rye(e,t)||tye(e,t)||eye()}function eye(){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 tye(e,t){if(e){if(typeof e=="string")return Aq(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)?Aq(e,t):void 0}}function Aq(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 n5(n,t)}function aye(e,t){var r=t.map((n,o)=>e[o]);return n5(r,t)}function iye(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=Rhe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return n5(a,t,i)}function Ax(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Ip?oye(e,t):r===Cx?aye(e,t):sye(e,t,r)}var qg=Z(Q());function X_(e,t){var r=(0,qg.useRef)(e),n=(0,qg.useRef)(t.current),o=(0,qg.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,qg.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 lye(e,t){return pye(e)||dye(e,t)||cye(e,t)||uye()}function uye(){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 cye(e,t){if(e){if(typeof e=="string")return Eq(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)?Eq(e,t):void 0}}function Eq(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,Ex.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function Yc(e){var t,r=e.animationInput,n=e.animationIdPrefix,o=e.items,a=e.previousItemsRef,i=e.isAnimationActive,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.onAnimationStart,d=e.onAnimationEnd,p=e.animationInterpolateFn,f=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,x=e.layout,h=HS(r,n),g=X_(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,b=Ax(v,o,f??Ip);return Nq.createElement(WS,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},k=>{var S=v==null,w=o==null?o:p(b,k,x),_=m?m(k):k>0;return g.syncStepValue(w,k,_),w==null?null:y(w,k,S)})}var Pq=Z(Q()),a5=Z(Q());var Z_=Z(Q());var o5;function fye(e,t){return yye(e)||hye(e,t)||gye(e,t)||mye()}function mye(){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 gye(e,t){if(e){if(typeof e=="string")return Tq(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)?Tq(e,t):void 0}}function Tq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=Z_.useState(()=>tu("uid-")),t=fye(e,1),r=t[0];return r},J_=(o5=Z_.useId)!==null&&o5!==void 0?o5:vye;function Oq(e,t){var r=J_();return t||(e?"".concat(e,"-").concat(r):r)}var xye=(0,a5.createContext)(void 0),Xc=e=>{var t=e.id,r=e.type,n=e.children,o=Oq("recharts-".concat(r),t);return Pq.createElement(xye.Provider,{value:o},n(o))};var Ls=Z(Q());var bye={cartesianItems:[],polarItems:[]},Mq=Cr({name:"graphicalItems",initialState:bye,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Zt(t.payload))},prepare:Ir()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).cartesianItems.indexOf(Zt(n));a>-1&&(e.cartesianItems[a]=Zt(o))},prepare:Ir()},removeCartesianGraphicalItem:{reducer(e,t){var r=ea(e).cartesianItems.indexOf(Zt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:Ir()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Zt(t.payload))},prepare:Ir()},removePolarGraphicalItem:{reducer(e,t){var r=ea(e).polarItems.indexOf(Zt(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:Ir()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).polarItems.indexOf(Zt(n));a>-1&&(e.polarItems[a]=Zt(o))},prepare:Ir()}}}),Kg=Mq.actions,Iq=Kg.addCartesianGraphicalItem,Dq=Kg.replaceCartesianGraphicalItem,jq=Kg.removeCartesianGraphicalItem,$q=Kg.addPolarGraphicalItem,Lq=Kg.removePolarGraphicalItem,zq=Kg.replacePolarGraphicalItem;var Bq=Mq.reducer;var wye=e=>{var t=jt(),r=(0,Ls.useRef)(null);return(0,Ls.useLayoutEffect)(()=>{r.current===null?t(Iq(e)):r.current!==e&&t(Dq({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ls.useLayoutEffect)(()=>()=>{r.current&&(t(jq(r.current)),r.current=null)},[t]),null},Vg=(0,Ls.memo)(wye),Sye=e=>{var t=jt(),r=(0,Ls.useRef)(null);return(0,Ls.useLayoutEffect)(()=>{r.current===null?t($q(e)):r.current!==e&&t(zq({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ls.useLayoutEffect)(()=>()=>{r.current&&(t(Lq(r.current)),r.current=null)},[t]),null},Fq=(0,Ls.memo)(Sye);var kye=["key"],_ye=["onMouseEnter","onClick","onMouseLeave"],Cye=["id"],Aye=["id"];function Dp(){return Dp=Object.assign?Object.assign.bind():function(e){for(var t=1;txx(e.children,vu),[e.children]),r=$e(n=>dq(n,e.id,t));return r==null?null:Gt.createElement(Cq,{legendPayload:r})}function Mye(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Gt.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 Iye=Gt.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=Mye(p),m=n.map(x=>{var h=x.tooltipPayload;return f==null||h==null?h:h.map(g=>Nn(Nn({},g),{},{color:f,fill:f}))}),y={dataDefinedOnItem:m,getPosition:x=>{var h;return(h=n[Number(x)])===null||h===void 0?void 0:h.tooltipPosition},settings:{stroke:o,strokeWidth:a,fill:i,dataKey:t,nameKey:r,name:xi(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Gt.createElement(Kc,{tooltipEntrySettings:y})}),Dye=(e,t)=>e>t?"start":etypeof t=="function"?Dn(t(e),r,r*.8):Dn(t,r,r*.8),$ye=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=GS(a,i),l=o+Dn(e.cx,a,a/2),u=n+Dn(e.cy,i,i/2),c=Dn(e.innerRadius,s,0),d=jye(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}},Lye=(e,t)=>{var r=Zr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},zye=(e,t)=>{if(Gt.isValidElement(e))return Gt.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=Q_(t,kye);return Gt.createElement(ll,Dp({},o,{type:"linear",className:r}))},Bye=(e,t,r)=>{if(Gt.isValidElement(e))return Gt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Gt.isValidElement(n)))return n;var o=bt("recharts-pie-label-text",z_(e));return Gt.createElement(Op,Dp({},t,{alignmentBaseline:"middle",className:o}),n)};function Fye(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=hn(r),l=mi(o),u=mi(a),c=typeof o=="object"&&"offsetRadius"in o&&typeof o.offsetRadius=="number"&&o.offsetRadius||20,d=t.map((p,f)=>{var m=(p.startAngle+p.endAngle)/2,y=an(p.cx,p.cy,p.outerRadius+c,m),x=Nn(Nn(Nn(Nn({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:Dye(y.x,p.cx)},y),h=Nn(Nn(Nn(Nn({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[an(p.cx,p.cy,p.outerRadius,m),y],key:"line"});return Gt.createElement(sn,{zIndex:ir.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Gt.createElement(br,null,a&&zye(a,h),Bye(o,x,Ht(p,i))))});return Gt.createElement(br,{className:"recharts-pie-labels"},d)}function Uye(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Gt.createElement(Hc,{label:o}):Gt.createElement(Fye,{sectors:t,props:r,showLabels:n})}function Wye(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=$e(rs),d=$e(Pg),p=$e(v_),f=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,x=Q_(o,_ye),h=wx(f,o.dataKey,i),g=Sx(y),v=kx(m,o.dataKey,i);return t==null||t.length===0?null:Gt.createElement(Gt.Fragment,null,t.map((b,k)=>{if(b?.startAngle===0&&b?.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=Nn(Nn({},b),{},{stroke:b.stroke,tabIndex:-1,index:k,isActive:w,animationElapsedTime:s,isAnimating:l,isEntrance:u,[CS]:k,[AS]:i});return Gt.createElement(br,Dp({key:"sector-".concat(b?.startAngle,"-").concat(b?.endAngle,"-").concat(b.midAngle,"-").concat(k),tabIndex:-1,className:"recharts-pie-sector"},nu(x,b,k),{onMouseEnter:h(b,k),onMouseLeave:g(b,k),onClick:v(b,k)}),Gt.createElement(qc,{option:A??a,DefaultShape:Wq,shapeProps:C}))}))}function fq(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=Lye(s,l),m=Math.abs(f),y=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,x=n.filter(_=>Ht(_,u,0)!==0).length,h=(m>=360?x:x-1)*y,g=n.reduce((_,A)=>{var C=Ht(A,u,0);return _+(je(C)?C:0)},0),v=p>0&&g>0&&n.some(_=>{var A=Ht(_,u,0),C=(je(A)?A:0)/g;return A!==0&&C*m0){var w;S=n.map((_,A)=>{var C=Ht(_,u,0),E=Ht(_,c,A),I=$ye(r,a,_),J=(je(C)?C:0)/g,$,U=Nn(Nn({},_),o&&o[A]&&o[A].props),N=U!=null&&"fill"in U&&typeof U.fill=="string"?U.fill:r.fill;A?$=w.endAngle+Zr(f)*y*(C!==0?1:0):$=s;var T=$+Zr(f)*((C!==0?b:0)+J*k),D=($+T)/2,O=(I.innerRadius+I.outerRadius)/2,j=[{name:E,value:C,payload:U,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],M=an(I.cx,I.cy,O,D);return w=Nn(Nn(Nn(Nn({},r.presentationProps),{},{percent:J,cornerRadius:typeof i=="string"?parseFloat(i):i,name:E,tooltipPayload:j,midAngle:D,middleRadius:O,tooltipPosition:M},U),I),{},{value:C,dataKey:u,startAngle:$,endAngle:T,payload:U,paddingAngle:C!==0?Zr(f)*y:0}),w})}return S}function Hye(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,Gg.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 Gt.createElement(rq,{value:t?o:void 0},n)}var qye=(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?Uo(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=_r(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=Nn(Nn({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=_r(0,a.next.endAngle-a.next.startAngle,t),d=Nn(Nn({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function Kye(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=Gc(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,y=p.handleAnimationEnd,x=O7();if(x==null)return null;var h=l[0];return Gt.createElement(Hye,{showLabels:!f,sectors:l},Gt.createElement(Yc,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:y,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:x},(g,v,b)=>Gt.createElement(br,null,Gt.createElement(Wye,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:f||v<1,isEntrance:b}))),Gt.createElement(Uye,{showLabels:!f,sectors:l,props:a}),Gt.createElement(JH,{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 Vye={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:qye,animationMatchBy:Cx,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:Wq,startAngle:0,stroke:"#fff",zIndex:ir.area};function Gye(e){var t=e.id,r=Q_(e,Cye),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,Gg.useMemo)(()=>xx(e.children,vu),[e.children]),s=$e(c=>pq(c,t,i)),l=(0,Gg.useRef)(null),u=bt("recharts-pie",o);return n||s==null?(l.current=null,Gt.createElement(br,{tabIndex:a,className:u})):Gt.createElement(sn,{zIndex:e.zIndex},Gt.createElement(Iye,{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}),Gt.createElement(br,{tabIndex:a,className:u},Gt.createElement(Kye,{props:Nn(Nn({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function Yye(e){var t=nr(e,Vye),r=t.id,n=Q_(t,Aye),o=hn(n);return Gt.createElement(Xc,{id:r,type:"pie"},a=>Gt.createElement(Gt.Fragment,null,Gt.createElement(Fq,{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}),Gt.createElement(Pye,Dp({},n,{id:a})),Gt.createElement(Gye,Dp({},n,{id:a}))))}var R_=Yye;R_.displayName="Pie";var Nx=Z(Q()),tC=Z(Q());var Xye=["points"];function Hq(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 i5(e){for(var t=1;t{var h,g,v=i5(i5(i5({r:3},i),p),{},{index:x,cx:(h=y.x)!==null&&h!==void 0?h:void 0,cy:(g=y.y)!==null&&g!==void 0?g:void 0,dataKey:a,value:y.value,payload:y.payload,points:t});return Nx.createElement(tve,{key:"dot-".concat(x),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),Nx.createElement(sn,{zIndex:c},Nx.createElement(br,eC({className:n},m),f))}var Tx=Z(Q()),oC=Z(Q());function qq(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 nC(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var rK=se([tK,qo,Ko],(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 Zc=()=>$e(rK),nK=()=>$e(NW);function oK(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 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=l5(l5(l5({},s),mi(o)),Bm(o)),u;return(0,oC.isValidElement)(o)?u=(0,oC.cloneElement)(o,l):typeof o=="function"?u=o(l):u=Tx.createElement(D_,l),Tx.createElement(br,{className:"recharts-active-dot",clipPath:i},u)};function Ox(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?ir.activeDot:i,l=$e(rs),u=nK();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return ar(c)?null:Tx.createElement(sn,{zIndex:s},Tx.createElement(cve,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function dve(e,t){return gve(e)||mve(e,t)||fve(e,t)||pve()}function pve(){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 fve(e,t){if(e){if(typeof e=="string")return aK(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)?aK(e,t):void 0}}function aK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!ar(n))return Dn(n,t,0)},sK=(e,t,r)=>{var n={},o=e.filter(pp),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=dve(u,2),p=d[0],f=d[1],m=f.map(x=>x.dataKey),y=iK(t,r,(c=f[0])===null||c===void 0?void 0:c.barSize);return{stackId:p,dataKeys:m,barSize:y}}),l=a.map(u=>{var c=[u.dataKey].filter(p=>p!=null),d=iK(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function lK(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 aC(e){for(var t=1;tg+(v.barSize||0),0);p+=(i-1)*s,p>=r&&(p-=(i-1)*s,s=0),p>=r&&d>0&&(c=!0,d*=.9,p=i*d);var f=Math.round((r-p)/2),m={offset:f-s,size:0};l=n.reduce((g,v)=>{var b,k={stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(b=v.barSize)!==null&&b!==void 0?b:0}},S=[...g,k];return m=k.position,S},u)}else{var y=Dn(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var x=(r-2*y-(i-1)*s)/i;x>1&&(x=Math.round(x));var h=Ot(o)?Math.min(x,o):x;l=n.reduce((g,v,b)=>[...g,{stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:y+i*(x-h)/2+(h+s)*b,size:h}}],u)}return l}}var uK=(e,t,r,n,o,a,i)=>{var s=ar(i)?t:i,l=xve(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>aC(aC({},u),{},{position:aC(aC({},u.position),{},{offset:u.position.offset-o/2})}))),l};var cK=(e,t)=>{var r=Nc(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 dK=(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 pK(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Ot(e.zIndex)?e.zIndex:t}var fK=Z(Q());var iC=e=>{var t=e.chartData,r=jt(),n=Ar();return(0,fK.useEffect)(()=>n?()=>{}:(r(GM(t)),()=>{r(GM(void 0))}),[t,r,n]),null};var mK={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},gK=Cr({name:"brush",initialState:mK,reducers:{setBrushSettings(e,t){return t.payload==null?mK:t.payload}}}),xUe=gK.actions.setBrushSettings;var hK=gK.reducer;function bve(e){return(e%180+180)%180}var yK=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=bve(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=ea(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=ea(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(Zt(t.payload))},removeLine:(e,t)=>{var r=ea(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Yg=vK.actions,_Ue=Yg.addDot,CUe=Yg.removeDot,AUe=Yg.addArea,EUe=Yg.removeArea,NUe=Yg.addLine,TUe=Yg.removeLine;var xK=vK.reducer;var Px=Z(Q()),Mx=Z(Q());function Sve(e,t){return Ave(e)||Cve(e,t)||_ve(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 _ve(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);r{var t=e.children,r=(0,Mx.useState)("".concat(tu("recharts"),"-clip")),n=Sve(r,1),o=n[0],a=Zc();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return Px.createElement(Eve.Provider,{value:o},Px.createElement("defs",null,Px.createElement("clipPath",{id:o},Px.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var xn=Z(Q()),ca=Z(Q());function SK(){}function u5(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 kK(e,t,r){return Ix(e,t,void 0,void 0,void 0,void 0,r)}function Ix(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 Dx(e,t,a,i)}return Dx(e,t,a,i)}function Dx(e,t,r,n){if(Object.is(e,t))return!0;let o=ou(e),a=ou(t);if(o==="[object Arguments]"&&(o=Hm),a==="[object Arguments]"&&(a=Hm),o!==a)return!1;switch(o){case Fm:return e.toString()===t.toString();case Um:return kc(e.valueOf(),t.valueOf());case Wm:case _w:case kw:return Object.is(e.valueOf(),t.valueOf());case ww:return e.source===t.source&&e.flags===t.flags;case Cz: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 Cw:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!Ix(u,t.get(l),l,e,t,r,n))return!1;return!0;case Aw:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cIx(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case Ew:case Ow:case Pw:case Mw:case Iw:case Ez:case Dw:case jw:case $w:case Nz:case Lw:case zw:if(fv(e)!==fv(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 AK(e,t){return sC(e,t+1)}function EK(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:sC(n,u)};var y=l,x,h=()=>(x===void 0&&(x=r(m,y)),x),g=m.coordinate,v=l===0||jp(e,g,h,c,s);v||(l=0,c=i,u+=1),v&&(c=g+e*(h()/2+o),l+=u)},p;u<=a.length;)if(p=d(),p)return p.v;return[]}function NK(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 b=n[y];if(b==null)return 0;var k=y,S,w=()=>(S===void 0&&(S=r(b,k)),S),_=b.coordinate,A=y===c||jp(e,_,w,d,l);if(!A)return p=!1,1;A&&(d=_+e*(w()/2+o))},m,y=c;y(y===void 0&&(y=r(f,p)),y);if(p===i-1){var h=e*(m.coordinate+e*x()/2-l);a[p]=m=ua(ua({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=ua(ua({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=jp(e,m.tickCoord,x,s,l);g&&(l=m.tickCoord-e*(x()/2+o),a[p]=ua(ua({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function Mve(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=ua(ua({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=jp(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=ua(ua({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,y=function(g){var v=i[g];if(v==null)return 1;var b=v,k,S=()=>(k===void 0&&(k=r(v,g)),k);if(g===0){var w=e*(b.coordinate-e*S()/2-l);i[g]=b=ua(ua({},b),{},{tickCoord:w<0?b.coordinate-w*e:b.coordinate})}else i[g]=b=ua(ua({},b),{},{tickCoord:b.coordinate});if(b.tickCoord!=null){var _=jp(e,b.tickCoord,S,l,u);_&&(l=b.tickCoord+e*(S()/2+o),i[g]=ua(ua({},b),{},{isShow:!0}))}},x=0;x{var w=typeof u=="function"?u(k.value,S):k.value;return m==="width"?_K(Tp(w,{fontSize:t,letterSpacing:r}),y,d):Tp(w,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?Zr(g.coordinate-h.coordinate):1,b=CK(a,v,m);return l==="equidistantPreserveStart"?EK(v,b,x,o,i):l==="equidistantPreserveEnd"?NK(v,b,x,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=Mve(v,b,x,o,i,l==="preserveStartEnd"):f=Pve(v,b,x,o,i),f.filter(k=>k.isShow))}var OK=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 PK=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 Ive={xAxis:{},yAxis:{}},MK=Cr({name:"renderedTicks",initialState:Ive,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Zt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),IK=MK.actions,DK=IK.setRenderedTicks,jK=IK.removeRenderedTicks;var $K=MK.reducer;var Dve=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function LK(e,t){return zve(e)||Lve(e,t)||$ve(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 $ve(e,t){if(e){if(typeof e=="string")return zK(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)?zK(e,t):void 0}}function zK(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&&c5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(DK({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,ca.useEffect)(()=>n==null||r==null?Sa:()=>{o(jK({axisId:n,axisType:r}))},[o,n,r]),null}var Zve=(0,ca.forwardRef)((e,t)=>{var r=e.ticks,n=r===void 0?[]:r,o=e.tick,a=e.tickLine,i=e.stroke,s=e.tickFormatter,l=e.unit,u=e.padding,c=e.tickTextProps,d=e.orientation,p=e.mirror,f=e.x,m=e.y,y=e.width,x=e.height,h=e.tickSize,g=e.tickMargin,v=e.fontSize,b=e.letterSpacing,k=e.getTicksConfig,S=e.events,w=e.axisType,_=e.axisId,A=jx(Gn(Gn({},k),{},{ticks:n}),v,b),C=hn(k),E=mi(o),I=P_(C.textAnchor)?C.textAnchor:Vve(d,p),J=Gve(d,p),$={};typeof a=="object"&&($=a);var U=Gn(Gn({},C),{},{fill:"none"},$),N=A.map(O=>Gn({entry:O},Kve(O,f,m,y,x,d,h,p,g))),T=N.map(O=>{var j=O.entry,M=O.line;return xn.createElement(br,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(j.value,"-").concat(j.coordinate,"-").concat(j.tickCoord)},a&&xn.createElement("line",$p({},U,M,{className:bt("recharts-cartesian-axis-tick-line",Uo(a,"className"))})))}),D=N.map((O,j)=>{var M,H,G=O.entry,z=O.tick,V=Gn(Gn(Gn(Gn({verticalAnchor:J},C),{},{textAnchor:I,stroke:"none",fill:i},z),{},{index:j,payload:G,visibleTicksCount:A.length,tickFormatter:s,padding:u},c),{},{angle:(M=(H=c?.angle)!==null&&H!==void 0?H:C.angle)!==null&&M!==void 0?M:0}),K=Gn(Gn({},V),E);return xn.createElement(br,$p({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(G.value,"-").concat(G.coordinate,"-").concat(G.tickCoord)},nu(S,G,j)),o&&xn.createElement(Yve,{option:o,tickProps:K,value:"".concat(typeof s=="function"?s(G.value,j):G.value).concat(l||"")}))});return xn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(w,"-ticks")},xn.createElement(Xve,{ticks:A,axisId:_,axisType:w}),D.length>0&&xn.createElement(sn,{zIndex:ir.label},xn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(w,"-tick-labels"),ref:t},D)),T.length>0&&xn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(w,"-tick-lines")},T))}),Jve=(0,ca.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=Bve(e,Dve),d=(0,ca.useState)(""),p=LK(d,2),f=p[0],m=p[1],y=(0,ca.useState)(""),x=LK(y,2),h=x[0],g=x[1],v=(0,ca.useRef)(null);(0,ca.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var k;return OK({ticks:v.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 PK({ticks:v.current,label:(k=e.labelRef)===null||k===void 0?void 0:k.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var b=(0,ca.useCallback)(k=>{if(k){var S=k.getElementsByClassName("recharts-cartesian-axis-tick-value");v.current=S;var w=S[0];if(w){var _=window.getComputedStyle(w),A=_.fontSize,C=_.letterSpacing;(A!==f||C!==h)&&(m(A),g(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:xn.createElement(sn,{zIndex:e.zIndex},xn.createElement(br,{className:bt("recharts-cartesian-axis",a)},xn.createElement(qve,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:hn(e)}),xn.createElement(Zve,{ref:b,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}),xn.createElement(YH,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},xn.createElement(QH,{label:e.label,labelRef:e.labelRef}),e.children)))}),$x=xn.forwardRef((e,t)=>{var r=nr(e,as);return xn.createElement(Jve,$p({},r,{ref:t}))});$x.displayName="CartesianAxis";var Yn=Z(Q());var lC=Z(Q());var FK={grid:{stroke:"#ccc",fill:"none"}};var UK=(0,lC.createContext)(FK),IWe=UK.Provider,WK=()=>(0,lC.useContext)(UK);var Qve=["x1","y1","x2","y2","key"],Rve=["offset"],exe=["xAxisId","yAxisId"],txe=["xAxisId","yAxisId"];function HK(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 da(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 Yn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function qK(e){var t=e.option,r=e.lineItemProps,n;if(Yn.isValidElement(t))n=Yn.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=uC(r,Qve),d=(o=hn(c))!==null&&o!==void 0?o:{},p=d.offset,f=uC(d,Rve),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=Yn.createElement("line",Lp({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function sxe(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=uC(e,exe),u=a.map((c,d)=>{var p=da(da({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return Yn.createElement(qK,{key:"line-".concat(d),option:o,lineItemProps:p})});return Yn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function lxe(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=uC(e,txe),u=a.map((c,d)=>{var p=da(da({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return Yn.createElement(qK,{option:o,lineItemProps:p,key:"line-".concat(d)})});return Yn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function uxe(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.horizontalPoints,l=e.horizontal,u=l===void 0?!0:l;if(!u||!t||!t.length||s==null)return null;var c=s.map(p=>Math.round(p+o-o)).sort((p,f)=>p-f);o!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,x=y?o+i-p:m-p;if(x<=0)return null;var h=f%t.length;return Yn.createElement("rect",{key:"react-".concat(f),y:p,x:n,height:x,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return Yn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function cxe(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,o=e.fillOpacity,a=e.x,i=e.y,s=e.width,l=e.height,u=e.verticalPoints;if(!r||!n||!n.length)return null;var c=u.map(p=>Math.round(p+a-a)).sort((p,f)=>p-f);a!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,x=y?a+s-p:m-p;if(x<=0)return null;var h=f%n.length;return Yn.createElement("rect",{key:"react-".concat(f),x:p,y:i,width:x,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return Yn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var dxe=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return LO(jx(da(da(da({},as),r),{},{ticks:zO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},pxe=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return LO(jx(da(da(da({},as),r),{},{ticks:zO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},fxe={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:ir.grid};function Su(e){var t,r,n,o,a,i,s=tg(),l=rg(),u=PS(),c=da(da({},nr(e,fxe)),{},{x:je(e.x)?e.x:u.left,y:je(e.y)?e.y:u.top,width:je(e.width)?e.width:u.width,height:je(e.height)?e.height:u.height}),d=c.xAxisId,p=c.yAxisId,f=c.x,m=c.y,y=c.width,x=c.height,h=c.syncWithTicks,g=c.horizontalValues,v=c.verticalValues,b=Ar(),k=$e(T=>_M(T,"xAxis",d,b)),S=$e(T=>_M(T,"yAxis",p,b)),w=WK(),_={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(!qa(y)||!qa(x)||!je(f)||!je(m))return null;var A=c.verticalCoordinatesGenerator||dxe,C=c.horizontalCoordinatesGenerator||pxe,E=c.horizontalPoints,I=c.verticalPoints;if((!E||!E.length)&&typeof C=="function"){var J=g&&g.length,$=C({yAxis:S?da(da({},S),{},{ticks:J?g:S.ticks}):void 0,width:s??y,height:l??x,offset:u},J?!0:h);eg(Array.isArray($),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof $,"]")),Array.isArray($)&&(E=$)}if((!I||!I.length)&&typeof A=="function"){var U=v&&v.length,N=A({xAxis:k?da(da({},k),{},{ticks:U?v:k.ticks}):void 0,width:s??y,height:l??x,offset:u},U?!0:h);eg(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(I=N)}return Yn.createElement(sn,{zIndex:c.zIndex},Yn.createElement("g",{className:"recharts-cartesian-grid"},Yn.createElement(ixe,{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}),Yn.createElement(uxe,Lp({},c,{horizontalPoints:E})),Yn.createElement(cxe,Lp({},c,{verticalPoints:I})),Yn.createElement(sxe,Lp({},c,_,{offset:u,horizontalPoints:E,xAxis:k,yAxis:S})),Yn.createElement(lxe,Lp({},c,_,{offset:u,verticalPoints:I,xAxis:k,yAxis:S}))))}Su.displayName="CartesianGrid";var Sr=Z(Q()),ku=Z(Q());var KK=Z(Q());var mxe=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function d5(){return d5=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return VK(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[...xxe(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function wxe(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return bxe(r,t,n)}return VK(t,r)}function GK(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=gxe(e,mxe),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=yxe((c=d?.current)!==null&&c!==void 0?c:null);u=wxe(a,p,o)}else a!=null&&(u=String(a));return KK.createElement(ll,d5({},s,{connectNulls:l,strokeDasharray:u}))}var zp=Z(Q());function YK(e){var t=(0,zp.useRef)(0),r=(0,zp.useRef)(0),n=(0,zp.useRef)(!1),o=(0,zp.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,zp.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(Ki(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 JK=Z(Q()),Lx=Z(Q());var Sxe={},XK=Cr({name:"errorBars",initialState:Sxe,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))}}}),p5=XK.actions,rHe=p5.addErrorBar,nHe=p5.replaceErrorBar,oHe=p5.removeErrorBar;var ZK=XK.reducer;var kxe=["children"];function _xe(e,t){if(e==null)return{};var r,n,o=Cxe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},Exe=(0,Lx.createContext)(Axe);function cC(e){var t=e.children,r=_xe(e,kxe);return JK.createElement(Exe.Provider,{value:r},t)}var f5=Z(Q());function Bp(e,t){var r,n,o=$e(u=>gl(u,e)),a=$e(u=>hl(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:ao.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:io.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function Xg(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=Zc(),a=Bp(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=$e(v=>mM(v,t,!1)),c=$e(v=>gM(v,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-f/2,x=s&&c?Math.min(c[0],c[1]):p-m/2,h=i&&u?Math.abs(u[1]-u[0]):f*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return f5.createElement("clipPath",{id:"clipPath-".concat(n)},f5.createElement("rect",{x:y,y:x,width:h,height:g}))}var QK=(e,t,r,n)=>Ai(e,"xAxis",t,n),RK=(e,t,r,n)=>Ci(e,"xAxis",t,n),eV=(e,t,r,n)=>Ai(e,"yAxis",r,n),tV=(e,t,r,n)=>Ci(e,"yAxis",r,n),Nxe=se([Bt,QK,eV,RK,tV],(e,t,r,n,o)=>sa(e,"xAxis")?Zi(t,n,!1):Zi(r,o,!1)),Txe=(e,t,r,n,o)=>o;function Oxe(e){return e.type==="line"}var Pxe=se([jc,Txe],(e,t)=>e.filter(Oxe).find(r=>r.id===t)),rV=se([Bt,QK,eV,RK,tV,Pxe,Nxe,lp],(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 nV({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function dC(e){var t=mi(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 Mxe=["id"],Ixe=["type","layout","connectNulls","needClip","shape","strokeDasharray"],Dxe=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function pC(){return pC=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Uxe=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Fxe(e),n=[];for(var o of e)if(o.status==="matched")n.push(yl(yl({},o.next),{},{x:_r(o.prev.x,o.next.x,t),y:_r(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(yl(yl({},o.next),{},{x:_r(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(yl(yl({},o.prev),{},{x:_r(o.prev.x,i,t),y:o.prev.y}))}return n},h5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Uxe,animationMatchBy:Ip,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:GK,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:ir.line,type:"linear"},Wxe=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:xi(r,t),payload:e}]},Hxe=Sr.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:Sa,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:xi(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return Sr.createElement(Kc,{tooltipEntrySettings:p})});function qxe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=g5(n,Mxe),u=hn(l);return Sr.createElement(rC,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function Kxe(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,ku.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 yl(yl({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return Sr.createElement(Fg,{value:t?o:void 0},r)}function Vxe(e){var t=e.clipPathId,r=e.pathRef,n=e.points,o=e.props,a=e.animationElapsedTime,i=e.isAnimating,s=e.isEntrance,l=e.visibleLength,u=o.type,c=o.layout,d=o.connectNulls,p=o.needClip,f=o.shape,m=o.strokeDasharray,y=g5(o,Ixe),x=yl(yl({},yn(y)),{},{fill:"none",className:"recharts-line-curve",clipPath:p?"url(#clipPath-".concat(t,")"):void 0,points:n,type:u,layout:c,connectNulls:d,strokeDasharray:m??o.strokeDasharray,pathRef:r,animationElapsedTime:a,isAnimating:i,isEntrance:o.animateNewValues?s:!1,visibleLength:l});return Sr.createElement(Sr.Fragment,null,n?.length>1&&Sr.createElement(qc,{option:f,DefaultShape:h5.shape,shapeProps:x}),Sr.createElement(qxe,{points:n,clipPathId:t,props:o}))}function Gxe(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=Bxe(n.current),m=Gc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,x=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=YK(a),b=(0,ku.useCallback)(k=>k>0&&f>0,[f]);return Sr.createElement(Kxe,{points:a,showLabels:g},r.children,Sr.createElement(Yc,{animationInput:a,animationIdPrefix:"recharts-line-",items:a,previousItemsRef:o,isAnimationActive:i,animationBegin:s,animationDuration:l,animationEasing:u,onAnimationStart:x,onAnimationEnd:h,animationInterpolateFn:d,animationMatchBy:c,shouldUpdatePreviousRef:b,layout:p},(k,S,w)=>{var _=y||S<1,A=_?v(S,f):null;return Sr.createElement(Vxe,{props:r,points:k,clipPathId:t,pathRef:n,animationElapsedTime:S,isAnimating:_,isEntrance:w,visibleLength:A})}),Sr.createElement(Hc,{label:r.label}))}function Yxe(e){var t=e.clipPathId,r=e.props,n=(0,ku.useRef)(null),o=(0,ku.useRef)(null);return Sr.createElement(Gxe,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var Xxe=(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:Ht(e.payload,t)}},m5=class extends ku.Component{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.xAxisId,s=t.yAxisId,l=t.top,u=t.left,c=t.width,d=t.height,p=t.id,f=t.needClip,m=t.zIndex;if(r)return null;var y=bt("recharts-line",a),x=p,h=dC(n),g=h.r,v=h.strokeWidth,b=Ug(n),k=g*2+v,S=f?"url(#clipPath-".concat(b?"":"dots-").concat(x,")"):void 0;return Sr.createElement(sn,{zIndex:m},Sr.createElement(br,{className:y},f&&Sr.createElement("defs",null,Sr.createElement(Xg,{clipPathId:x,xAxisId:i,yAxisId:s}),!b&&Sr.createElement("clipPath",{id:"clipPath-dots-".concat(x)},Sr.createElement("rect",{x:u-k/2,y:l-k/2,width:c+k,height:d+k}))),Sr.createElement(cC,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:Xxe,errorBarOffset:0},Sr.createElement(Yxe,{props:this.props,clipPathId:x}))),Sr.createElement(Ox,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:S}))}};function Zxe(e){var t=nr(e,h5),r=t.activeDot,n=t.animateNewValues,o=t.animationBegin,a=t.animationDuration,i=t.animationEasing,s=t.connectNulls,l=t.dot,u=t.hide,c=t.isAnimationActive,d=t.label,p=t.legendType,f=t.xAxisId,m=t.yAxisId,y=t.id,x=g5(t,Dxe),h=Bp(f,m),g=h.needClip,v=Zc(),b=Va(),k=Ar(),S=$e(E=>rV(E,f,m,k,y));if(b!=="horizontal"&&b!=="vertical"||S==null||v==null)return null;var w=v.height,_=v.width,A=v.x,C=v.y;return Sr.createElement(m5,pC({},x,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:p,xAxisId:f,yAxisId:m,points:S,layout:b,height:w,width:_,left:A,top:C,needClip:g}))}function nV(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=Ht(u,i);if(t==="horizontal"){var p=Ym({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=ar(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=ar(d)?null:r.scale.map(d),y=Ym({axis:n,ticks:a,bandSize:s,entry:u,index:c});return m==null||y==null?null:{x:m,y,value:d,payload:u}}).filter(Boolean)}function Jxe(e){var t=nr(e,h5),r=Ar();return Sr.createElement(Xc,{id:t.id,type:"line"},n=>Sr.createElement(Sr.Fragment,null,Sr.createElement(Hg,{legendPayload:Wxe(t)}),Sr.createElement(Hxe,{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}),Sr.createElement(Vg,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),Sr.createElement(Zxe,pC({},t,{id:n}))))}var fC=Sr.memo(Jxe,Ga);fC.displayName="Line";var hr=Z(Q()),Fp=Z(Q());function is(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:s5}function ss(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:s5}var aV=(e,t,r)=>Ai(e,"xAxis",is(e,t),r),iV=(e,t,r)=>Ci(e,"xAxis",is(e,t),r),sV=(e,t,r)=>Ai(e,"yAxis",ss(e,t),r),lV=(e,t,r)=>Ci(e,"yAxis",ss(e,t),r),Qxe=se([Bt,aV,sV,iV,lV],(e,t,r,n,o)=>sa(e,"xAxis")?Zi(t,n,!1):Zi(r,o,!1)),Rxe=(e,t)=>t,y5=se([jc,Rxe],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),uV=e=>{var t=Bt(e),r=sa(t,"xAxis");return r?"yAxis":"xAxis"},e0e=(e,t)=>{var r=uV(e);return r==="yAxis"?ss(e,t):is(e,t)},cV=(e,t,r)=>Eg(e,uV(e),e0e(e,t),r),t0e=se([y5,cV],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=Nc(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]])}}}),r0e=se([y5,cV],(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(Ao)}}),dV=se([Bt,aV,sV,iV,lV,t0e,RS,Qxe,y5,hF,r0e],(e,t,r,n,o,a,i,s,l,u,c)=>{var d=i.chartData,p=i.dataStartIndex,f=i.dataEndIndex;if(!(l==null||e!=="horizontal"&&e!=="vertical"||t==null||r==null||n==null||o==null||n.length===0||o.length===0||s==null)){var m=l.data,y;if(m&&m.length>0?y=m:y=d?.slice(p,f+1),y!=null)return pV({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataStartIndex:p,areaSettings:l,stackedData:a,displayedData:y,chartBaseValue:u,bandSize:s,stackDataKeys:c})}});var pa=Z(Q());var n0e=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],o0e=["id","baseLine"];function zx(){return zx=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return je(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),je(c)?pa.createElement("rect",{x:sd.x||0));return je(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),je(c)?pa.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Zg(Zg({},r.next),{},{x:_r(r.prev.x,r.next.x,t),y:_r(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),yV={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Ip,animationInterpolateFn:g0e,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:mV,xAxisId:0,yAxisId:0,zIndex:ir.area};function gC(e,t){return e&&e!=="none"?e:t}var h0e=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:xi(r,t),payload:e}]},y0e=hr.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:Sa,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:xi(i,t),hide:s,type:c,color:gC(n,a),unit:l,formatter:u,graphicalItemId:d}};return hr.createElement(Kc,{tooltipEntrySettings:p})});function v0e(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=hn(n);return hr.createElement(rC,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function x0e(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 Zg(Zg({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return hr.createElement(Fg,{value:t?o:void 0},r)}function b0e(e){var t=e.points,r=e.baseLine,n=e.needClip,o=e.clipPathId,a=e.props,i=e.animationElapsedTime,s=e.isAnimating,l=e.isEntrance,u=a.layout,c=a.type,d=a.stroke,p=a.connectNulls,f=a.isRange,m=a.shape,y=a.id,x=hV(a,u0e),h=yn(x),g=Zg(Zg({},h),{},{id:y,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,animationElapsedTime:i,isAnimating:s,isEntrance:l});return hr.createElement(hr.Fragment,null,t?.length>1&&hr.createElement(br,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},hr.createElement(qc,{option:m,DefaultShape:yV.shape,shapeProps:g})),hr.createElement(v0e,{points:t,props:x,clipPathId:o}))}function w0e(e,t,r){if(je(e)){var n=je(t)?t:void 0;return _r(n,e,r)}if(ar(e)||Wo(e)){var o=je(t)?t:void 0;return _r(o,0,r)}return e}function S0e(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,Fp.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=X_(m,a),x=ng(),h=Gc(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,v=h.handleAnimationStart,b=h.handleAnimationEnd,k=y.startValue;if(x==null)return null;var S;return Array.isArray(s)&&Array.isArray(k)?S=Ax(k,s,p):Array.isArray(s)?S=Ax(null,s,p):S=null,hr.createElement(Yc,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:b,animationInterpolateFn:f,animationMatchBy:p,layout:x},(w,_,A)=>{var C;return _===1?C=s:Array.isArray(s)?C=f(S,_,x):C=A?s:w0e(s,k,_),y.syncStepValue(C,_),hr.createElement(x0e,{showLabels:!g,points:i},n.children,hr.createElement(b0e,{points:w,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:_,isAnimating:g||_<1,isEntrance:A}),hr.createElement(Hc,{label:n.label}))})}function k0e(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Fp.useRef)(null),a=(0,Fp.useRef)();return hr.createElement(S0e,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var v5=class extends Fp.PureComponent{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.top,s=t.left,l=t.needClip,u=t.xAxisId,c=t.yAxisId,d=t.width,p=t.height,f=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var x=bt("recharts-area",a),h=f,g=dC(n),v=g.r,b=g.strokeWidth,k=Ug(n),S=v*2+b,w=l?"url(#clipPath-".concat(k?"":"dots-").concat(h,")"):void 0;return hr.createElement(sn,{zIndex:y},hr.createElement(br,{className:x},l&&hr.createElement("defs",null,hr.createElement(Xg,{clipPathId:h,xAxisId:u,yAxisId:c}),!k&&hr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},hr.createElement("rect",{x:s-S/2,y:i-S/2,width:d+S,height:p+S}))),hr.createElement(k0e,{needClip:l,clipPathId:h,props:this.props})),hr.createElement(Ox,{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)&&hr.createElement(Ox,{points:m,mainColor:gC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:w}))}};function _0e(e){var t,r=e.activeDot,n=e.animationBegin,o=e.animationDuration,a=e.animationEasing,i=e.connectNulls,s=e.dot,l=e.fill,u=e.fillOpacity,c=e.hide,d=e.isAnimationActive,p=e.legendType,f=e.stroke,m=e.xAxisId,y=e.yAxisId,x=hV(e,c0e),h=Va(),g=x_(),v=Bp(m,y),b=v.needClip,k=Ar(),S=(t=$e(U=>dV(U,e.id,k)))!==null&&t!==void 0?t:{},w=S.points,_=S.isRange,A=S.baseLine,C=Zc();if(h!=="horizontal"&&h!=="vertical"||C==null||g!=="AreaChart"&&g!=="ComposedChart")return null;var E=C.height,I=C.width,J=C.x,$=C.y;return!w||!w.length?null:hr.createElement(v5,mC({},x,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:A,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:E,hide:c,layout:h,isAnimationActive:d,isRange:_,legendType:p,needClip:b,points:w,stroke:f,width:I,left:J,top:$,xAxisId:m,yAxisId:y}))}var C0e=(e,t,r,n,o)=>{var a=r??t;if(je(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 pV(e){var t=e.areaSettings,r=t.connectNulls,n=t.baseValue,o=t.dataKey,a=e.stackedData,i=e.layout,s=e.chartBaseValue,l=e.xAxis,u=e.yAxis,c=e.displayedData,d=e.dataStartIndex,p=e.xAxisTicks,f=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,x=a&&a.length,h=C0e(i,s,n,l,u),g=i==="horizontal",v=!1,b=c.map((S,w)=>{var _,A,C,E;if(x)E=a[d+w];else{var I=Ht(S,o);Array.isArray(I)?(E=I,v=!0):E=[h,I]}var J=(_=(A=E)===null||A===void 0?void 0:A[1])!==null&&_!==void 0?_:null,$=Ht(S,o),U=x&&$==null&&y!=null&&y.length>0&&y.every(D=>Ht(S,D)==null),N=J==null||x&&!r&&$==null||U;if(g){var T;return{x:Ym({axis:l,ticks:p,bandSize:m,entry:S,index:w}),y:N?null:(T=u.scale.map(J))!==null&&T!==void 0?T:null,value:E,payload:S}}return{x:N?null:(C=l.scale.map(J))!==null&&C!==void 0?C:null,y:Ym({axis:u,ticks:f,bandSize:m,entry:S,index:w}),value:E,payload:S}}),k;return x||v?k=b.map(S=>{var w,_=Array.isArray(S.value)?S.value[0]:null;if(g){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=g?u.scale.map(h):l.scale.map(h),{points:b,baseLine:k??0,isRange:v}}function A0e(e){var t=nr(e,yV),r=Ar();return hr.createElement(Xc,{id:t.id,type:"area"},n=>hr.createElement(hr.Fragment,null,hr.createElement(Hg,{legendPayload:h0e(t)}),hr.createElement(y0e,{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}),hr.createElement(Vg,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:_S(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),hr.createElement(_0e,mC({},t,{id:n}))))}var _u=hr.memo(A0e,Ga);_u.displayName="Area";var Rt=Z(Q()),Bs=Z(Q());var xV=Z(Q());var E0e=!0,x5="Invariant failed";function vV(e,t){if(!e){if(E0e)throw new Error(x5);var r=typeof t=="function"?t():t,n=r?"".concat(x5,": ").concat(r):x5;throw new Error(n)}}var N0e=["option"];function T0e(e,t){if(e==null)return{};var r,n,o=O0e(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(je(t))return t;var a=je(n)||ar(n);return a?t(n,o):(a||vV(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var P0e=(e,t,r)=>r,M0e=(e,t)=>t,Bx=se([jc,M0e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),I0e=se([Bx],e=>e?.maxBarSize),D0e=(e,t,r,n)=>n,j0e=se([Bt,jc,is,ss,P0e],(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")),$0e=(e,t,r)=>{var n=Bt(e),o=is(e,t),a=ss(e,t);if(!(o==null||a==null))return n==="horizontal"?Eg(e,"yAxis",a,r):Eg(e,"xAxis",o,r)},L0e=(e,t)=>{var r=Bt(e),n=is(e,t),o=ss(e,t);if(!(n==null||o==null))return r==="horizontal"?wM(e,"xAxis",n):wM(e,"yAxis",o)},z0e=se([j0e,gF,L0e],sK),B0e=(e,t,r)=>{var n,o,a=Bx(e,t);if(a==null)return 0;var i=is(e,t),s=ss(e,t);if(i==null||s==null)return 0;var l=Bt(e),u=cP(e),c=a.maxBarSize,d=ar(c)?u:c,p,f;return l==="horizontal"?(p=Ai(e,"xAxis",i,r),f=Ci(e,"xAxis",i,r)):(p=Ai(e,"yAxis",s,r),f=Ci(e,"yAxis",s,r)),(n=(o=Zi(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},wV=(e,t,r)=>{var n=Bt(e),o=is(e,t),a=ss(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=Ai(e,"xAxis",o,r),s=Ci(e,"xAxis",o,r)):(i=Ai(e,"yAxis",a,r),s=Ci(e,"yAxis",a,r)),Zi(i,s)}},F0e=se([z0e,cP,mF,ok,B0e,wV,I0e],uK),U0e=(e,t,r)=>{var n=is(e,t);if(n!=null)return Ai(e,"xAxis",n,r)},W0e=(e,t,r)=>{var n=ss(e,t);if(n!=null)return Ai(e,"yAxis",n,r)},H0e=(e,t,r)=>{var n=is(e,t);if(n!=null)return Ci(e,"xAxis",n,r)},q0e=(e,t,r)=>{var n=ss(e,t);if(n!=null)return Ci(e,"yAxis",n,r)},K0e=se([F0e,Bx],dK),V0e=se([$0e,Bx],cK),SV=se([Fr,Qm,U0e,W0e,H0e,q0e,K0e,Bt,RS,wV,V0e,Bx,D0e],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=l.chartData,m=l.dataStartIndex,y=l.dataEndIndex;if(!(d==null||i==null||t==null||s!=="horizontal"&&s!=="vertical"||r==null||n==null||o==null||a==null||u==null)){var x=d.data,h;if(x!=null&&x.length>0?h=x:h=f?.slice(m,y+1),h!=null)return kV({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 w5=Z(Q()),Jg=Z(Q());var G0e=["index"];function b5(){return b5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,Jg.useContext)(_V);if(t!=null)return t.stackId;if(e!=null)return _S(e)};var Z0e=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),J0e=e=>{var t=(0,Jg.useContext)(_V);if(t!=null){var r=t.stackId;return"url(#".concat(Z0e(r,e),")")}},S5=e=>{var t=e.index,r=Y0e(e,G0e),n=J0e(t);return w5.createElement(br,b5({className:"recharts-bar-stack-layer",clipPath:n},r))};var Q0e=["onMouseEnter","onMouseLeave","onClick"],R0e=["value","background","tooltipPosition"],ebe=["id"],tbe=["onMouseEnter","onClick","onMouseLeave"];function AV(e,t){return abe(e)||obe(e,t)||nbe(e,t)||rbe()}function rbe(){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 nbe(e,t){if(e){if(typeof e=="string")return EV(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)?EV(e,t):void 0}}function EV(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:xi(r,t),payload:e}]},dbe=Rt.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:Sa,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:xi(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Rt.createElement(Kc,{tooltipEntrySettings:d})});function pbe(e){var t=$e(rs),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=vC(a,Q0e),c=wx(i,n,a.id),d=Sx(s),p=kx(l,n,a.id);if(!o||r==null)return null;var f=mi(o);return Rt.createElement(sn,{zIndex:pK(o,ir.barBackground)},r.map((m,y)=>{var x=m.value,h=m.background,g=m.tooltipPosition,v=vC(m,R0e);if(!h)return null;var b=c(m,m.originalDataIndex),k=d(m,m.originalDataIndex),S=p(m,m.originalDataIndex),w=To(To(To(To(To({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),f),nu(u,m,y)),{},{onMouseEnter:b,onMouseLeave:k,onClick:S,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Rt.createElement(yC,Jc({key:"background-bar-".concat(y)},w))}))}function fbe(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 To(To({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return Rt.createElement(Fg,{value:t?o:void 0},r)}function mbe(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=$e(rs),l=$e(Pg),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,Bs.useState)(!1),p=AV(d,2),f=p[0],m=p[1],y=(0,Bs.useState)(!1),x=AV(y,2),h=x[0],g=x[1];(0,Bs.useEffect)(()=>{var _;return u?(m(!0),_=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(_)}},[u,c]);var v=(0,Bs.useCallback)(()=>{u||m(!1)},[u]),b=u&&h,k=u||f,S;u?r===!0?S=t:S=r:S=t;var w=Rt.createElement(yC,Jc({},n,{name:String(n.name)},o,{isActive:b,option:S,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:v}));return k?Rt.createElement(sn,{zIndex:ir.activeBar},Rt.createElement(S5,{index:o.originalDataIndex},w)):w}function gbe(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Rt.createElement(yC,Jc({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function hbe(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=hn(n))!==null&&t!==void 0?t:{},l=s.id,u=vC(s,ebe),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,x=vC(n,tbe),h=wx(f,d,l),g=Sx(y),v=kx(m,d,l);return r?Rt.createElement(Rt.Fragment,null,r.map((b,k)=>Rt.createElement(S5,Jc({index:b.originalDataIndex,key:"rectangle-".concat(b?.x,"-").concat(b?.y,"-").concat(b?.value,"-").concat(k),className:"recharts-bar-rectangle"},nu(x,b,k),{onMouseEnter:h(b,b.originalDataIndex),onMouseLeave:g(b,b.originalDataIndex),onClick:v(b,b.originalDataIndex)}),p?Rt.createElement(mbe,{shape:c,activeBar:p,baseProps:u,entry:b,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Rt.createElement(gbe,{shape:c,baseProps:u,entry:b,index:k,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var ybe=(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"?[To(To({},n.prev),{},{height:_r(n.prev.height,0,t),y:_r(n.prev.y,n.prev.y+n.prev.height,t)})]:[To(To({},n.prev),{},{width:_r(n.prev.width,0,t)})];if(n.status==="matched")return[To(To({},n.next),{},{x:_r(n.prev.x,n.next.x,t),y:_r(n.prev.y,n.next.y,t),width:_r(n.prev.width,n.next.width,t),height:_r(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[To(To({},o),{},{height:_r(0,o.height,t),y:_r(o.stackedBarStart,o.y,t)})]:[To(To({},o),{},{width:_r(0,o.width,t),x:_r(o.stackedBarStart,o.x,t)})]});function vbe(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=Gc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return Rt.createElement(fbe,{showLabels:!d,rects:n},Rt.createElement(Yc,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:p,onAnimationEnd:f,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,x)=>Rt.createElement(br,null,Rt.createElement(hbe,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:x}))),Rt.createElement(Hc,{label:t.label}),t.children)}function xbe(e){var t=(0,Bs.useRef)(null);return Rt.createElement(vbe,{previousRectanglesRef:t,props:e})}var TV=0,bbe=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Ht(e,t)}},k5=class extends Bs.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 Rt.createElement(br,{className:d,id:c},l&&Rt.createElement("defs",null,Rt.createElement(Xg,{clipPathId:p,xAxisId:i,yAxisId:s})),Rt.createElement(br,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},Rt.createElement(pbe,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Rt.createElement(xbe,this.props)))}},wbe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:ybe,animationMatchBy:Cx,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:TV,shape:hC,xAxisId:0,yAxisId:0,zIndex:ir.bar};function Sbe(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=Bp(t,r),p=d.needClip,f=Va(),m=Ar(),y=xx(e.children,vu),x=$e(v=>SV(v,e.id,m,y));if(f!=="vertical"&&f!=="horizontal")return null;var h,g=x?.[0];return g==null||g.height==null||g.width==null?h=0:h=f==="vertical"?g.height/2:g.width/2,Rt.createElement(cC,{xAxisId:t,yAxisId:r,data:x,dataPointFormatter:bbe,errorBarOffset:h},Rt.createElement(k5,Jc({},e,{layout:f,needClip:p,data:x,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function kV(e){var t=e.layout,r=e.barSettings,n=r.dataKey,o=r.minPointSize,a=r.hasCustomShape,i=e.pos,s=e.bandSize,l=e.xAxis,u=e.yAxis,c=e.xAxisTicks,d=e.yAxisTicks,p=e.stackedData,f=e.displayedData,m=e.offset,y=e.cells,x=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=p?g.scale.domain():null,b=f7({numericAxis:g}),k=g.scale.map(b);return f.map((S,w)=>{var _,A,C,E,I,J;if(p){var $=p[w+h];if($==null)return null;_=d7($,v)}else _=Ht(S,n),Array.isArray(_)||(_=[b,_]);var U=bV(o,TV)(_[1],w);if(t==="horizontal"){var N,T=u.scale.map(_[0]),D=u.scale.map(_[1]);if(T==null||D==null)return null;A=BO({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:S,index:w}),C=(N=D??T)!==null&&N!==void 0?N:void 0,E=i.size;var O=T-D;if(I=Wo(O)?0:O,J={x:A,y:m.top,width:E,height:m.height},Math.abs(U)>0&&Math.abs(I)0&&Math.abs(E)Rt.createElement(Rt.Fragment,null,Rt.createElement(Hg,{legendPayload:cbe(t)}),Rt.createElement(dbe,{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}),Rt.createElement(Vg,{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!==hC}),Rt.createElement(sn,{zIndex:t.zIndex},Rt.createElement(Sbe,Jc({},t,{id:o})))))}var xC=Rt.memo(kbe,Ga);xC.displayName="Bar";var Cu=Z(Q()),ls=Z(Q());var _be=["domain","range"],Cbe=["domain","range"];function OV(e,t){if(e==null)return{};var r,n,o=Abe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return IV(IV({},a),{},{type:i})},[a,i]);return(0,ls.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(Vq(s)):r.current!==s&&t(Gq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,ls.useLayoutEffect)(()=>()=>{r.current&&(t(Yq(r.current)),r.current=null)},[t]),null}var jbe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,ls.useRef)(null),i=(0,ls.useRef)(null),s=$e(Qm),l=Ar(),u=jt(),c="xAxis",d=$e(S=>i_(S,c,t,l)),p=$e(S=>xM(S,t)),f=$e(S=>oW(S,t)),m=$e(S=>ZP(S,t));if((0,ls.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Mp(o)||(0,ls.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedHeight();Math.round(p.height)!==Math.round(w)&&u(Rq({id:t,height:w}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=C5(e,Nbe),v=m.id,b=m.scale,k=C5(m,Tbe);return Cu.createElement($x,_5({},g,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}))},$be={allowDataOverflow:ao.allowDataOverflow,allowDecimals:ao.allowDecimals,allowDuplicatedCategory:ao.allowDuplicatedCategory,angle:ao.angle,axisLine:as.axisLine,height:ao.height,hide:!1,includeHidden:ao.includeHidden,interval:ao.interval,label:!1,minTickGap:ao.minTickGap,mirror:ao.mirror,orientation:ao.orientation,padding:ao.padding,reversed:ao.reversed,scale:ao.scale,tick:ao.tick,tickCount:ao.tickCount,tickLine:as.tickLine,tickSize:as.tickSize,type:ao.type,niceTicks:ao.niceTicks,xAxisId:0},Lbe=e=>{var t=nr(e,$be);return Cu.createElement(Cu.Fragment,null,Cu.createElement(Dbe,{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}),Cu.createElement(jbe,t))},Au=Cu.memo(Lbe,bC);Au.displayName="XAxis";var Eu=Z(Q()),us=Z(Q());var zbe=["type"],Bbe=["dangerouslySetInnerHTML","ticks","scale"],Fbe=["id","scale"];function A5(){return A5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return jV(jV({},a),{},{type:i})},[i,a]);return(0,us.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(Xq(s)):r.current!==s&&t(Zq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,us.useLayoutEffect)(()=>()=>{r.current&&(t(Jq(r.current)),r.current=null)},[t]),null}function Vbe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,us.useRef)(null),i=(0,us.useRef)(null),s=$e(Qm),l=Ar(),u=jt(),c="yAxis",d=$e(S=>bM(S,t)),p=$e(S=>aW(S,t)),f=$e(S=>i_(S,c,t,l)),m=$e(S=>JP(S,t));if((0,us.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Mp(o)||(0,us.isValidElement)(o)||m==null)){var S=a.current;if(S){var w=S.getCalculatedWidth();Math.round(d.width)!==Math.round(w)&&u(Qq({id:t,width:w}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,x=e.ticks,h=e.scale,g=E5(e,Bbe),v=m.id,b=m.scale,k=E5(m,Fbe);return Eu.createElement($x,A5({},g,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 Gbe={allowDataOverflow:io.allowDataOverflow,allowDecimals:io.allowDecimals,allowDuplicatedCategory:io.allowDuplicatedCategory,angle:io.angle,axisLine:as.axisLine,hide:!1,includeHidden:io.includeHidden,interval:io.interval,label:!1,minTickGap:io.minTickGap,mirror:io.mirror,orientation:io.orientation,padding:io.padding,reversed:io.reversed,scale:io.scale,tick:io.tick,tickCount:io.tickCount,tickLine:as.tickLine,tickSize:as.tickSize,type:io.type,niceTicks:io.niceTicks,width:io.width,yAxisId:0},Ybe=e=>{var t=nr(e,Gbe);return Eu.createElement(Eu.Fragment,null,Eu.createElement(Kbe,{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}),Eu.createElement(Vbe,t))},Nu=Eu.memo(Ybe,bC);Nu.displayName="YAxis";var lG=Z(Q()),uG=Z(Q());var Vp=Z(Q()),sG=Z(Q());var ZV=Z(Q()),JV=Z(Q());var Xbe=(e,t)=>t,Fx=se([Xbe,Bt,pk,oo,OM,Za,LW,Fr],HW);function Zbe(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Ux(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(Zbe(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 T5=vo("mouseClick"),O5=lu();O5.startListening({actionCreator:T5,effect:(e,t)=>{var r=e.payload,n=Fx(t.getState(),Ux(r));n?.activeIndex!=null&&t.dispatch(hW({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var wC=vo("mouseMove"),P5=lu(),Qg=null,Up=null,N5=null;P5.startListening({actionCreator:wC,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");Qg!==null&&(cancelAnimationFrame(Qg),Qg=null),Up!==null&&(typeof a!="number"||!s)&&(clearTimeout(Up),Up=null),N5=Ux(r);var l=()=>{var u=t.getState(),c=$c(u,u.tooltip.settings.shared);if(!N5){Qg=null,Up=null;return}if(c==="axis"){var d=Fx(u,N5);d?.activeIndex!=null?t.dispatch(c_({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(u_())}Qg=null,Up=null};if(!s){l();return}a==="raf"?Qg=requestAnimationFrame(l):typeof a=="number"&&Up===null&&(Up=setTimeout(l,a))}});function $V(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 LV={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},zV=Cr({name:"rootProps",initialState:LV,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:LV.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}}}),BV=zV.reducer,FV=zV.actions.updateOptions;var Jbe=null,Qbe={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)},UV=Cr({name:"polarOptions",initialState:Jbe,reducers:Qbe}),WV=UV.actions.updatePolarOptions;var HV=UV.reducer;var M5=vo("keyDown"),I5=vo("focus"),D5=vo("blur"),Wx=lu(),Rg=null,Wp=null,SC=null;Wx.startListening({actionCreator:M5,effect:(e,t)=>{SC=e.payload,Rg!==null&&(cancelAnimationFrame(Rg),Rg=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Wp!==null&&(typeof o!="number"||!i)&&(clearTimeout(Wp),Wp=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=SC;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=Lc(c,yu(l),fu(l),Bc(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,y=Za(l),x=yu(l),h=$c(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=hx(l,h,"hover",String(c.index));t.dispatch(mx({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=iW(l),b=v==="left-to-right"?1:-1,k=d==="ArrowRight"?1:-1,S;if(m){var w=fu(l),_=Bc(l),A=k*b,C=U=>({active:!1,index:String(U),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(S=-1,A>0){for(var E=0;E=0;I--)if(Lc(C(I),x,w,_)!=null){S=I;break}if(S<0)return}else{S=f+k*b;var J=y?.length||x.length;if(J===0||S>=J||S<0)return}var $=hx(l,h,"hover",String(S));t.dispatch(mx({active:!0,activeIndex:S.toString(),activeCoordinate:$}))}finally{Rg=null,Wp=null}};if(!i){s();return}o==="raf"?Rg=requestAnimationFrame(s):typeof o=="number"&&Wp===null&&(s(),SC=null,Wp=setTimeout(()=>{SC?s():(Wp=null,Rg=null)},o))}});Wx.startListening({actionCreator:I5,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=$c(r,r.tooltip.settings.shared),s=hx(r,i,"hover",String(a));t.dispatch(mx({active:!0,activeIndex:a,activeCoordinate:s}))}}}});Wx.startListening({actionCreator:D5,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(mx({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function kC(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 Ei=vo("externalEvent"),$5=lu(),_C=new Map,Hx=new Map,j5=new Map;$5.startListening({actionCreator:Ei,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=kC(o);j5.set(a,{handler:n,reactEvent:i});var s=_C.get(a);s!==void 0&&(cancelAnimationFrame(s),_C.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=Hx.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),Hx.delete(a));var y=()=>{var g=j5.get(a);try{if(!g)return;var v=g.handler,b=g.reactEvent,k=t.getState(),S={activeCoordinate:DM(k),activeDataKey:Pg(k),activeIndex:rs(k),activeLabel:y_(k),activeTooltipIndex:rs(k),isTooltipActive:jM(k)};v&&v(S,b)}finally{_C.delete(a),Hx.delete(a),j5.delete(a)}};if(!f){y();return}if(c==="raf"){var x=requestAnimationFrame(y);_C.set(a,x)}else if(typeof c=="number"){if(!Hx.has(a)){y();var h=setTimeout(y,c);Hx.set(a,h)}}else y()}}});var Rbe=se([hu],e=>e.tooltipItemPayloads),qV=se([Rbe,(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 L5=vo("touchMove"),z5=lu(),Hp=null,Qc=null,KV=null,qx=null;z5.startListening({actionCreator:L5,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){qx=kC(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Hp!==null&&(cancelAnimationFrame(Hp),Hp=null),Qc!==null&&(typeof a!="number"||!s)&&(clearTimeout(Qc),Qc=null),KV=Array.from(r.touches).map(u=>Ux({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(qx!=null){var u=t.getState(),c=$c(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=KV)===null||d===void 0?void 0:d[0];if(p==null){Hp=null,Qc=null;return}var f=Fx(u,p);f?.activeIndex!=null&&t.dispatch(c_({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,y=qx.touches[0];if(document.elementFromPoint==null||y==null)return;var x=document.elementFromPoint(y.clientX,y.clientY);if(!x||!x.getAttribute)return;var h=x.getAttribute(CS),g=(m=x.getAttribute(AS))!==null&&m!==void 0?m:void 0,v=zc(u).find(S=>S.id===g);if(h==null||v==null||g==null)return;var b=v.dataKey,k=qV(u,h,g);t.dispatch(l_({activeDataKey:b,activeIndex:h,activeCoordinate:k,activeGraphicalItemId:g}))}Hp=null,Qc=null}};if(!s){l();return}a==="raf"?Hp=requestAnimationFrame(l):typeof a=="number"&&Qc===null&&(l(),qx=null,Qc=setTimeout(()=>{qx?l():(Qc=null,Hp=null)},a))}}});var Kx={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},VV=Cr({name:"eventSettings",initialState:Kx,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Zt(t.payload.throttledEvents))}}}),GV=VV.actions.setEventSettings;var YV=VV.reducer;var e1e=Rw({brush:hK,cartesianAxis:eK,chartData:fH,errorBars:ZK,eventSettings:YV,graphicalItems:Bq,layout:l7,legend:D7,options:lH,polarAxis:sq,polarOptions:HV,referenceElements:xK,renderedTicks:$K,rootProps:BV,tooltip:yW,zIndex:QW}),XV=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return qB({reducer:e1e,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([O5.middleware,P5.middleware,Wx.middleware,$5.middleware,z5.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(IO({type:"raf"}))},devTools:Ji.devToolsEnabled&&{serialize:{replacer:$V},name:"recharts-".concat(r)}})};function CC(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Ar(),a=(0,JV.useRef)(null);if(o)return r;a.current==null&&(a.current=XV(t,n));var i=mv;return ZV.createElement(W7,{context:i,store:a.current},r)}var AC=Z(Q());function t1e(e){var t=e.layout,r=e.margin,n=jt(),o=Ar();return(0,AC.useEffect)(()=>{o||(n(a7(t)),n($O(r)))},[n,o,t,r]),null}var EC=(0,AC.memo)(t1e,Ga);var QV=Z(Q());function NC(e){var t=jt();return(0,QV.useEffect)(()=>{t(FV(e))},[t,e]),null}var TC=Z(Q());var r1e=e=>{var t=jt();return(0,TC.useEffect)(()=>{t(GV(e))},[t,e]),null},OC=(0,TC.memo)(r1e,Ga);var Tu=Z(Q()),aG=Z(Q());var Kp=Z(Q()),F5=Z(Q());var qp=Z(Q()),PC=Z(Q());function RV(e){var t=e.zIndex,r=e.isPanorama,n=(0,PC.useRef)(null),o=jt();return(0,PC.useLayoutEffect)(()=>(n.current&&o(ZW({zIndex:t,element:n.current,isPanorama:r})),()=>{o(JW({zIndex:t,isPanorama:r}))}),[o,t,r]),qp.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function B5(e){var t=e.children,r=e.isPanorama,n=$e(KW);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(RV,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>qp.createElement(RV,{key:i,zIndex:i,isPanorama:r})))}var n1e=["children"];function o1e(e,t){if(e==null)return{};var r,n,o=a1e(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=tg(),n=rg(),o=LS();if(!qa(r)||!qa(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),Kp.createElement(iv,MC({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:i1e,ref:t}),a)}),l1e=e=>{var t=e.children,r=$e(rp);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Kp.createElement(iv,{width:n,height:o,x:i,y:a},t)},U5=(0,F5.forwardRef)((e,t)=>{var r=e.children,n=o1e(e,n1e),o=Ar();return o?Kp.createElement(l1e,null,Kp.createElement(B5,{isPanorama:!0},r)):Kp.createElement(s1e,MC({ref:t},n),Kp.createElement(B5,{isPanorama:!1},r))});var Tn=Z(Q()),fr=Z(Q());var IC=Z(Q());function u1e(e,t){return f1e(e)||p1e(e,t)||d1e(e,t)||c1e()}function c1e(){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 d1e(e,t){if(e){if(typeof e=="string")return eG(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)?eG(e,t):void 0}}function eG(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;Ot(s)&&s!==a&&e(s7(s))}},[n,e,a]),o}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 m1e(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(gH(),null);function jC(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var k1e=(0,fr.forwardRef)((e,t)=>{var r,n,o=(0,fr.useRef)(null),a=(0,fr.useState)({containerWidth:jC((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:jC((n=e.style)===null||n===void 0?void 0:n.height)}),i=DC(a,2),s=i[0],l=i[1],u=(0,fr.useCallback)((d,p)=>{l(f=>{var m=Math.round(d),y=Math.round(p);return f.containerWidth===m&&f.containerHeight===y?f:{containerWidth:m,containerHeight:y}})},[]),c=(0,fr.useCallback)(d=>{if(typeof t=="function"&&t(d),o.current!=null&&(o.current.disconnect(),o.current=null),d!=null&&typeof ResizeObserver<"u"){var p=d.getBoundingClientRect(),f=p.width,m=p.height;u(f,m);var y=h=>{var g=h[0];if(g!=null){var v=g.contentRect,b=v.width,k=v.height;u(b,k)}},x=new ResizeObserver(y);x.observe(d),o.current=x}},[t,u]);return(0,fr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),Tn.createElement(Tn.Fragment,null,Tn.createElement(ap,{width:s.containerWidth,height:s.containerHeight}),Tn.createElement("div",Rc({ref:c},e)))}),_1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,fr.useState)({containerWidth:jC(r),containerHeight:jC(n)}),a=DC(o,2),i=a[0],s=a[1],l=(0,fr.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,fr.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 Tn.createElement(Tn.Fragment,null,Tn.createElement(ap,{width:i.containerWidth,height:i.containerHeight}),Tn.createElement("div",Rc({ref:u},e)))}),C1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return Tn.createElement(Tn.Fragment,null,Tn.createElement(ap,{width:r,height:n}),Tn.createElement("div",Rc({ref:t},e)))}),A1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?Tn.createElement(_1e,Rc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?Tn.createElement(C1e,Rc({},e,{width:r,height:n,ref:t})):Tn.createElement(Tn.Fragment,null,Tn.createElement(ap,{width:r,height:n}),Tn.createElement("div",Rc({ref:t},e)))});function E1e(e){return e?k1e:A1e}var oG=(0,fr.forwardRef)((e,t)=>{var r=e.children,n=e.className,o=e.height,a=e.onClick,i=e.onContextMenu,s=e.onDoubleClick,l=e.onMouseDown,u=e.onMouseEnter,c=e.onMouseLeave,d=e.onMouseMove,p=e.onMouseUp,f=e.onTouchEnd,m=e.onTouchMove,y=e.onTouchStart,x=e.style,h=e.width,g=e.responsive,v=e.dispatchTouchEvents,b=v===void 0?!0:v,k=(0,fr.useRef)(null),S=jt(),w=(0,fr.useState)(null),_=DC(w,2),A=_[0],C=_[1],E=(0,fr.useState)(null),I=DC(E,2),J=I[0],$=I[1],U=tG(),N=_v(),T=N?.width>0?N.width:h,D=N?.height>0?N.height:o,O=(0,fr.useCallback)(F=>{U(F),typeof t=="function"&&t(F),C(F),$(F),F!=null&&(k.current=F)},[U,t,C,$]),j=(0,fr.useCallback)(F=>{S(T5(F)),S(Ei({handler:a,reactEvent:F}))},[S,a]),M=(0,fr.useCallback)(F=>{S(wC(F)),S(Ei({handler:u,reactEvent:F}))},[S,u]),H=(0,fr.useCallback)(F=>{S(u_()),S(Ei({handler:c,reactEvent:F}))},[S,c]),G=(0,fr.useCallback)(F=>{S(wC(F)),S(Ei({handler:d,reactEvent:F}))},[S,d]),z=(0,fr.useCallback)(()=>{S(I5())},[S]),V=(0,fr.useCallback)(()=>{S(D5())},[S]),K=(0,fr.useCallback)(F=>{S(M5(F.key))},[S]),ie=(0,fr.useCallback)(F=>{S(Ei({handler:i,reactEvent:F}))},[S,i]),Ie=(0,fr.useCallback)(F=>{S(Ei({handler:s,reactEvent:F}))},[S,s]),ge=(0,fr.useCallback)(F=>{S(Ei({handler:l,reactEvent:F}))},[S,l]),de=(0,fr.useCallback)(F=>{S(Ei({handler:p,reactEvent:F}))},[S,p]),R=(0,fr.useCallback)(F=>{S(Ei({handler:y,reactEvent:F}))},[S,y]),ee=(0,fr.useCallback)(F=>{b&&S(L5(F)),S(Ei({handler:m,reactEvent:F}))},[S,b,m]),L=(0,fr.useCallback)(F=>{S(Ei({handler:f,reactEvent:F}))},[S,f]),te=E1e(g);return Tn.createElement(HM.Provider,{value:A},Tn.createElement(OT.Provider,{value:J},Tn.createElement(te,{width:T??x?.width,height:D??x?.height,className:bt("recharts-wrapper",n),style:m1e({position:"relative",cursor:"default",width:T,height:D},x),onClick:j,onContextMenu:ie,onDoubleClick:Ie,onFocus:z,onBlur:V,onKeyDown:K,onMouseDown:ge,onMouseEnter:M,onMouseLeave:H,onMouseMove:G,onMouseUp:de,onTouchEnd:L,onTouchMove:ee,onTouchStart:R,ref:O},Tn.createElement(S1e,null),r)))});var N1e=["width","height","responsive","children","className","style","compact","title","desc"];function T1e(e,t){if(e==null)return{};var r,n,o=O1e(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=T1e(e,N1e),p=hn(d);return l?Tu.createElement(Tu.Fragment,null,Tu.createElement(ap,{width:r,height:n}),Tu.createElement(U5,{otherAttributes:p,title:u,desc:c},a)):Tu.createElement(oG,{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},Tu.createElement(U5,{otherAttributes:p,title:u,desc:c,ref:t},Tu.createElement(wK,null,a)))});function W5(){return W5=Object.assign?Object.assign.bind():function(e){for(var t=1;tlG.createElement(eh,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:L1e,tooltipPayloadSearcher:Fc,categoricalChartProps:e,ref:t}));var cG=Z(Q()),dG=Z(Q());var z1e=["axis","item"],q5=(0,dG.forwardRef)((e,t)=>cG.createElement(eh,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:z1e,tooltipPayloadSearcher:Fc,categoricalChartProps:e,ref:t}));var xG=Z(Q()),bG=Z(Q());var gG=Z(Q()),ed=Z(Q());var pG=Z(Q());function fG(e){var t=jt();return(0,pG.useEffect)(()=>{t(WV(e))},[t,e]),null}var B1e=["layout"];function K5(){return K5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=nr(e,J1e);return xG.createElement(hG,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:Z1e,tooltipPayloadSearcher:Fc,categoricalChartProps:r,ref:t})});var wG=Z(Q()),SG=Z(Q());var Q1e=["axis"],td=(0,SG.forwardRef)((e,t)=>wG.createElement(eh,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Q1e,tooltipPayloadSearcher:Fc,categoricalChartProps:e,ref:t}));var cs=Z(Q()),th=[{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}],kG="30m",_G="activeagents.timeWindow",CG=(0,cs.createContext)(null),Y5=e=>th.find(t=>t.id===e);function AG({children:e}){let[t,r]=(0,cs.useState)(()=>{try{let a=localStorage.getItem(_G);if(a&&Y5(a))return a}catch{}return kG}),n=(0,cs.useCallback)(a=>{if(Y5(a)){r(a);try{localStorage.setItem(_G,a)}catch{}}},[]),o=(0,cs.useMemo)(()=>{let a=th.findIndex(s=>s.id===t),i=th[a]||Y5(kG);return{timeWindow:i,windowIndex:a,windows:th,setWindow:n,zoomTo:s=>{let l=th[Math.min(Math.max(s,0),th.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return cs.default.createElement(CG.Provider,{value:o},e)}function vl(){let e=(0,cs.useContext)(CG);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var rh=Z(Q());function xl({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=vl(),{darkMode:i}=ut(),s=qi(i),l={color:s.textSecondary};return rh.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},rh.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"),rh.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=>rh.default.createElement("option",{key:u.id,value:u.id},u.label))),rh.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 $n=Z(Q());var Rr=Z(Q());var Vx=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},rd=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},LC=e=>{let t=e?.spans||[],r=null;for(let m of t){let y=m.tokens||{},x=(y.input||0)+(y.output||0);x>0&&(!r||x>r.total)&&(r={input:y.input||0,output:y.output||0,thinking:y.thinking||0,cached:y.cached||0,total:x})}if(!r)return null;let n=m=>{for(let y of t){let x=(y.attributes||{})[m];if(x)return x}return null},o=(m,...y)=>{let x=Number(n(m));if(Number.isFinite(x)&&x>0)return x;for(let h of y){let g=n(h);if(g)return rd(g)}return 0},a=o("prompt.input.instructions.tokens","prompt.input.instructions","llm.instructions"),i=o("prompt.input.tools.tokens","prompt.input.tools","llm.tools"),s=o("prompt.input.mcp_tools.tokens","prompt.input.mcp_tools"),l=o("prompt.input.messages.tokens","prompt.input.messages","llm.messages"),u=0;for(let m of t){let y=m.attributes||{},x=y["tool.output.result"]||y["tool.result"],h=y["tool.input.args"]||y["tool.arguments"];x&&(u+=rd(x)),h&&(u+=rd(h))}u=Math.min(u,r.input);let c=["messages","toolResults","instructions","toolSchemas","mcpSchemas"],d={messages:l,toolResults:u,instructions:a,toolSchemas:i,mcpSchemas:s},p=c.reduce((m,y)=>m+d[y],0),f;if(p>0&&r.input>0){let m=r.input/p;f={};for(let x of c)f[x]=Math.round(d[x]*m);let y=r.input-c.reduce((x,h)=>x+f[h],0);if(y!==0){let x=c.reduce((h,g)=>f[g]>f[h]?g:h);f[x]=Math.max(f[x]+y,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:Vx(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 R1e={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},nh=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 nd({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,Rr.useState)(i),p=r.filter(w=>w.tokens>0),f=e??p.reduce((w,_)=>w+_.tokens,0),m=t>0?f/t:0,y=m>=.9?"#dc2626":m>=.75?"#eab308":null,x=u?"rgba(255,255,255,0.4)":"#9ca3af",h=u?"rgba(255,255,255,0.6)":"#6b7280",g=u?"rgba(255,255,255,0.75)":"#4b5563",v=u?"rgba(255,255,255,0.1)":"#f3f4f6",b=`${nh(f)} / ${nh(t)} (${Math.round(m*100)}%)`,k=w=>w.key==="messages"&&y?y:w.color||R1e[w.key]||"#2563eb",S=w=>Rr.default.createElement("div",{style:{display:"flex",height:w,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},p.map(_=>Rr.default.createElement("div",{key:_.key,title:`${_.label} \xB7 ${nh(_.tokens)}`,style:{width:`${Math.min(_.tokens/t*100,100)}%`,background:k(_)}})));return a?Rr.default.createElement("span",{title:`${s}: ${b}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},S("6px"),Rr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||x,whiteSpace:"nowrap"}},Math.round(m*100),"%")):Rr.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${y?y+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},Rr.default.createElement("div",{onClick:w=>{w.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},Rr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&Rr.default.createElement("span",{style:{color:x,fontWeight:400}}," \xB7 estimated")),Rr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},Rr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},b),Rr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),Rr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},S("9px")),m>=.9&&Rr.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&&Rr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(w=>Rr.default.createElement("div",{key:w.key,style:{display:"flex",alignItems:"center",gap:"8px"}},Rr.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:w.key==="__free"?v:k(w),border:w.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),Rr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},w.label),Rr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},nh(w.tokens)),Rr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:x,width:"46px",textAlign:"right"}},t>0?`${(w.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&Rr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x}},n>0&&Rr.default.createElement("span",null,Rr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",nh(n)),o>0&&Rr.default.createElement("span",null,Rr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",nh(o)))))}var wt=Z(Q());var Le=Z(Q());var Xn=Z(Q());var ke=Z(Q());var EG=["ui","json-ui","genui"],Gp="render_ui",Fs=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),X5=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Yp(e){let t=typeof e=="string"?X5(e):e;if(Array.isArray(t))return t.every(Fs)?t:null;if(Fs(t)){if(Array.isArray(t.blocks))return t.blocks.every(Fs)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Fs)?t.ui:null}return null}function Z5(e,t){let r=String(e||"").trim().toLowerCase();if(EG.includes(r))return Yp(t);if(r==="json"){let n=X5(t);return Fs(n)&&Array.isArray(n.ui)?Yp(n):null}return null}function J5(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=X5(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Fs(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Yp(o);return a?{blocks:a}:{object:o}}var ewe=e=>Fs(e)?e.function?.name||e.name:void 0,twe=e=>Fs(e)?e.function?.arguments??e.arguments??e.input:void 0;function oh(e,{callId:t}={}){if(!Fs(e))return null;if(e.tool_name===Gp&&e.tool_arguments!=null){let o=Yp(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Fs(a)&&a.id!=null);r.forEach(a=>{if(ewe(a)!==Gp||t!=null&&o&&a.id!==t)return;let i=Yp(twe(a));i&&n.push(...i)})}else if(Fs(r)&&e.tool_name===Gp){let o=Yp(r);o&&n.push(...o)}return n.length>0?n:null}function zC(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function BC(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 NG(e){try{return new URL(String(e).trim()).host}catch{return""}}var DG=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],rwe=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],Gx=DG.length,TG=220,ah=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),er=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),jG=e=>{if(typeof e!="number"||!Number.isFinite(e))return er(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()},tI=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,OG={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"]}},nwe={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},Q5=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),rI=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"}),ih=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Ou({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${er(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),ke.default.createElement("pre",{style:{...rI(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function owe({block:e,colors:t,darkMode:r,onAction:n}){let o=zC(e.image_url)&&BC(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:er(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:ih(t)},er(e.title)),e.body!=null&&ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Us,{text:er(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}`}},er(e.footer))))}function $G({block:e,colors:t,darkMode:r}){let n=e.delta!=null?er(e.delta):null,o=e.tone||(n&&n.trim().startsWith("-")?"negative":n?"positive":"neutral"),a=tI(nwe,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?jG(e.value):er(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}},er(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 awe({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(ah):[];return n.length===0?ke.default.createElement(Ou,{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($G,{key:a,block:o,colors:t,darkMode:r})))}var eI=(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"}),iwe=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:Pt.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function LG({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:iwe(r)},er(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:eI(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():er(l))}))))))}function swe({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(Ou,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:ah(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:ih(t)},er(e.title)),ke.default.createElement(LG,{columns:n,rows:a,colors:t}))}var lwe=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},uwe=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function cwe({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(ah):[];if(o.length===0)return ke.default.createElement(Ou,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:lwe(o),i=Array.isArray(e.series)?e.series.filter(x=>typeof x=="string"):[],s=(i.length>0?i:uwe(o,a)).slice(0,Gx);if(!a||s.length===0)return ke.default.createElement(Ou,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?rwe:DG,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ke.default.createElement(Uc,{contentStyle:{background:u,border:`1px solid ${t.cardBorder}`,borderRadius:"8px",fontSize:"12px"},labelStyle:{color:t.textPrimary,fontWeight:600,marginBottom:"4px"},itemStyle:{color:t.textCell},formatter:x=>typeof x=="number"?x.toLocaleString():er(x)}),p=s.length>1||n==="pie"?ke.default.createElement(DS,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=ke.default.createElement(ke.default.Fragment,null,ke.default.createElement(Su,{stroke:t.cardBorder,vertical:!1}),ke.default.createElement(Au,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ke.default.createElement(Nu,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:jG,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=ke.default.createElement(H5,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(fC,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:u,fill:l[h]},activeDot:{r:5,strokeWidth:2,stroke:u},isAnimationActive:!1})));else if(n==="area")y=ke.default.createElement(td,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(_u,{key:x,type:"monotone",dataKey:x,stroke:l[h],strokeWidth:2,fill:l[h],fillOpacity:.12,dot:{r:3,strokeWidth:2,stroke:u,fill:l[h]},isAnimationActive:!1})));else if(n==="pie"){let x=s[0],h=[...o].sort((b,k)=>(Number(k[x])||0)-(Number(b[x])||0)),g=h.slice(0,Gx),v=h.slice(Gx);v.length>0&&(g[Gx-1]={[a]:"Other",[x]:v.reduce((b,k)=>b+(Number(k[x])||0),Number(g[Gx-1][x])||0)}),y=ke.default.createElement(G5,{margin:m},d,p,ke.default.createElement(R_,{data:g,dataKey:x,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},g.map((b,k)=>ke.default.createElement(vu,{key:k,fill:l[k]}))))}else y=ke.default.createElement(q5,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((x,h)=>ke.default.createElement(xC,{key:x,dataKey:x,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:ih(t)},er(e.title)),ke.default.createElement("div",{style:{width:"100%",height:TG,minWidth:0}},ke.default.createElement(_c,{width:"100%",height:TG},y)))}function dwe({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ke.default.createElement(Ou,{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:ih(t)},er(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(Us,{text:i,darkMode:r,onUiAction:n}):er(i)))))}function pwe({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}},er(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:Qo,borderRadius:"999px",transition:"width 0.3s ease"}})))}var fwe=["text","textarea","number","select","checkbox"],R5=e=>er(e.name||e.label),PG=e=>er(e.label||e.name),MG=e=>fwe.includes(e.type)?e.type:"text";function mwe({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>ah(p)&&(p.name||p.label)),[a,i]=(0,ke.useState)(()=>Object.fromEntries(o.map(p=>[R5(p),MG(p)==="checkbox"?!1:""]))),[s,l]=(0,ke.useState)(!1);if(o.length===0)return ke.default.createElement(Ou,{block:e,reason:"form needs fields",colors:t,darkMode:r});let u=e.submit!=null?er(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 y=a[R5(m)];return`${PG(m)}: ${typeof y=="boolean"?y?"yes":"no":er(y)}`}).join("; ");l(!0),n&&n({kind:"form",text:`${e.submit!=null?er(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:ih(t)},er(e.title)),o.map(p=>{let f=R5(p),m=MG(p),y=PG(p),x=`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:Qo}}),y):ke.default.createElement("div",{key:f},ke.default.createElement("label",{htmlFor:x,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,p.required?" *":""),m==="textarea"?ke.default.createElement("textarea",{id:x,name:f,value:a[f],onChange:h=>c(f,h.target.value),placeholder:p.placeholder!=null?er(p.placeholder):void 0,required:!!p.required,rows:3,className:"aa-field",style:{...Q5(t),resize:"vertical"}}):m==="select"?ke.default.createElement("select",{id:x,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:Q5(t)},ke.default.createElement("option",{value:""},p.placeholder!=null?er(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,g)=>ke.default.createElement("option",{key:g,value:er(h)},er(h)))):ke.default.createElement("input",{id:x,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?er(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:Q5(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:Qo,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 gwe({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(Ou,{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}},er(e.prompt)),ke.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=er(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?Qo:t.inputBorder}`,background:c?Qo:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function hwe({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=NG(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 ywe({block:e,colors:t,darkMode:r}){if(!zC(e.url))return ke.default.createElement(Ou,{block:e,reason:"image URL must be http(s) or data:",colors:t,darkMode:r});let n=e.url.trim(),o=e.alt!=null?er(e.alt):"";return ke.default.createElement("figure",{style:{margin:0}},BC(n)?ke.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ke.default.createElement(hwe,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&ke.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},er(e.caption)))}function vwe({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(tI(OG,e.tone)||OG.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}},er(e.title)),ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(Us,{text:er(e.body),darkMode:r,onUiAction:n})))}function xwe({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}},er(e.language)),ke.default.createElement("pre",{style:rI(r)},er(e.code)))}function IG({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(Us,{text:er(o),darkMode:r,onUiAction:n}))}var bwe=3;function FC({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,er(e));if(n>=bwe)return ke.default.createElement("pre",{style:{...rI(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(ah)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ke.default.createElement(LG,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ke.default.createElement(FC,{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(er).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(FC,{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:{...eI(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ke.default.createElement("td",{style:eI(t,!1)},ke.default.createElement(FC,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function wwe({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:ih(t)},er(e.title)),ke.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ke.default.createElement(FC,{value:n,colors:t,darkMode:r,depth:0})))}var Swe={card:owe,stat:$G,stats:awe,table:swe,chart:cwe,list:dwe,progress:pwe,form:mwe,choices:gwe,image:ywe,callout:vwe,code:xwe,object:wwe,text:IG,markdown:IG};function bl({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(ah):[];if(n.length===0)return null;let o=qi(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=tI(Swe,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(Ou,{block:a,colors:o,darkMode:r}))}))}var kwe=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,Yx=(e,t)=>e.split(kwe).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return Xn.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return Xn.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return Xn.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?Xn.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),zG=e=>/^\s*\|.*\|\s*$/.test(e),_we=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),BG=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function Us({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` +`),a=0,i=0;for(;aXn.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},Yx(p,`th${d}-${f}`))))),Xn.default.createElement("tbody",null,c.map((p,f)=>Xn.default.createElement("tr",{key:f},u.map((m,y)=>Xn.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},Yx(p[y]??"",`td${d}-${f}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aXn.default.createElement("li",{key:d},Yx(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(Xn.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(Xn.default.createElement("div",{key:i++},Yx(s,`p${i}`))),a+=1}return Xn.default.createElement("div",{className:"break-words"},n)}var Qa=Z(Q()),Cwe=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"},Awe=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function nI({tool:e,darkMode:t}){let r=Awe(e);return Qa.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Qa.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Qa.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"}},Qa.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Qa.default.createElement("span",null,"source: ",Cwe(e))))}function oI({tools:e,darkMode:t}){let[r,n]=(0,Qa.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 Qa.default.createElement("div",{style:{marginTop:"8px"}},Qa.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Qa.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Qa.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&&Qa.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"}`}},Qa.default.createElement(nI,{tool:a,darkMode:t})))}var Ewe=["application/json","application/xml","application/x-yaml","application/csv"],Nwe=/\.(csv|md|txt|json|ya?ml)$/i;function FG(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/")||Ewe.includes(t)||Nwe.test(r)?"text":"file"}function UG(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 WG(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 HG=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,Xx=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}},Twe=["text","output","body","content"],qG=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},Owe=e=>{let t=qG(e.tool_result)??qG(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=Twe.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}},Pwe=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||Xx(e.content)),GG=280,Mwe=["tool","system","developer"],Zx=(e,t=GG)=>e.replace(/\s+/g," ").trim().slice(0,t),aI=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)}},YG=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:aI(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:aI(t)}]:[]},XG=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),Iwe=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||XG(o.content))return;let i=YG(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))},KG=e=>Mwe.includes(e.role)&&typeof e.content=="string"&&Zx(e.content).length>=GG,Dwe=({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 Le.default.createElement("span",{title:`${Math.round(e.span_duration_ms)}ms \xB7 starts at ${Math.round(e.span_start_ms||0)}ms of ${Math.round(r)}ms`,style:{position:"relative",width:"96px",height:"5px",borderRadius:"999px",background:t?"rgba(255,255,255,0.08)":"#f3f4f6",flexShrink:0,marginTop:"8px",display:"inline-block"}},Le.default.createElement("span",{style:{position:"absolute",top:0,bottom:0,left:`${n}%`,width:`${Math.min(o,100-n)}%`,borderRadius:"999px",background:a}}))},UC=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}),jn=(e,t)=>{switch(e){case"user":return t?{background:"rgba(59,130,246,0.15)",color:"#93c5fd",label:"User"}:{background:"#eff6ff",color:"#1d4ed8",label:"User"};case"assistant":return t?{background:"rgba(239,68,68,0.12)",color:"#fca5a5",label:"Assistant"}:{background:"#fef2f2",color:"#b91c1c",label:"Assistant"};case"tool":return t?{background:"rgba(245,158,11,0.12)",color:"#fcd34d",label:"Tool"}:{background:"#fffbeb",color:"#b45309",label:"Tool"};case"system":return t?{background:"rgba(139,92,246,0.15)",color:"#c4b5fd",label:"System"}:{background:"#f5f3ff",color:"#6d28d9",label:"System"};case"developer":return t?{background:"rgba(20,184,166,0.15)",color:"#5eead4",label:"Dev"}:{background:"#f0fdfa",color:"#0f766e",label:"Dev"};default:return t?{background:"rgba(255,255,255,0.08)",color:"rgba(255,255,255,0.7)",label:e}:{background:"#f3f4f6",color:"#374151",label:e}}},VG={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function WC({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=qi(t);return Le.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/"))&&WG(s.url),d=UG(s.byte_size);return Le.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?Le.default.createElement("img",{src:s.url,alt:s.filename||"",style:{width:"36px",height:"36px",objectFit:"cover",borderRadius:"4px",flexShrink:0}}):Le.default.createElement("span",{className:"font-mono",style:{color:i.textMuted,flexShrink:0}},VG[s.kind]||VG.file),Le.default.createElement("span",{className:"min-w-0"},Le.default.createElement("span",{className:"block truncate"},s.filename||"attachment"),d&&Le.default.createElement("span",{className:"block font-mono",style:{color:i.textMuted}},d)),n&&Le.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 ZG=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},jwe=(e,t)=>{let r=oh(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?ZG(o).has(e.tool_call_id):oh(o)));return n?oh(n,{callId:e.tool_call_id}):null},$we=(e,t)=>{let r=ZG(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===Gp&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function ds({messages:e,darkMode:t,tools:r,onUiAction:n,onEditMessage:o,onDeleteMessage:a,testIdPrefix:i}){let[s,l]=(0,Le.useState)({}),[u,c]=(0,Le.useState)(null),[d,p]=(0,Le.useState)(""),[f,m]=(0,Le.useState)(!1),[y,x]=(0,Le.useState)(null),h=A=>l(C=>({...C,[A]:!C[A]})),g={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},v=A=>i?`${i}-${A}`:void 0,b=A=>A.stopPropagation(),k=A=>{c(A.id),p(A.content||""),x(null)},S=()=>{c(null),x(null)},w=async A=>{if(!f){m(!0),x(null);try{await o(A,d),c(null)}catch(C){x(C.message||"Could not save the message")}finally{m(!1)}}},_=Iwe(e);return Le.default.createElement("div",{className:"space-y-3"},_.map(A=>{let C=jn(A.role,t),E=!!s[A.id],I=u===A.id,J=!!((o||a)&&["user","assistant"].includes(A.role)),$=A.role==="tool"&&A.tool_name===Gp?jwe(A,_):null,U=A.role==="assistant"&&!I?J5(A.content):null,N=A.role==="assistant"&&!$we(A,_)?oh(A):null,T=KG(A)&&!E,D=Pwe(A)||KG(A),O=Xx(A.tool_arguments),j=Xx(A.tool_result)||Xx(A.content),M=A.tool_calls&&(!Array.isArray(A.tool_calls)||A.tool_calls.length>0)?Xx(A.tool_calls):null,H=A.role==="tool"?Owe(A):null,G=A.tool_name?(r||[]).find(R=>R&&R.name===A.tool_name):null,z=A.role==="tool"?aI(A.tool_arguments):null,V=A.role==="tool"&&!!z,K=jn("assistant",t),ie=jn("tool",t),Ie=A.role==="tool"&&!A.tool_arguments&&_.some(R=>R&&R.role==="assistant"&&(A.tool_call_id&&R.tool_call_id===A.tool_call_id||Array.isArray(R.tool_calls)&&R.tool_calls.some(ee=>ee.id&&ee.id===A.tool_call_id))),ge=A.role==="assistant"&&!XG(A.content)?YG(A):[],de=UC(t);return Le.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},Le.default.createElement("div",{className:`flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 ${D?"cursor-pointer":""}`,onClick:D?()=>h(A.id):void 0,style:E?{background:t?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.03)"}:{}},Le.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},(V?[K,ie]:[C]).map(R=>Le.default.createElement("span",{key:R.label,className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:R.background,color:R.color,textAlign:"center"}},R.label))),Le.default.createElement("div",{className:"min-w-0 flex-1"},Le.default.createElement("div",{className:"text-sm break-words",style:{color:g.textPrimary}},I?Le.default.createElement("div",{className:"space-y-2",onClick:b},Le.default.createElement("textarea",{"data-testid":v("editor"),value:d,onChange:R=>p(R.target.value),onKeyDown:R=>{R.key==="Escape"&&S(),R.key==="Enter"&&(R.metaKey||R.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:g.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"}}),Le.default.createElement("div",{className:"flex items-center gap-2 text-xs"},Le.default.createElement("button",{type:"button","data-testid":v("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"),Le.default.createElement("button",{type:"button","data-testid":v("cancel"),onClick:S,disabled:f,style:{padding:"4px 10px",borderRadius:"6px",background:"transparent",color:g.textSecondary,border:`1px solid ${t?"rgba(255,255,255,0.2)":"#d1d5db"}`,cursor:"pointer"}},"Cancel"),y&&Le.default.createElement("span",{style:{color:"#dc2626"}},y))):$?Le.default.createElement("div",null,Le.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:ie.color}},"\u2699 ",A.tool_name," \xB7 ",$.length," block",$.length===1?"":"s"),Le.default.createElement(bl,{blocks:$,onAction:n,darkMode:t})):A.role==="tool"?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},z&&!Ie&&Le.default.createElement("span",{className:"font-mono text-xs break-words"},A.tool_name&&Le.default.createElement("span",{style:{color:ie.color}},"\u2699 ",A.tool_name," "),Le.default.createElement("span",{style:{color:V?K.color:g.textMuted}},"in:")," ",Zx(z,180),z.length>180?"\u2026":""),H?Le.default.createElement("span",null,A.tool_name&&!(z&&!Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(z||Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:V?ie.color:g.textMuted}},"out:"),H.meta&&Le.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:g.textMuted}},H.meta),"\u201C",H.body.replace(/\s+/g," ").trim().slice(0,180),H.body.length>180?"\u2026":"","\u201D"):A.content?Le.default.createElement("span",null,A.tool_name&&!(z&&!Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(z||Ie)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:V?ie.color:g.textMuted}},"out:"),"\u201C",Zx(A.content,180),A.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):Le.default.createElement("span",{className:"whitespace-pre-wrap"},A.tool_name?`\u2192 ${A.tool_name}(...)`:"\u2014")):T?Le.default.createElement("span",{style:{color:g.textSecondary}},Zx(A.content),"\u2026"):ge.length>0?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},ge.map((R,ee)=>Le.default.createElement("span",{key:ee,className:"font-mono text-xs break-words"},R.name&&Le.default.createElement("span",{style:{color:g.textMuted}},R.name," "),Le.default.createElement("span",{style:{color:g.textMuted}},"in:")," ",R.args?Le.default.createElement(Le.default.Fragment,null,Zx(R.args,180),R.args.length>180?"\u2026":""):"\u2014"))):U&&U.blocks?Le.default.createElement(bl,{blocks:U.blocks,onAction:n,darkMode:t}):U&&U.object?Le.default.createElement(bl,{blocks:[{type:"object",value:U.object}],darkMode:t}):Le.default.createElement(Us,{text:A.content||"\u2014",darkMode:t,onUiAction:n}),N&&!I&&Le.default.createElement("div",{className:"mt-2"},Le.default.createElement(bl,{blocks:N,onAction:n,darkMode:t})),A.role==="user"&&Le.default.createElement(WC,{attachments:A.attachments,darkMode:t,testId:v("attachment")})),Le.default.createElement("div",{className:"text-xs mt-0.5 font-mono flex items-center gap-2 flex-wrap",style:{color:g.textMuted}},J&&!I&&Le.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:b},o&&Le.default.createElement("button",{type:"button","data-testid":v("edit"),onClick:()=>k(A),className:"hover:underline",style:{color:g.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&Le.default.createElement("button",{type:"button","data-testid":v("delete"),onClick:()=>a(A),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),A.created_at&&Le.default.createElement("span",null,new Date(A.created_at).toLocaleTimeString()),A.tool_name&&A.role!=="tool"&&Le.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&&Le.default.createElement("span",null,HG(A.duration_ms)),(A.tool_calls||[]).length>0&&Le.default.createElement("span",null,A.tool_calls.length," tool call",A.tool_calls.length>1?"s":""),A.content_checksum&&Le.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",A.content_checksum.slice(0,8)))),Le.default.createElement(Dwe,{message:A,darkMode:t}),D&&Le.default.createElement("svg",{className:`w-3.5 h-3.5 mt-1 flex-shrink-0 transition-transform ${E?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",style:{color:g.textMuted}},Le.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),E&&Le.default.createElement("div",{className:"ml-3 mt-1 mb-2 pl-4 space-y-2 border-l-2",style:{borderColor:C.color+"55"}},Le.default.createElement("div",{className:"flex flex-wrap gap-x-5 gap-y-1 text-xs font-mono",style:{color:g.textSecondary}},A.created_at&&Le.default.createElement("span",null,new Date(A.created_at).toLocaleString()),A.tool_call_id&&Le.default.createElement("span",null,"call: ",A.tool_call_id),A.duration_ms!=null&&Le.default.createElement("span",null,"took ",HG(A.duration_ms)),A.content_checksum&&Le.default.createElement("span",null,"\u{1F512} ",A.content_checksum)),O&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:V?K.color:g.textMuted}},"Arguments",V?" \xB7 from the agent":""),Le.default.createElement("pre",{style:de},O)),H?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:V?ie.color:g.textMuted}},"Result",V?" \xB7 from the tool":""),Object.keys(H.rest).length>0&&Le.default.createElement("pre",{style:de},JSON.stringify(H.rest,null,2)),Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:g.textMuted}},H.field," \xB7 ",H.body.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...de,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},H.body.slice(0,8e3),H.body.length>8e3?` +\u2026`:"")):j?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},A.role==="tool"?"Result":"Content (parsed)"),Le.default.createElement("pre",{style:de},j)):A.role==="tool"&&A.content?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:V?ie.color:g.textMuted}},"Result",V?" \xB7 from the tool":""," \xB7 ",A.content.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...de,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},A.content.slice(0,8e3),A.content.length>8e3?` +\u2026`:"")):null,M&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Requested tool calls"),Le.default.createElement("pre",{style:de},M)),G&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},"Tool definition"),Le.default.createElement(nI,{tool:G,darkMode:t}))))}))}var or=Z(Q());var ln=Z(Q());var Zn=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"}),JG=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Xp({open:e,darkMode:t,size:r=14,style:n}){return ln.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:Zn(t).textMuted,...n},"aria-hidden":"true"},ln.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function HC({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=Zn(e);return ln.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var Ea={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function od({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=Zn(t),i=(e||[]).filter(Boolean);return i.length===0?null:ln.default.createElement("div",{className:`flex-shrink-0 text-sm ${n}`,style:{display:"grid",gridTemplateColumns:i.map(s=>s.width?`${s.width}px`:"minmax(0, auto)").join(" "),alignItems:"center",columnGap:`${r}px`,color:a.textSecondary,...o}},i.map(s=>{let l=s.content!=null&&s.content!==!1&&s.content!=="";return ln.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:ln.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var QG=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:Zn(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),Lwe=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]=lh(),c=Zn(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?ln.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:Pt.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((p,f)=>{let m=`${p.label}-${f}`,y=l(m),x=p.max||i,h=!p.text,g=String(p.text??"").replace(/\s+/g," ").trim(),v=Lwe(p.text),b=!h&&(v.json||g.length>60||g!==String(p.text).trim());return ln.default.createElement("div",{key:m},ln.default.createElement("div",{onClick:b?k=>{k.stopPropagation(),u(m)}:void 0,title:b?y?"Collapse":"Expand":void 0,style:{cursor:b?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},ln.default.createElement("span",{style:{color:p.color||c.textMuted}},b?y?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!y&&(h?ln.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):JG(g,x))),y&&ln.default.createElement("pre",{onClick:k=>k.stopPropagation(),style:QG(t,{wrap:!v.json})},v.text))})):null}function Jx({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=Zn(n);return ln.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&ln.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>ln.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 RG({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=Zn(o);return ln.default.createElement("div",null,ln.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},ln.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&ln.default.createElement("span",{style:{color:s.textMuted}},JG(t,i))),r&&ln.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:QG(o,{wrap:a})},t))}function lh(e={}){let[t,r]=(0,ln.useState)(e),n=(0,ln.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,ln.useCallback)(a=>!!t[a],[t]),n,r]}var iI={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},tY=[{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"}],Jn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,sI=e=>{switch(e){case"root":return Fo.spans.root;case"prompt":return Fo.spans.prompt;case"generate":return Fo.spans.generate;case"llm":return Fo.spans.llm;case"thinking":return Fo.spans.thinking;case"tool":return Fo.spans.tool;case"response":return Fo.spans.response;default:return"-"}},zwe=(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))},Bwe=(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))}},Fwe=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},Uwe=(e,t)=>{if(!t.duration_ms)return Jn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Jn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},Wwe=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},eY=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,lI=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}},Hwe=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}},qwe=(e,t)=>{let r=Hwe(e),n=lI(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},Kwe=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}},uI=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 Vwe({span:e,darkMode:t,tools:r=[]}){let[n,o]=lh(),a=Zn(t),{messages:i,rest:s}=Kwe(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)=>eY(f[0])-eY(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 or.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:Pt.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},or.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},or.default.createElement("span",null,"duration: ",Jn(e.duration)),or.default.createElement("span",null,"status: ",e.status||"OK"),Fwe(e)>0&&or.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),or.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&or.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},or.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},or.default.createElement("span",{style:{color:jn("tool",t).color}},"\u2699 ",d.tool_name),p&&or.default.createElement(or.default.Fragment,null," ",or.default.createElement("span",{style:{color:jn("assistant",t).color}},"in:")," ",or.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&or.default.createElement("div",{style:{fontSize:"12px"}},or.default.createElement("span",{style:{color:jn("tool",t).color}},"out:")," ",or.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&&or.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},or.default.createElement(ds,{messages:i,darkMode:t,tools:l||r})),l&&or.default.createElement(oI,{tools:l,darkMode:t}),c.length>0&&or.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let y=f.match(/args|result|input|output/)?Wwe(m):null,x=!y&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||x;if(!h)return or.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},or.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${f}`;return or.default.createElement(RG,{key:f,label:f,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function Gwe({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=Zn(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:qwe(e,t);return or.default.createElement(or.default.Fragment,null,or.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},or.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},or.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},sI(e.type)),or.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),or.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:Pt.mono,color:l.textMuted}},Uwe(e,t)),u&&or.default.createElement(Xp,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),or.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},or.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":iI[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}%`:`${zwe(e.duration,o)}%`}})),c&&or.default.createElement(sh,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:jn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:jn(c.outputTone,r).color,max:160}]})),a&&or.default.createElement(Vwe,{span:e,darkMode:r,tools:s}))}function cI({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=lh(),s=Zn(t),l=Bwe(e?.spans,r),u=n||uI(e);if(l.length===0)return or.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 or.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return or.default.createElement(Gwe,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var Ywe=[{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"}],Xwe=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 Zwe({trace:e,darkMode:t}){let r=Zn(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=Xwe(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:Pt.mono,color:r.textBody}},wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Jn(n)," (",l(n),")"),wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Jn(a)," (",l(a),")"),s>0&&wt.default.createElement("span",null,wt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Jn(s)," (",l(s),")")),o.length>0&&wt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:Pt.mono,color:r.textSecondary}},o.map((c,d)=>wt.default.createElement("span",{key:d},c.name," ",Jn(c.duration)," (",l(c.duration||0),")"))))}function Jwe({trace:e,darkMode:t}){let[r,n]=(0,wt.useState)(null),[o,a]=(0,wt.useState)(!1),i=Zn(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(ds,{messages:s,darkMode:t,tools:uI(e)})}function Qx({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,wt.useState)("spans"),[i,s]=(0,wt.useState)("time"),l=Zn(t),u=(e?.spans||[]).length,c=LC(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(Jx,{options:Ywe,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(Jx,{options:tY,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(Jwe,{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,Jn(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(cI,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&wt.default.createElement("div",{className:"mt-3"},wt.default.createElement(nd,{...c,label:"Context pressure",darkMode:t})),wt.default.createElement(Zwe,{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:Pt.mono}},"T:",d.thinking.toLocaleString()),wt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:Pt.mono}},"in:",(d.input||0).toLocaleString()),wt.default.createElement("span",{className:"text-green-500",style:{fontFamily:Pt.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&wt.default.createElement("span",{style:{fontFamily:Pt.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 Qwe=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},Rwe=e=>e==null?null:`$${e.toFixed(4)}`;function qC({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=Zn(t),a=lI(e),i=LC(e),s=e.status!=="ERROR",l=Qwe(e.tokens);return $n.default.createElement(HC,{darkMode:t,id:`trace-row-${e.id}`},$n.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},$n.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},$n.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:Pt.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),$n.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:Pt.mono,color:o.textMuted}},e.short_id),$n.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),$n.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},$n.default.createElement(od,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&$n.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:Pt.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:Ea.context,empty:"Context: no generation in this trace reported its token counts",content:i&&$n.default.createElement(nd,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:Ea.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&$n.default.createElement($n.default.Fragment,null,$n.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Jn(e.duration_ms))},{key:"tokens",width:Ea.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:Ea.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&$n.default.createElement($n.default.Fragment,null,$n.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),Rwe(e.estimated_cost))},{key:"status",width:Ea.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:$n.default.createElement("span",{style:{color:s?o.good:o.bad}},$n.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),$n.default.createElement(Xp,{open:r,darkMode:t}))),!r&&$n.default.createElement(sh,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:jn("user",t).color},{label:"output",text:a.output,color:jn("assistant",t).color}]}),r&&$n.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},$n.default.createElement(Qx,{trace:e,darkMode:t})))}function rY(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function nY(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function Re(e=""){return rY(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function ad(e="",t={}){window.history.pushState(t,"",Re(e))}function Qn(e=window.location.pathname){return nY(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function lt(e,t={}){if(!e)return;let r=Qn(e);ad(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:Re(r)}}))}var oY=({minutes:e,agentId:t=null})=>{let r=new URLSearchParams({minutes:String(e)});return t!=null&&t!==""&&r.set("agent_id",String(t)),`/api/traces?${r.toString()}`};var aY=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],eSe=3e4,tSe=e=>{let t={};return e.forEach((r,n)=>{t[r]=aY[n%aY.length]}),t},rSe=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)},nSe=(e,t,r,n=60)=>{let o=Date.now(),a=[],i=n*1e3,s=Math.max(1,Math.round(r*60/n));for(let l=s-1;l>=0;l--){let u=o-(l+1)*i,c=o-l*i,d=e.filter(f=>f.timestamp_ms>=u&&f.timestamp_ms{p[f]=d.filter(m=>m.agent===f).length}),a.push({time:r>1440?new Date(c).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(c).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),timestamp:c,requests:d.length,errors:d.filter(f=>f.status==="ERROR").length,avgLatency:d.length>0?Math.round(d.reduce((f,m)=>f+(m.duration_ms||0),0)/d.length):0,traces:d,...p})}return a};function Zp({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,q.useState)([]),[a,i]=(0,q.useState)([]),[s,l]=(0,q.useState)({}),[u,c]=(0,q.useState)(!0),[d,p]=(0,q.useState)(null),[f,m]=(0,q.useState)(null),y=(0,q.useRef)(new URLSearchParams(window.location.search).get("trace")),[x,h]=(0,q.useState)(null),[g,v]=(0,q.useState)({status:"all",agent:"all",action:"all"}),[b,k]=(0,q.useState)("time"),[S,w]=(0,q.useState)(null),[_,A]=(0,q.useState)("timeline"),[C,E]=(0,q.useState)("popular"),{timeWindow:I}=vl(),J=(0,q.useCallback)(async()=>{try{let L=await fetch(oY({minutes:I.minutes,agentId:e}));if(!L.ok)throw new Error(`Request failed (${L.status})`);let te=await L.json();o(te.traces||[]),i(te.agents||[]),l(te.agent_ids||{}),p(null)}catch(L){p(L.message)}finally{c(!1)}},[I.minutes,e]);(0,q.useEffect)(()=>{J();let L=setInterval(J,eSe);return()=>clearInterval(L)},[J]);let $=(0,q.useMemo)(()=>tSe(a),[a]);(0,q.useEffect)(()=>{w(null)},[I.id]);let U=(0,q.useMemo)(()=>nSe(n,a,I.minutes,I.bucketSeconds),[n,a,I]),N=Math.max(0,Math.ceil(U.length/6)-1),T=(0,q.useMemo)(()=>{let L=n;if(S!==null){let te=U[S];te&&(L=te.traces||[])}if(g.status!=="all"&&(L=L.filter(te=>g.status==="success"?te.status!=="ERROR":te.status==="ERROR")),g.agent!=="all"&&(L=L.filter(te=>te.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[te,F]=g.action.split("#");L=L.filter(P=>P.agent===te&&P.action===F)}else L=L.filter(te=>te.action===g.action);return b==="latency"&&(L=[...L].sort((te,F)=>(F.duration_ms||0)-(te.duration_ms||0))),x&&!L.some(te=>te.id===x.id)&&(L=[x,...L]),L},[n,S,U,g,b,x]);(0,q.useEffect)(()=>{let L=y.current;if(!L)return;let te=P=>{y.current=null,m(P.id),setTimeout(()=>{document.getElementById(`trace-row-${P.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},F=n.find(P=>P.id===L||P.trace_id===L||P.short_id&&String(L).startsWith(P.short_id));if(F){te(F);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent(L)}`).then(P=>P.ok?P.json():Promise.reject(new Error("not found"))).then(({trace:P})=>{h(P),te(P)}).catch(()=>{y.current=null})},[n]);let D=(0,q.useMemo)(()=>{let L=S!==null?U[S]?.traces||[]:n,te={};L.forEach(P=>{P.agent&&(te[P.agent]||(te[P.agent]={agent:P.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),te[P.agent].count++,te[P.agent].totalDuration+=P.duration_ms||0,te[P.agent].cost+=P.estimated_cost||0,P.status==="ERROR"&&te[P.agent].errors++,P.tokens&&(te[P.agent].tokens.thinking+=P.tokens.thinking||0,te[P.agent].tokens.input+=P.tokens.input||0,te[P.agent].tokens.output+=P.tokens.output||0),P.action&&(te[P.agent].actions[P.action]=(te[P.agent].actions[P.action]||0)+1))});let F={popular:P=>P.count,longest:P=>P.totalDuration/(P.count||1),cost:P=>P.cost,tokens:P=>(P.tokens.input||0)+(P.tokens.output||0)+(P.tokens.thinking||0),errors:P=>P.errors}[C]||(P=>P.count);return Object.values(te).sort((P,Y)=>F(Y)-F(P)||Y.count-P.count)},[n,U,S,C]),O=(0,q.useMemo)(()=>{let L=S!==null?U[S]?.traces||[]:n,te={};return L.forEach(F=>{if(!F.agent)return;let P=`${F.agent}#${F.action||"unknown"}`;te[P]||(te[P]={key:P,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}}),te[P].count++,te[P].totalDuration+=F.duration_ms||0,te[P].minDuration=Math.min(te[P].minDuration,F.duration_ms||0),te[P].maxDuration=Math.max(te[P].maxDuration,F.duration_ms||0),F.status==="ERROR"&&te[P].errors++,F.tokens&&(te[P].tokens.thinking+=F.tokens.thinking||0,te[P].tokens.input+=F.tokens.input||0,te[P].tokens.output+=F.tokens.output||0)}),Object.values(te).forEach(F=>{F.minDuration===1/0&&(F.minDuration=0)}),Object.values(te).sort((F,P)=>P.count-F.count)},[n,U,S]),j=(0,q.useMemo)(()=>{let L=S!==null?U[S]?.traces||[]:n,te={};return L.forEach(F=>{(F.spans||[]).forEach(P=>{if(P.type!=="tool")return;let Y=P.attributes?.["tool.name"]||P.name?.replace(/^tool\./,"")||"unknown";te[Y]||(te[Y]={name:Y,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),te[Y].count++,te[Y].totalDuration+=P.duration||0,te[Y].maxDuration=Math.max(te[Y].maxDuration,P.duration||0),P.error&&te[Y].errors++,F.agent&&te[Y].agents.add(`${F.agent}#${F.action||"unknown"}`)})}),Object.values(te).map(F=>({...F,agents:[...F.agents],avgDuration:F.count?F.totalDuration/F.count:0})).sort((F,P)=>P.totalDuration-F.totalDuration)},[n,U,S]),M=(0,q.useMemo)(()=>g.agent==="all"?O.map(L=>L.key):O.filter(L=>L.agent===g.agent).map(L=>L.key),[g.agent,O]),H=(0,q.useMemo)(()=>rSe(T),[T]),G=L=>{if(L&&L.activeTooltipIndex!==void 0){let te=L.activeTooltipIndex;w(S===te?null:te),m(null)}},z=L=>(L?.input||0)+(L?.output||0)+(L?.thinking||0),V=L=>{let te=L.count?L.errors/L.count:0;return[{label:`Calls ${I.label||""}`.trim(),value:L.count.toLocaleString()},{label:"Errors",value:`${(te*100).toFixed(1)}%`,tone:L.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round(L.totalDuration/(L.count||1))}ms`},{label:"Tokens",value:z(L.tokens).toLocaleString()},{label:"Cost",value:K(L.cost),title:"Estimated from token counts at this model's published rates",tone:L.cost?void 0:"muted"},{label:"Actions",value:(L.agents?.length||0).toLocaleString()}]},K=L=>L?L<.01?"<$0.01":`$${L.toFixed(2)}`:"\u2014",ie=q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},q.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),q.default.createElement("select",{value:C,onChange:L=>E(L.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:`1px solid ${r?"rgba(255,255,255,0.15)":"#e5e7eb"}`,background:r?"rgba(255,255,255,0.05)":"#ffffff",color:r?"#f9fafb":"#111827"}},q.default.createElement("option",{value:"popular"},"Most calls"),q.default.createElement("option",{value:"longest"},"Longest average"),q.default.createElement("option",{value:"cost"},"Highest cost"),q.default.createElement("option",{value:"tokens"},"Most tokens"),q.default.createElement("option",{value:"errors"},"Most errors"))),Ie=L=>v(te=>({...te,agent:te.agent===L?"all":L})),ge=L=>{let te=s[L];if(!te)return Ie(L);let F=Re(`/agents/${te}`);window.history.pushState(window.history.state,"",F),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:F}}))},de=L=>{let te=H[0]?.total||1,F=L?"rgba(0,0,0,0.3)":"white",P=L?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",Y=L?"white":"#111827",B=L?"rgba(255,255,255,0.5)":"#6b7280",oe={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return q.default.createElement("div",{style:{padding:L?"0 24px 24px 24px":0}},q.default.createElement("div",{style:{background:F,border:P,borderRadius:"12px",padding:"16px"}},q.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:Y,marginBottom:"4px"}},"Slowest operations"),q.default.createElement("div",{style:{fontSize:"12px",color:B,marginBottom:"14px"}},"Span durations aggregated across ",T.length," trace",T.length===1?"":"s"," \u2014 ranked by total time"),H.length===0?q.default.createElement("div",{style:{fontSize:"13px",color:B,padding:"12px 0"}},"No spans in the current selection"):q.default.createElement("div",{style:{display:"grid",gap:"10px"}},H.map(ne=>q.default.createElement("div",{key:ne.name,style:{display:"flex",alignItems:"center",gap:"12px"}},q.default.createElement("div",{style:{width:"220px",flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},q.default.createElement("span",{style:{color:B}},sI(ne.type)),q.default.createElement("span",{style:{fontSize:"13px",color:ne.errors>0?"#ef4444":Y,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ne.name)),q.default.createElement("div",{style:{flex:1,height:"18px",background:L?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},q.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ne.total/te*100,.5)}%`,background:oe[ne.type]||"#6366f1"}})),q.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:B,fontFamily:Pt.mono,textAlign:"right"}},ne.count,"\xD7 \xB7 avg ",Jn(ne.avg)," \xB7 max ",Jn(ne.max)," \xB7 \u03A3 ",Jn(ne.total)))))))};if(u)return q.default.createElement("div",{className:"flex items-center justify-center h-64"},q.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let R={requests:U.reduce((L,te)=>L+te.requests,0),errors:U.reduce((L,te)=>L+te.errors,0),avgLatency:(()=>{let L=U.filter(te=>te.requests>0);return L.length===0?0:Math.round(L.reduce((te,F)=>te+F.avgLatency,0)/L.length)})(),throughput:(U.reduce((L,te)=>L+te.requests,0)/I.minutes).toFixed(1)},ee=n.length===0;return r?q.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},q.default.createElement("div",{style:{padding:"24px 24px 0 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px",paddingBottom:"16px"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},q.default.createElement("div",null,!t&&q.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),q.default.createElement("p",{style:{fontSize:"14px",color:"rgba(255,255,255,0.6)",marginTop:"4px"}},S!==null?`Viewing ${U[S]?.time} \u2022 ${T.length} requests`:`Last ${I.label} \u2022 Click timeline to drill down`)),q.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},q.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px"}},["timeline","agents","actions","tools","spans"].map(L=>q.default.createElement("button",{key:L,onClick:()=>A(L),style:{padding:"6px 12px",background:_===L?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},L))),!e&&q.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"180px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>q.default.createElement("option",{key:L,value:L},L))),q.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),style:{padding:"8px 12px",background:g.action!=="all"?"rgba(239, 68, 68, 0.3)":"rgba(255,255,255,0.1)",border:g.action!=="all"?"1px solid #ef4444":"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px",maxWidth:"220px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Actions"),M.map(L=>q.default.createElement("option",{key:L,value:L},L))),q.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},q.default.createElement("option",{value:"all"},"All Status"),q.default.createElement("option",{value:"success"},"Success"),q.default.createElement("option",{value:"error"},"Error")),q.default.createElement("select",{value:b,onChange:L=>k(L.target.value),style:{padding:"8px 12px",background:"rgba(255,255,255,0.1)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",color:"white",fontSize:"14px"}},q.default.createElement("option",{value:"time"},"Newest first"),q.default.createElement("option",{value:"latency"},"Slowest first")),S!==null&&q.default.createElement("button",{onClick:()=>w(null),style:{padding:"8px 16px",background:"rgba(255,255,255,0.2)",color:"white",borderRadius:"8px",border:"none",fontSize:"14px",fontWeight:"500",cursor:"pointer"}},"Clear Selection")))),d&&q.default.createElement("div",{style:{margin:"0 24px 16px 24px",padding:"12px 16px",background:"rgba(239, 68, 68, 0.1)",borderRadius:"8px",color:"#ef4444",fontSize:"13px"}},"Failed to load traces: ",d),q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},q.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},q.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"}},q.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),q.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries($).map(([L,te])=>q.default.createElement("div",{key:L,style:{display:"flex",alignItems:"center",gap:"6px"}},q.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:te}}),q.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},L.replace("Agent","")))))),q.default.createElement("div",{style:{height:"150px"}},q.default.createElement(_c,{width:"100%",height:"100%"},q.default.createElement(td,{data:U,onClick:G,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries($).map(([L,te])=>q.default.createElement("linearGradient",{key:L,id:`gradient-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:te,stopOpacity:.8}),q.default.createElement("stop",{offset:"95%",stopColor:te,stopOpacity:.1})))),q.default.createElement(Su,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),q.default.createElement(Au,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:N}),q.default.createElement(Nu,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),q.default.createElement(Uc,{contentStyle:{background:"rgba(0,0,0,0.9)",border:"1px solid rgba(255,255,255,0.2)",borderRadius:"8px",padding:"12px"},labelStyle:{color:"white",fontWeight:"600",marginBottom:"8px"},itemStyle:{color:"rgba(255,255,255,0.8)",fontSize:"12px"},formatter:(L,te)=>[L,te.replace("Agent","")]}),Object.keys($).map(L=>q.default.createElement(_u,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:$[L],fill:`url(#gradient-${L})`}))))),q.default.createElement("div",{style:{display:"flex",gap:"24px",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"white"}},R.requests),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},R.errors),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},R.avgLatency,"ms"),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},R.throughput,"/min"),q.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),_==="agents"&&q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},ie,q.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"16px"}},D.map(L=>q.default.createElement(_m,{key:L.agent,name:L.agent,accentColor:$[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:q.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[L.agent]+"30",color:$[L.agent],borderRadius:"4px",whiteSpace:"nowrap"}},L.count," calls"),onClick:()=>ge(L.agent),stats:V(L),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:te=>{te.stopPropagation(),Ie(L.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:g.agent===L.agent?"#ef4444":"inherit",font:"inherit"}},g.agent===L.agent?"Clear filter":"Filter traces"))})))),_==="actions"&&q.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},q.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:"12px"}},O.map(L=>{let te=g.action===L.key;return q.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:te?"all":L.key}),A("timeline")},style:{background:te?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:te?"1px solid #ef4444":`1px solid ${$[L.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},q.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},q.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:$[L.agent]}}),q.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},L.agent),q.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",L.action)),q.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[L.agent]+"30",color:$[L.agent],borderRadius:"4px"}},L.count," calls")),q.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),q.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(L.totalDuration/L.count),"ms")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),q.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),q.default.createElement("div",{style:{fontSize:"13px",color:L.errors>0?"#ef4444":"#10b981"}},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),q.default.createElement("div",null,q.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),q.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},z(L.tokens).toLocaleString()))))}))),_==="spans"&&de(!0),_==="timeline"&&!ee&&q.default.createElement("div",{className:"space-y-4"},T.length===0?q.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):T.map(L=>q.default.createElement(qC,{key:L.id,trace:L,darkMode:!0,expanded:f===L.id,onToggle:()=>m(f===L.id?null:L.id)}))),ee&&_==="timeline"&&q.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},q.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),q.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"))):q.default.createElement("div",{className:"space-y-6"},q.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},q.default.createElement("div",null,q.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),q.default.createElement("p",{className:"text-sm text-gray-500"},S!==null?`Viewing ${U[S]?.time} \u2022 ${T.length} requests`:`Last ${I.label} \u2022 Click timeline to drill down`)),q.default.createElement("div",{className:"flex items-center space-x-3 flex-wrap gap-y-2 min-w-0"},q.default.createElement(xl,null),q.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map(L=>q.default.createElement("button",{key:L,onClick:()=>A(L),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${_===L?"bg-white shadow text-gray-900":"text-gray-600"}`},L))),q.default.createElement("select",{value:g.agent,onChange:L=>v({...g,agent:L.target.value,action:"all"}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",style:{maxWidth:"180px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Agents"),a.map(L=>q.default.createElement("option",{key:L,value:L},L))),q.default.createElement("select",{value:g.action,onChange:L=>v({...g,action:L.target.value}),className:`px-3 py-2 border rounded-lg text-sm focus:ring-2 focus:ring-red-500 ${g.action!=="all"?"border-red-500 bg-red-50":"border-gray-300"}`,style:{maxWidth:"220px",textOverflow:"ellipsis"}},q.default.createElement("option",{value:"all"},"All Actions"),M.map(L=>q.default.createElement("option",{key:L,value:L},L))),q.default.createElement("select",{value:g.status,onChange:L=>v({...g,status:L.target.value}),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},q.default.createElement("option",{value:"all"},"All Status"),q.default.createElement("option",{value:"success"},"Success"),q.default.createElement("option",{value:"error"},"Error")),q.default.createElement("select",{value:b,onChange:L=>k(L.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},q.default.createElement("option",{value:"time"},"Newest first"),q.default.createElement("option",{value:"latency"},"Slowest first")),S!==null&&q.default.createElement("button",{onClick:()=>w(null),className:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors text-sm font-medium"},"Clear Selection"))),d&&q.default.createElement("div",{className:"p-3 bg-red-50 border border-red-200 rounded-lg text-sm text-red-700"},"Failed to load traces: ",d),q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},q.default.createElement("div",{className:"flex justify-between items-center mb-3"},q.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),q.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries($).map(([L,te])=>q.default.createElement("div",{key:L,className:"flex items-center gap-1.5"},q.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:te}}),q.default.createElement("span",{className:"text-xs text-gray-500"},L.replace("Agent","")))))),q.default.createElement("div",{className:"h-36"},q.default.createElement(_c,{width:"100%",height:"100%"},q.default.createElement(td,{data:U,onClick:G,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries($).map(([L,te])=>q.default.createElement("linearGradient",{key:L,id:`gradient-light-${L}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:te,stopOpacity:.6}),q.default.createElement("stop",{offset:"95%",stopColor:te,stopOpacity:.05})))),q.default.createElement(Su,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),q.default.createElement(Au,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),q.default.createElement(Nu,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),q.default.createElement(Uc,{contentStyle:{background:"white",border:"1px solid #e5e7eb",borderRadius:"8px",boxShadow:"0 4px 6px -1px rgba(0,0,0,0.1)"},labelStyle:{color:"#111827",fontWeight:"600",marginBottom:"8px"},formatter:(L,te)=>[L,te.replace("Agent","")]}),Object.keys($).map(L=>q.default.createElement(_u,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:$[L],fill:`url(#gradient-light-${L})`}))))),q.default.createElement("div",{className:"flex gap-6 mt-3 pt-3 border-t border-gray-100"},q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-gray-900"},R.requests),q.default.createElement("div",{className:"text-xs text-gray-500"},"Total Requests")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-red-500"},R.errors),q.default.createElement("div",{className:"text-xs text-gray-500"},"Errors")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-green-600"},R.avgLatency,"ms"),q.default.createElement("div",{className:"text-xs text-gray-500"},"Avg Latency")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-lg font-bold text-amber-500"},R.throughput,"/min"),q.default.createElement("div",{className:"text-xs text-gray-500"},"Throughput")))),_==="agents"&&q.default.createElement("div",null,ie,q.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},D.map(L=>q.default.createElement(_m,{key:L.agent,name:L.agent,accentColor:$[L.agent],subtitle:L.agents?.length?L.agents.join(", "):void 0,badge:q.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:$[L.agent]+"20",color:$[L.agent]}},L.count," calls"),onClick:()=>ge(L.agent),stats:V(L),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[L.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:te=>{te.stopPropagation(),Ie(L.agent)},className:g.agent===L.agent?"text-red-600":"hover:text-gray-700"},g.agent===L.agent?"Clear filter":"Filter traces"))})))),_==="actions"&&q.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},O.map(L=>{let te=g.action===L.key;return q.default.createElement("div",{key:L.key,onClick:()=>{v({...g,action:te?"all":L.key}),A("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${te?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:$[L.agent],borderLeftWidth:te?"2px":"4px"}},q.default.createElement("div",{className:"flex items-center justify-between mb-3"},q.default.createElement("div",{className:"flex items-center gap-2"},q.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:$[L.agent]}}),q.default.createElement("span",{className:"font-semibold text-gray-900"},L.agent),q.default.createElement("span",{className:"text-gray-500"},"#",L.action)),q.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:$[L.agent]+"20",color:$[L.agent]}},L.count," calls")),q.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),q.default.createElement("div",{className:"font-medium"},Math.round(L.totalDuration/L.count),"ms")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),q.default.createElement("div",{className:"text-gray-600"},Math.round(L.minDuration),"ms / ",Math.round(L.maxDuration),"ms")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),q.default.createElement("div",{className:L.errors>0?"text-red-600":"text-green-600"},L.errors," (",(L.errors/L.count*100).toFixed(0),"%)")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),q.default.createElement("div",{className:"text-gray-600"},z(L.tokens).toLocaleString()))))})),_==="tools"&&(j.length===0?q.default.createElement("div",{className:"text-center py-8 text-gray-500 text-sm"},"No tool calls in this window"):q.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},q.default.createElement("div",{className:"flex items-center gap-4 px-4 py-2 text-xs font-medium text-gray-500 border-b border-gray-100"},q.default.createElement("div",{className:"flex-1"},"Tool"),q.default.createElement("div",{className:"w-20 text-right"},"Calls"),q.default.createElement("div",{className:"w-24 text-right"},"Total time"),q.default.createElement("div",{className:"w-20 text-right"},"Avg"),q.default.createElement("div",{className:"w-20 text-right"},"Slowest")),j.map(L=>{let te=j[0].totalDuration?L.totalDuration/j[0].totalDuration*100:0;return q.default.createElement("div",{key:L.name,className:"px-4 py-2 border-b border-gray-50 last:border-0"},q.default.createElement("div",{className:"flex items-center gap-4 text-sm"},q.default.createElement("div",{className:"flex-1 min-w-0"},q.default.createElement("div",{className:"font-medium text-gray-900 truncate",title:L.name},L.name),L.agents.length>0&&q.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:L.agents.join(", ")},L.agents.join(", "))),q.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:Pt.mono}},L.count.toLocaleString(),L.errors>0&&q.default.createElement("span",{className:"text-red-600 ml-1",title:`${L.errors} failed`},"(",L.errors,")")),q.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:Pt.mono}},Jn(L.totalDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Jn(L.avgDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Jn(L.maxDuration))),q.default.createElement("div",{className:"h-1 bg-gray-100 rounded mt-1.5"},q.default.createElement("div",{className:"h-1 bg-green-500 rounded",style:{width:`${Math.max(te,1)}%`}})))}))),_==="spans"&&de(!1),_==="timeline"&&!ee&&q.default.createElement("div",{className:"space-y-4"},T.length===0?q.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):T.map(L=>q.default.createElement(qC,{key:L.id,trace:L,darkMode:!1,expanded:f===L.id,onToggle:()=>m(f===L.id?null:L.id)}))),ee&&_==="timeline"&&q.default.createElement("div",{className:"text-center py-12"},q.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),q.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 we=Z(Q());var KC=Z(Q());function dI({trace:e,darkMode:t,height:r=8}){let n=Zn(t);if(!e)return KC.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 KC.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>KC.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Jn(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":iI[s.type]||"#9ca3af"}})))}var Ws=Z(Q());var yr=Z(Q());var Vr=Z(Q());var W="var(--font-mono)",Pu=e=>e>=1?"success":e>=.7?"warning":"error",bo={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)"}},Rx={object:"=",sample:"~",pass:Fo.success,fault:Fo.error,info:Fo.info,on:"[x]",off:"[ ]",link:Fo.arrow,chevron:Fo.chevronRight};function Na({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Vr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:W,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},Rx.chevron):Vr.default.createElement("span",{title:i,style:{fontFamily:W,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}},Rx[e]||e)}function Ce({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=bo[e]||bo.muted;return Vr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:W,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function We({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Vr.default.createElement(a,{htmlFor:i,style:{fontFamily:W,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function Ln({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Vr.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?W:"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 ps({options:e,value:t,onChange:r,style:n}){return Vr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Vr.default.createElement("button",{key:o.value,type:"button",onClick:()=>r(o.value),"aria-pressed":a,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${a?"var(--color-accent-ui)":"var(--color-border)"}`,color:a?"var(--color-accent-ui)":"var(--color-text-cell)"}},o.label)}))}function pe({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 Vr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function ze({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Vr.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 uh({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Vr.default.createElement(ze,{testId:a},Vr.default.createElement(We,{size:11,spacing:"0.05em"},e),Vr.default.createElement("div",{style:{marginTop:8,fontFamily:W,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Vr.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 Vr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Vr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Vr.default.createElement(We,null,e),t&&Vr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},t)),Vr.default.createElement("div",{style:a},r))}function Mu({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||bo[Pu(u)].strong;return Vr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Vr.default.createElement("span",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Vr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Vr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Vr.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function VC({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Vr.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)=>Vr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(bo[l.tone]||bo.muted).strong,transition:"width 300ms"}})))}function Gr({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i,testId:s}){return Vr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:W,fontSize:o,color:n,textDecoration:"none",...a}},e," ",Rx.link)}function tn({children:e,style:t}){return Vr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:W,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Iu=Z(Q());var oSe=/\/agents\/(\d+)/;function Ra(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function aSe(e){return t=>t===e?{}:null}function e0(e){return t=>e.test(t)?{agentId:t.match(oSe)?.[1]}:null}function GC(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var iSe=e=>e.assistantEnabled!==!1,sSe=e0(/\/agents\/\d+\/(interactions|history)/),lSe=["recording","context","run","scenario_result"],uSe=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function cSe(e){let t=e.match(uSe);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var pI=[{view:"assistant",match:aSe("/assistant"),path:"/assistant",enabled:iSe},{view:"traces",match:Ra("/traces"),path:"/traces"},{view:"metrics",match:Ra("/metrics"),path:"/metrics"},{view:"scenarios",match:Ra("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ra("/interactions"),path:"/interactions"},{view:"tools",match:Ra("/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:Ra("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ra("/analytics"),path:"/analytics"},{view:"projects",match:Ra("/projects"),path:"/projects"},{view:"exploration",match:Ra("/explorations"),path:"/explorations"},{view:"builder",match:Ra("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=sSe(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:GC("/interactions")},{view:"agent-analytics",match:e0(/\/agents\/\d+\/analytics/),path:GC("/analytics")},{view:"editor",match:e0(/\/agents\/\d+\/edit/),path:GC("/edit")},{view:"runner",match:e0(/\/agents\/\d+\/run/),path:GC("/run")},{view:"history",match:e0(/\/agents\/\d+\/?$/)},{view:"replay",match:cSe},{view:"sessions",match:Ra("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ra("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ra("/organization"),path:"/organization"},{view:"settings",match:Ra("/settings"),path:"/settings"}],dSe="list",iY=[{id:"agents",label:null,items:[{view:"assistant",label:"Ask ActiveAgents",glyph:">"},{view:"list",label:"Agents",icon:"agents",badge:"agentCount"},{view:"builder",label:"New Agent",icon:"newAgent"},{view:"sandbox",label:"Run Agents",icon:"demo"},{view:"projects",label:"Projects",glyph:""}]},{id:"observability",label:"Observability",items:[{view:"traces",label:"Traces",icon:"traces"},{view:"interactions",label:"Interactions",icon:"interactions",badge:"pendingInputCount",badgeTone:"attention",badgeTitle:"requests waiting for an answer"},{view:"tools",label:"Tools",icon:"tools"},{view:"mcp",label:"MCP Services",icon:"mcp"},{view:"metrics",label:"Metrics",icon:"metrics"},{view:"evaluations",label:"Evaluations",icon:"evaluations"},{view:"scenarios",label:"Scenarios",icon:"evaluations"},{view:"sessions",label:"Sessions",icon:"replay",also:["replay"]}]},{id:"workspace",label:"Workspace",items:[{view:"organization",label:"Organization",glyph:"\u{1F3E2}"},{view:"settings",label:"Settings",glyph:"\u2699\uFE0F"}]}];function sY(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function t0(e,t={}){return pI.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function lY(e,t={}){for(let r of pI){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:dSe}}function YC(e,{agent:t=null,features:r={}}={}){if(!t0(e,r))return null;let n=pI.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function uY(e){for(let t of iY){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function ch(e,t){return!lSe.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function cY(e={}){return iY.map(t=>({...t,items:t.items.filter(r=>t0(r.view,e))}))}var fI="/api/input_requests",XC="action-agent:input-requests-changed",pY=3e4,dY=100,pSe=["text","choice","confirm","secret"];function fY({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?`${fI}?${n}`:fI}function dh(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function mY(e){let t=dh(e).length;if(t!==0)return t>=dY?`${dY-1}+`:t}function mI(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?dh(e.input_requests).length>0?"awaiting":"poll":"finished"}function gI(e){return pSe.includes(e?.kind)?e.kind:null}function gY(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 hY(e){return e?.id==null?"answer":`answer-${e.id}`}function yY(e){switch(gI(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:hY(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:gY(e).map(t=>t.label)}];default:return[]}}function vY(e,t){if(t?.kind==="form"){let r=t.values?.[hY(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return gY(e).find(r=>r.label===t.text)?.value}var fSe={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function mSe(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:fSe[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 hI(e){return["answered","declined","closed"].includes(e?.state)}async function xY(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${fI}/${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 mSe(a.status,i)}function bY(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 wY(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function SY(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 kY(e,t=Date.now()){return e?`asked ${rv(e,t)}`:null}function _Y(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 CY(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=YC("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function AY(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function ZC(){window.dispatchEvent(new CustomEvent(XC))}function JC({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=pY}={}){let[o,a]=(0,Iu.useState)(null),[i,s]=(0,Iu.useState)(null),l=(0,Iu.useRef)(0),u=(0,Iu.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(fY({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,Iu.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(XC,u),()=>{clearInterval(c),window.removeEventListener(XC,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var gSe={text:"question",choice:"choice",confirm:"approval",secret:"secret"},hSe={answered:"success",declined:"muted",closed:"warning"},yI={fontFamily:W,fontSize:11,color:"var(--color-text-muted)"},ySe={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:W,fontSize:13};function vSe({request:e,busy:t,onSubmit:r}){let[n,o]=(0,yr.useState)("");return yr.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"}},yr.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:ySe}),yr.default.createElement(pe,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function xSe({request:e,busy:t,onApprove:r,onDecline:n}){let o=_Y(e);return yr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},o&&yr.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:W,fontSize:12}},o),yr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},yr.default.createElement(pe,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),yr.default.createElement(pe,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Jp({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=ut(),[a,i]=(0,yr.useState)(!1),[s,l]=(0,yr.useState)(r),u=gI(e),c=hI(s),d=async g=>{if(a||c)return;i(!0);let v=await xY(e,g);i(!1),l(v),hI(v)&&(ZC(),t&&t(e,v))},p=g=>{g!==void 0&&d({answer:g})},f=()=>d({decline:!0}),m=n?CY(e):null,y=wY(e.actor),x=SY(e.expires_at),h=kY(e.created_at);return yr.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}},yr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},yr.default.createElement(Ce,{tone:e.kind==="confirm"?"warning":"info",size:10},gSe[e.kind]||e.kind),yr.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e.agent?.name||"An agent"," is asking"),m&&yr.default.createElement(Gr,{href:Re(m),onClick:()=>lt(m),title:"Open the run this request paused"},yr.default.createElement("span",{"data-testid":"input-request-run-link"},"run #",e.run_id)),x&&yr.default.createElement("span",{style:{...yI,marginLeft:"auto",color:x==="expired"?"var(--color-error-text)":yI.color}},x)),yr.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},e.prompt),yr.default.createElement("div",{style:{...yI,display:"flex",gap:10,flexWrap:"wrap"}},y&&yr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",y),e.tool_name&&yr.default.createElement("span",{"data-testid":"input-request-tool"},"via ",e.tool_name),h&&yr.default.createElement("span",null,h)),c?yr.default.createElement("div",{"data-testid":"input-request-outcome"},yr.default.createElement(Ce,{tone:hSe[s.state]||"muted"},bY(e,s))):yr.default.createElement(yr.default.Fragment,null,(u==="text"||u==="choice")&&yr.default.createElement(bl,{blocks:yY(e),darkMode:o,onAction:g=>p(vY(e,g))}),u==="confirm"&&yr.default.createElement(xSe,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&yr.default.createElement(vSe,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&yr.default.createElement("div",null,yr.default.createElement(pe,{variant:"ghost",size:"sm",onClick:f,disabled:a,testId:"input-request-decline",style:{padding:"2px 0"}},"Decline")),s?.message&&yr.default.createElement("div",{"data-testid":"input-request-error",role:"alert",style:{fontSize:12,color:"var(--color-error-text)"}},s.message)))}function bSe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:Ws.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}},Ws.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},Ws.default.createElement(We,{color:"var(--color-warning-text)"},"Needs input"),Ws.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:W,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),Ws.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=>Ws.default.createElement(Jp,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>Ws.default.createElement(Jp,{key:n.id,request:n,initialOutcome:o})))}function vI({agentId:e=null}){let{requests:t}=JC({agentId:e}),[r,n]=(0,Ws.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=dh(t).filter(s=>!o.has(s.id));return Ws.default.createElement(bSe,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var mr=Z(Q());function EY(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 NY=e=>`/agents/${e.id}/run?new=1`;function r0({inline:e=!1,label:t="New interaction"}){let[r,n]=(0,mr.useState)(e),[o,a]=(0,mr.useState)(null),[i,s]=(0,mr.useState)(null),[l,u]=(0,mr.useState)(""),c=(0,mr.useRef)(null);(0,mr.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,mr.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,mr.useMemo)(()=>EY(o||[],l),[o,l]),p=mr.default.createElement("div",{"data-testid":"new-interaction-agents"},(o?.length||0)>6&&mr.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&&mr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-error)"}},"Could not load agents: ",i),!o&&!i&&mr.default.createElement("p",{className:"text-sm",style:{color:"var(--color-text-muted)"}},"Loading agents\u2026"),o&&d.length===0&&mr.default.createElement(tn,null,o.length===0?"No agents in this workspace yet.":"No agent matches."," ",mr.default.createElement("a",{href:"#",onClick:f=>{f.preventDefault(),lt("/agents/new")},style:{color:"var(--color-info)"}},"Create an agent")),mr.default.createElement("ul",{className:"space-y-1 max-h-80 overflow-y-auto"},d.map(f=>mr.default.createElement("li",{key:f.id},mr.default.createElement("button",{type:"button","data-testid":`new-interaction-agent-${f.id}`,onClick:()=>lt(NY(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"}},mr.default.createElement("span",{className:"flex items-center justify-between gap-2"},mr.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"&&mr.default.createElement(Ce,{tone:"muted"},f.status)),mr.default.createElement("span",{className:"block truncate",style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},f.provider,"/",f.model),f.description&&mr.default.createElement("span",{className:"block text-xs truncate",style:{color:"var(--color-text-secondary)"}},f.description))))));return e?mr.default.createElement(ze,{testId:"new-interaction-card"},mr.default.createElement("div",{className:"flex items-baseline justify-between mb-3 gap-3"},mr.default.createElement("div",null,mr.default.createElement(We,null,"Your agents"),mr.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):mr.default.createElement("div",{ref:c,className:"relative"},mr.default.createElement(pe,{variant:"primary",size:"sm",testId:"new-interaction",onClick:()=>n(f=>!f)},t),r&&mr.default.createElement("div",{className:"absolute right-0 mt-2 z-20 p-3 rounded-xl",style:{width:360,background:"var(--color-card)",border:"1px solid var(--color-border)",boxShadow:"0 8px 24px rgba(0,0,0,0.12)"}},mr.default.createElement(We,{style:{display:"block",marginBottom:8}},"Start a conversation with"),p))}var Ye=Z(Q());var RC=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var Hs=(e,t)=>`${e} ${t}${e===1?"":"s"}`,n0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},e2=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),TY=e=>String(e??"").replace(/\s+/g," ").trim(),Qp=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ph=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},t2=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)}`},xI=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`},MY=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:Hs(Number(t),"turn"),t2(r),xI(n)].filter(Boolean).join(" \xB7 "),IY=(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=Qp(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},wSe={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"}},DY=e=>wSe[e]||{label:e2(e)||"Unknown",tone:"neutral"},r2=e=>["pending","provisioning"].includes(e?.status),jY=e=>e?.status==="ready",SSe={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"}},fs=e=>SSe[e]||{label:e2(e)||"Unknown",tone:"neutral"},qs=e=>["queued","running"].includes(e?.status),s0=e=>["succeeded","failed","cancelled"].includes(e?.status),bI=e=>s0(e)&&e?.diff_pending===!0,wI=e=>s0(e)&&!bI(e),$Y=e=>e?.status==="cancelled"&&wI(e)&&e?.diff==null&&!(Number(e?.event_count)>0),SI=e=>{if(!s0(e)){let t=Number(e?.event_count)||0;return t>0?Hs(t,"event"):""}return MY(null,e)},LY=e=>[fs(e?.status).label,SI(e)].filter(Boolean).join(" \xB7 "),zY=(e,t=80)=>{let r=String(e||"").split(` +`).map(n=>n.trim()).find(Boolean)||"";return n0(r,t)||"(empty prompt)"},id=(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},BY=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?id(e,t,r):e,FY=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},UY=(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}},WY=(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]},wl=(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},kSe={Bash:e=>e.command,Read:(e,t)=>wl(e.file_path,t),Write:(e,t)=>wl(e.file_path,t),Edit:(e,t)=>wl(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${Hs(e.edits.length,"edit")})`:"";return`${wl(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>wl(e.notebook_path,t),NotebookRead:(e,t)=>wl(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${wl(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${wl(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>wl(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)?Hs(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},_Se=["command","file_path","path","url","query","pattern","description","name","prompt"],CSe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!Qp(t))return n0(TY(typeof t=="string"?t:ph(t)),120);let n=kSe[e],o=n?n(t,r):null;if(o==null||o===""){let a=_Se.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?wl(t[a],r):t[a]:o=Object.keys(t).length?ph(t):""}return n0(TY(o),120)},ASe=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]":ph(t)).join(` +`):ph(e),ESe=(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",wSe=e=>{if(!LY(e))return"Done";if(_Y[e.subtype])return _Y[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},SSe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?Hs(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: ${YC(e.subtype).toLowerCase()}`:"System event"}},kSe=/^(hook_|thinking_tokens$)/,_Se=e=>kSe.test(String(e?.subtype||"")),CSe=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: ${YC(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},VC=(e,t)=>({kind:"unknown",label:String(e||"event"),text:Rx(uh(t),300)}),CY=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!Xp(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:vSe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=bSe(xSe(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[VC(`${t} ${e.type||"block"}`,e)]}},ASe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?CY(r,e.type,t):Array.isArray(r)?r.flatMap(n=>CY(n,e.type,t)):[VC(e.type,e)]},ESe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!Xp(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:uh(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}]:[VC(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),_Se(e)?[]:[SSe(e)];case"rate_limit_event":return CSe(e);case"assistant":case"user":return n(ASe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=AY(wSe(e),e);return[{kind:"result",tone:LY(e)?"error":"success",text:o?`${a} \xB7 ${Hs(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[VC(e.type,e)]}},JC=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>ESe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},zY=/^diff (--git|--cc|--combined) /,NSe="\u2026 diff truncated",o0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` -`).map(n=>{if(zY.test(n))return t=!0,{text:n,kind:"meta"};if(n===NSe)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"}})},BY=e=>{let t=o0(e),r=t.filter(a=>a.kind==="meta"&&zY.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${Hs(r,"file")} changed \xB7 +${n} \u2212${o}`},a0="default",i0="other",FY=["sonnet","opus","haiku"],TSe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,hI="actionagent.claudeCode.modelChoice",UY=(e="claude_code")=>[{value:a0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:FY.map(t=>({value:t,label:t})),{value:i0,label:"Other\u2026"}],yI=e=>e===a0||e===i0||FY.includes(e),vI=(e,t="")=>{if(!yI(e)||e===a0)return{model:null};if(e!==i0)return{model:e};let r=String(t??"").trim();return r?TSe.test(r)?{model:r}:{error:`"${Rx(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},WY=(e,t,r,n="claude_code")=>{let{model:o}=vI(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},QC=e=>{let t={choice:a0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!Xp(r)||!yI(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},HY=(e,t="")=>JSON.stringify({choice:yI(e)?e:a0,custom:String(t??"").slice(0,100)}),xI=e=>e?.model||"default model",e0="api_key",t0="local_login",qY="claude /login",KY="sk-ant-api03-\u2026",VY="https://platform.claude.com",GY="https://code.claude.com/docs/en/legal-and-compliance.md",RC=e=>{let t=Xp(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===t0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?t0:e0,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}},YY=(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===t0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:t0,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:qY}}return t?t.configured&&t.needs_replacing===!0?{view:e0,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:e0,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}},XY=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===t0?{text:"Claude Code is not logged in on this machine. Run",loginHint:qY,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},r0="local_login",ZY="codex login",e2=e=>{let t=Xp(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===r0;return{supported:e?.codex_sessions_supported===!0,mode:r?r0:e0,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}},JY=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===r0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:r0,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:ZY}}return t?{view:e0,status:t.configured?`Connected \xB7 ${t.hint}`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,loginHint:null}:r},QY=e=>!e||e.supported!==!0?{text:"This sandbox backend does not support Codex.",loginHint:null,after:null}:e.connected===!0?null:e.mode===r0?{text:"Codex is not logged in on this machine. Run",loginHint:ZY,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var eX=1500,bI=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],OSe=new Set(bI.map(e=>e.id)),wI=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),Zp=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},tX=(e,t="")=>{let r=new URLSearchParams(t),n=OSe.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=Zp(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},fs=e=>`/interactions/code-${e}`,t2=({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}`:""}`},SI=({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()},rX=e=>{let t=(e||[]).filter(wI);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]},nX=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),oX=(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}},aX=e=>(e?.turns||[]).some(qs),iX=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(XC(e.total_cost_usd)),e.duration_ms!=null&&t.push(pI(e.duration_ms)),e.diff_stat&&t.push(`${Hs(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},r2=e=>{let t=[Hs(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(XC(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 ")},sX=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||qs(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},l0=e=>e?.runner==="codex"?"Codex":"Claude Code",lX=(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?` ${l0(e)} will be told you drove the browser.`:"";return n?`Your message waits for the turn that runs${r?` (and ${Hs(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},uX=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},Jp=50,n2=25,o2=75,RY=5,s0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(o2,Math.max(n2,Math.round(t*10)/10)):Jp},cX=(e,{left:t,width:r})=>r>0?s0((e-t)/r*100):Jp,dX=(e,t)=>{switch(t){case"ArrowLeft":return s0(e-RY);case"ArrowRight":return s0(e+RY);case"Home":return n2;case"End":return o2;case"Enter":return Jp;default:return null}};var Ne=Z(J());var Ft=Z(J());var c0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},kI={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 _I({title:e,onClose:t,children:r}){let n=(0,Ft.useRef)(null);return(0,Ft.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Ft.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)"}},Ft.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Ft.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Ft.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")),Ft.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function u0(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 PSe=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 Qp({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Ft.useState)(null),[i,s]=(0,Ft.useState)(!1),[l,u]=(0,Ft.useState)(""),[c,d]=(0,Ft.useState)(!1),[p,f]=(0,Ft.useState)(null),m=(0,Ft.useRef)(null),y=(0,Ft.useRef)(t);y.current=t,(0,Ft.useEffect)(()=>{let v=!1;return u0(n).then(b=>{v||a(b)}).catch(b=>{v||f(b.message)}),()=>{v=!0}},[n]),(0,Ft.useEffect)(()=>{if(!i)return;let v=!1,b,S=async()=>{try{let w=await u0(n);if(v)return;if(a(w),w.authorize_url&&m.current&&(m.current.location=w.authorize_url,m.current=null),w.logged_in){s(!1),u(""),d(!1),r?.(),y.current?.();return}if(!["starting","awaiting_code","submitted"].includes(w.status)){f(PSe(w.status)),d(!1);return}b=setTimeout(S,1200)}catch(w){v||(f(w.message),d(!1))}};return b=setTimeout(S,300),()=>{v=!0,clearTimeout(b)}},[n,i]);let x=async()=>{f(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await u0(n,"POST")),s(!0)}catch(v){m.current?.close(),m.current=null,f(v.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await u0(n,"DELETE")),r?.()}catch(v){f(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let b=l.trim();u(""),d(!0),f(null);try{a(await u0(`${n}/code`,"POST",{claude_login_code:b}))}catch(S){f(S.message),d(!1)}};return Ft.default.createElement("section",{style:c0,"data-testid":"sandbox-claude-login"},Ft.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Ft.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Ft.default.createElement("strong",null,"Claude Code"),Ft.default.createElement(Ce,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Ft.default.createElement(pe,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Ft.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&&Ft.default.createElement(pe,{variant:"primary",onClick:x,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Ft.default.createElement(_I,{title:"Connect your Claude subscription",onClose:h},Ft.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."),Ft.default.createElement("div",{style:{...c0,fontSize:12}},Ft.default.createElement("strong",null,e.repository||"Checkout sandbox"),Ft.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Ft.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"):Ft.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Ft.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Ft.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Ft.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:v=>u(v.target.value),placeholder:"Paste the code from Claude",style:kI,disabled:c||o?.status!=="awaiting_code"}),Ft.default.createElement(pe,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Ft.default.createElement(Ft.default.Fragment,null,Ft.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Ft.default.createElement(pe,{onClick:x,disabled:c},"Start sign-in again")),Ft.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 Dr=Z(J());function d0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,Dr.useState)(null),[i,s]=(0,Dr.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 Dr.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},Dr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Dr.default.createElement("strong",{style:{fontSize:13}},"Before & after"),Dr.default.createElement(Ce,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&Dr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),Dr.default.createElement("div",{style:{overflowX:"auto"}},Dr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},Dr.default.createElement("thead",null,Dr.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(f=>Dr.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)))),Dr.default.createElement("tbody",null,u.map(f=>Dr.default.createElement("tr",{key:`${f.scenario_key}/${f.model}`},Dr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,Dr.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model)),Dr.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),Dr.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)}`,Dr.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),Dr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),Dr.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.before_fault)||"\u2014")))))),Dr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},Dr.default.createElement("a",{href:tt(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Dr.default.createElement("a",{href:tt(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Dr.default.createElement(pe,{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)&&Dr.default.createElement(pe,{size:"sm",onClick:n},"Try again")),o?.run&&Dr.default.createElement("a",{style:{fontSize:12},href:tt(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&Dr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var Tn=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)}`},p0=e=>e==null?"\u2014":Tn(e),CI=(e,t)=>e==null&&t==null?"\u2014":`${p0(e)}\u2192${p0(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`},f0=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)}`},m0=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var ch=(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}`},xo=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`},On=(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 MSe=2e4,fX=()=>{try{return QC(window.localStorage.getItem(hI))}catch{return QC(null)}},ISe=(e,t)=>{try{window.localStorage.setItem(hI,HY(e,t))}catch{}},hX=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),mX={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 Ks({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=mX[e]||mX.neutral;return Ne.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"&&Ne.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function g0({sandbox:e,claudeCode:t,codex:r,onRecheckConnection:n,readOnly:o=!1,focusSessionId:a=null,title:i="Code sessions"}){let{darkMode:s}=ut(),l=`/api/sandboxes/${encodeURIComponent(e.session_id)}/code_sessions`,[u,c]=(0,Ne.useState)(null),[d,p]=(0,Ne.useState)(null),[f,m]=(0,Ne.useState)(null),[y,x]=(0,Ne.useState)(null),[h,g]=(0,Ne.useState)(0),[v,b]=(0,Ne.useState)(0),[S,w]=(0,Ne.useState)(""),[_,k]=(0,Ne.useState)("claude_code"),A=_==="codex"?"Codex":"Claude Code",[C,E]=(0,Ne.useState)(fX),[I,Q]=(0,Ne.useState)(!1),[$,F]=(0,Ne.useState)(!1),[N,O]=(0,Ne.useState)(null),j=(0,Ne.useRef)(null),T=(0,Ne.useRef)(!0),D=(0,Ne.useCallback)(async()=>{let B=await fetch(l),se=await B.json().catch(()=>({}));if(!B.ok)throw new Error(ot(se,`Could not load code sessions (HTTP ${B.status}).`));return se.code_sessions||[]},[l]);(0,Ne.useEffect)(()=>{let B=!1;return c(null),p(null),D().then(se=>{if(B)return;c(se);let ne=se.find(he=>he.id===a)||se.find(qs)||se[0];p(he=>he??ne?.id??null)}).catch(se=>{B||(c([]),O(se.message))}),()=>{B=!0}},[D]),(0,Ne.useEffect)(()=>{a!=null&&p(a)},[a]),(0,Ne.useEffect)(()=>{if(d==null)return;let B=!1,se=null,ne=[],he=0;m(null),x(null),T.current=!0;let et=async()=>{let it=!0,ve=null;try{let ue=await fetch(`${l}/${d}?after=${ne.length}`);ve=ue.status;let Ue=await ue.json().catch(()=>({}));if(B)return;if(!ue.ok)throw new Error(ot(Ue,`Could not load the session (HTTP ${ue.status}).`));let Je=Ue.code_session;ne=$Y(ne,Je),he=0,x(null),m({...Je,events:ne}),c(Tt=>ad(Tt||[],DY(Je),"id"));let rt=Je.evaluation_run_id&&Je.status==="succeeded"&&Je.diff&&!Je.verification?.error&&!["complete","failed"].includes(Je.verification?.status);mI(Je)&&!rt&&(it=!1)}catch(ue){if(B)return;he+=1,x(ue.message),GC(ve,he)&&(it=!1)}it&&!B&&(se=setTimeout(et,1500))};return et(),()=>{B=!0,clearTimeout(se)}},[l,d,h]);let M=(u||[]).find(qs)||null,K=M&&M.id!==d?M.id:null,V=_==="codex"?QY(r):XY(t),L=V?"not_connected":M?"busy":null;(0,Ne.useEffect)(()=>{if(K==null)return;let B=!1,se=setTimeout(async()=>{try{let ne=await D();B||c(ne)}catch{}B||b(ne=>ne+1)},1500*2);return()=>{B=!0,clearTimeout(se)}},[K,v,D]);let G=(0,Ne.useMemo)(()=>JC(f?.events),[f?.events]);(0,Ne.useLayoutEffect)(()=>{let B=j.current;B&&T.current&&(B.scrollTop=B.scrollHeight)},[G.length]);let W=B=>{let se=B.currentTarget;T.current=se.scrollHeight-se.scrollTop-se.clientHeight<40},ie=vI(C.choice,C.custom).error||null,Ie=B=>{E(se=>{let ne={...se,...B};return _==="claude_code"&&ISe(ne.choice,ne.custom),ne})},ge=async()=>{let B=S.trim();if(!(!B||L||I||ie)){Q(!0),O(null);try{let se=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(WY(B,C.choice,C.custom,_))}),ne=await se.json().catch(()=>({}));if(!se.ok)throw ne.code_session&&(c(he=>ad(he||[],ne.code_session,"id")),p(ne.code_session.id)),new Error(ot(ne,`Could not start ${A} (HTTP ${se.status}).`));c(he=>ad(he||[],ne.code_session,"id")),p(ne.code_session.id),w("")}catch(se){O(se.message)}finally{Q(!1)}}},ce=async B=>{F(!0),O(null);try{let se=await fetch(`${l}/${B.id}/cancel`,{method:"POST"}),ne=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ot(ne,`Could not cancel the session (HTTP ${se.status}).`));c(he=>ad(he||[],ne.code_session,"id")),m(he=>he&&he.id===ne.code_session.id?{...he,...ne.code_session}:he)}catch(se){O(se.message)}finally{F(!1)}},R=s?"text-gray-400":"text-gray-500",ee=s?"text-white":"text-gray-900",z=s?"border-gray-700":"border-gray-200",te=`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"}`,U=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,P=`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"}`,Y=f&&f.id===d?f:(u||[]).find(B=>B.id===d)||null;return Ne.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${z}`},!o&&t?.mode==="sandbox_login"&&Ne.default.createElement(Qp,{sandbox:e,onChange:n}),Ne.default.createElement("div",{className:"flex items-center justify-between"},Ne.default.createElement("p",{className:`text-sm font-medium ${ee}`},i),Ne.default.createElement("p",{className:`text-xs ${R}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Ne.default.createElement("div",{className:P},N),!o&&Ne.default.createElement("div",{className:"space-y-2"},Ne.default.createElement("label",{className:`flex items-center gap-2 text-xs ${R}`},"Agent",Ne.default.createElement("select",{"aria-label":"Coding agent",value:_,onChange:B=>{k(B.target.value),E(B.target.value==="claude_code"?fX():QC(null))},disabled:I,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Ne.default.createElement("option",{value:"claude_code"},"Claude Code"),Ne.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Ne.default.createElement("textarea",{value:S,onChange:B=>w(B.target.value),onKeyDown:B=>{B.key==="Enter"&&(B.metaKey||B.ctrlKey)&&ge()},rows:3,maxLength:MSe,disabled:L==="not_connected"||I,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"}`}),Ne.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ne.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${R}`},"Model"),Ne.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:B=>Ie({choice:B.target.value}),disabled:I,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"}`},UY(_).map(B=>Ne.default.createElement("option",{key:B.value,value:B.value},B.label))),C.choice===i0&&Ne.default.createElement("input",{type:"text",value:C.custom,onChange:B=>Ie({custom:B.target.value}),disabled:I,maxLength:100,placeholder:_==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!ie,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"}`})),ie&&C.custom.trim()&&Ne.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},ie),Ne.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ne.default.createElement("p",{className:`text-xs ${R}`},L==="not_connected"&&Ne.default.createElement(Ne.default.Fragment,null,V.text,V.loginHint&&Ne.default.createElement(Ne.default.Fragment,null," ",Ne.default.createElement("code",{className:"font-mono"},V.loginHint)," ",V.after)," ",n&&Ne.default.createElement("button",{type:"button",onClick:n,className:U},"Check again")),L==="busy"&&Ne.default.createElement(Ne.default.Fragment,null,"A session is ",M.status," in this checkout; wait for it to finish or cancel it."," ",M.id!==d&&Ne.default.createElement("button",{type:"button",onClick:()=>p(M.id),className:U},"Show it"))),Ne.default.createElement("button",{type:"button",onClick:ge,disabled:!!L||I||!S.trim()||!!ie,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},I?"Starting\u2026":`Run ${A}`)),N&&Ne.default.createElement("div",{className:P},N)),u&&u.length>0&&Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${R}`},"Sessions"),Ne.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(B=>{let{label:se,tone:ne}=ps(B.status),he=B.id===d;return Ne.default.createElement("button",{key:B.id,type:"button",title:PY(B),onClick:()=>he?g(et=>et+1):p(B.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${he?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ne.default.createElement(Ks,{tone:ne},se),Ne.default.createElement("span",{className:`text-xs ${R}`},B.runner==="codex"?"Codex":"Claude Code"),Ne.default.createElement("span",{className:`flex-1 truncate ${ee}`},MY(B.prompt)),Ne.default.createElement("span",{className:`shrink-0 text-xs font-mono ${R}`},xI(B)),Ne.default.createElement("span",{className:`shrink-0 text-xs ${R}`},xo(B.created_at)))}))),u===null&&Ne.default.createElement("p",{className:`text-xs ${R}`},"Loading sessions\u2026"),Y&&Ne.default.createElement(DSe,{session:Y,rows:G,loaded:!!(f&&f.id===Y.id),detailError:y,cancelling:$,onCancel:()=>ce(Y),onReload:()=>g(B=>B+1),transcriptRef:j,onTranscriptScroll:W,classes:{muted:R,strong:ee,border:z,secondaryButton:te,linkButton:U,errorBox:P}}))}function DSe({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:y,errorBox:x}=u,{label:h,tone:g}=ps(e.status),v=qs(e),b=n0(e),S=OY(e),w=Number(e.dropped_events_count)||0;return Ne.default.createElement("div",{className:`pt-3 border-t space-y-2 ${f}`},Ne.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ne.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Ne.default.createElement(Ks,{tone:g},h),Ne.default.createElement("span",{className:`text-xs truncate ${d}`},[gI(e),xI(e)].filter(Boolean).join(" \xB7 "))),Ne.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Ne.default.createElement("a",{href:tt(fs(e.conversation_id||e.id)),onClick:_=>{_.preventDefault(),lt(fs(e.conversation_id||e.id))},className:y,"data-testid":"code-session-open-interaction"},"Open in Interactions"),v&&Ne.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel"))),Ne.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Ne.default.createElement("div",{className:x},n),Ne.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:hX(c)},!r&&Ne.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Ne.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":v?"The agent is starting\u2026":S?"Cancelled before the agent started.":"No transcript was recorded."),t.map(_=>Ne.default.createElement(AI,{key:_.key,row:_,darkMode:c,muted:d,strong:p})),w>0&&Ne.default.createElement("p",{className:`text-xs italic ${d}`},w," later event",w===1?" was":"s were"," not kept: a transcript keeps its first 1,000.")),e.error_message&&Ne.default.createElement("pre",{className:`${x} whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto`},e.error_message),e.evaluation_run_id&&Ne.default.createElement(d0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),b&&r&&Ne.default.createElement(EI,{diff:e.diff,pending:fI(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function AI({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 Ne.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Ne.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Ne.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Ne.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Ne.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Ne.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Ne.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 Ne.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 Ne.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Ne.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Ne.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var gX={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 EI({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ne.useMemo)(()=>o0(e),[e]);return e==null?t?Ne.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Ne.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Ne.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Ne.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",BY(e)),Ne.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:hX(a)},i.map((s,l)=>{let u=gX[s.kind]||gX.context;return Ne.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var gt=Z(J());function a2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var yX=["left","middle","right"];function vX(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 i2(e,t,r){let n=vX(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:a2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:yX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function xX(e,t,r){let n=i2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:a2(e),button:yX[e.button]||"left",clickCount:1}}var jSe=16,$Se=800;function bX(e,t){let r=vX(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?jSe:e.deltaMode===2?$Se:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:a2(e)}}function NI(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:a2(t)}}function wX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var LSe=600;function SX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=LSe}var TI=32*1024;function kX(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 CX(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 ${_X(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function AX(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${_X(e.total)}\u2026 ${t}%`}function EX(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 h0={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 NX(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...h0.control,...t.control},agent:{...h0.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 h0;default:return e}}function TX(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 OX(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function PX({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 MX(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 IX(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 DX(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 zSe={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 jX(e,{requested:t=!1}={}){return t?null:zSe[e]||"The live view lost its connection to the browser."}var BSe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function $X(e){return e?.status?BSe[e.status]||{label:e.status,tone:"neutral"}:null}function LX(e){return e?.status==="starting"||e?.status==="running"}function zX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function BX(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 FX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",FSe=1024*1024,USe=e=>new Promise(t=>{setTimeout(t,e)});function WSe({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"},AX(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 y0({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,gt.useReducer)(NX,h0),[l,u]=(0,gt.useState)("idle"),[c,d]=(0,gt.useState)(null),[p,f]=(0,gt.useState)(!1),[m,y]=(0,gt.useState)(null),x=(0,gt.useRef)(null),h=(0,gt.useRef)(!1),g=(0,gt.useRef)(0),v=(0,gt.useRef)(!1),b=(0,gt.useRef)(null),S=(0,gt.useRef)(null),w=(0,gt.useRef)({pending:null,decoding:!1}),_=(0,gt.useRef)({message:null,scheduled:!1}),k=(0,gt.useRef)(null),A=(0,gt.useRef)(null),C=(0,gt.useRef)(0),E=i.control.mine,I=(0,gt.useRef)(null),Q=(0,gt.useRef)(i);Q.current=i,(0,gt.useEffect)(()=>{if(E){I.current=i.control.since||Date.now();return}if(I.current===null)return;let ne=I.current;I.current=null,n?.(PX({by:null,takenAt:ne,releasedAt:Date.now(),page:Q.current.page}))},[E]);let $=(0,gt.useCallback)(ne=>{let he=x.current;ne&&he?.readyState===WebSocket.OPEN&&he.send(JSON.stringify(ne))},[]),F=(0,gt.useCallback)(ne=>{let he=w.current;if(he.pending=ne,he.decoding)return;let et=()=>{let it=he.pending;if(he.pending=null,he.decoding=!!it,!it)return;let ve=new Image;ve.onload=()=>{let ue=b.current;ue&&((ue.width!==ve.naturalWidth||ue.height!==ve.naturalHeight)&&(ue.width=ve.naturalWidth,ue.height=ve.naturalHeight),ue.getContext("2d")?.drawImage(ve,0,0)),et()},ve.onerror=et,ve.src=`data:image/jpeg;base64,${it.data}`};et()},[]),N=(0,gt.useCallback)(()=>{g.current+=1;let ne=x.current;if(!ne){u("idle");return}v.current&&ne.readyState===WebSocket.OPEN&&ne.send(JSON.stringify({type:"hand_back"})),h.current=!0,ne.close(1e3)},[]);(0,gt.useEffect)(()=>N,[N]);let O=async()=>{g.current+=1;let ne=g.current;d(null),u("connecting");try{let{ticket:he,url:et}=await BX(e,"view");if(g.current!==ne)return;let it=new WebSocket(et);x.current=it,h.current=!1,it.onopen=()=>it.send(JSON.stringify({type:"auth",ticket:he})),it.onmessage=ve=>{let ue;try{ue=JSON.parse(ve.data)}catch{return}ue.type==="ready"&&u("open"),ue.type==="frame"&&F(ue),(ue.type==="file_upload"&&ue.status!=="progress"||ue.type==="file_chooser"&&!ue.chooser)&&(C.current+=1,y(null)),s(ue)},it.onclose=ve=>{x.current===it&&(x.current=null,C.current+=1,y(null),u("idle"),s({type:"reset"}),d(jX(ve.code,{requested:h.current})))}}catch(he){if(g.current!==ne)return;u("idle"),d(he.message)}},j=(0,gt.useRef)(!1);(0,gt.useEffect)(()=>{!r||j.current||(j.current=!0,O())},[r]);let T=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:ne}=await BX(e,"control");$({type:"take_control",ticket:ne})}catch(ne){d(ne.message)}finally{f(!1)}},D=()=>{$({type:"hand_back"}),b.current?.blur()},M=async ne=>{let he=i.fileChooser,et=CX(ne,he);if(et.error){d(et.error);return}let it=x.current;if(!it||it.readyState!==WebSocket.OPEN)return;C.current+=1;let ve=C.current;d(null),s({type:"clear_error"}),$({type:"file_upload",chooser:he.id,files:et.files});let ue=0;y({sent:ue,total:et.total});try{for(let Ue of Array.from(ne))for(let Je=0;JeFSe&&C.current===ve;)await USe(50);if(C.current!==ve||it.readyState!==WebSocket.OPEN)return;let rt=new Uint8Array(await Ue.slice(Je,Je+TI).arrayBuffer());$({type:"file_chunk",chooser:he.id,data:kX(rt)}),ue+=rt.length,y({sent:ue,total:et.total})}}catch(Ue){d(`Could not read the file: ${Ue.message}`),K()}},K=()=>{C.current+=1,y(null),i.fileChooser&&$({type:"file_cancel",chooser:i.fileChooser.id})},V=E&&!!i.fileChooser,L=V?{onDragOver:ne=>{ne.preventDefault(),ne.dataTransfer.dropEffect="copy"},onDrop:ne=>{ne.preventDefault(),m||M(ne.dataTransfer.files)}}:{};(0,gt.useEffect)(()=>{v.current=E,E?b.current?.focus():b.current?.blur()},[E]),(0,gt.useEffect)(()=>{let ne=b.current;if(!ne||!E)return;let he=et=>{et.preventDefault(),$(bX(et,ne.getBoundingClientRect()))};return ne.addEventListener("wheel",he,{passive:!1}),()=>ne.removeEventListener("wheel",he)},[E,$,l]);let G=()=>b.current?.getBoundingClientRect(),W=ne=>{ne&&(k.current={x:ne.x,y:ne.y},$(ne))},ie=E?{onMouseDown:ne=>{ne.preventDefault(),b.current?.focus(),W(i2("down",ne,G())),window.addEventListener("mouseup",he=>W(xX(he,G(),k.current)),{once:!0})},onMouseMove:ne=>{let he=_.current;he.message=i2("move",ne,G()),!he.scheduled&&(he.scheduled=!0,requestAnimationFrame(()=>{he.scheduled=!1,W(he.message),he.message=null}))},onContextMenu:ne=>ne.preventDefault(),onKeyDown:ne=>{if(SX(ne,A.current)){ne.preventDefault(),A.current=null,S.current?.focus();return}if(A.current=ne.key==="Escape"&&!ne.repeat?ne.timeStamp:null,FX(ne))return;let he=NI("down",ne);he&&(ne.preventDefault(),$(he))},onKeyUp:ne=>{if(FX(ne))return;let he=NI("up",ne);he&&(ne.preventDefault(),$(he))},onPaste:ne=>{ne.preventDefault(),$(wX(ne.clipboardData?.getData("text/plain")))}}:{},Ie=a?"text-gray-400":"text-gray-500",ge=a?"text-white":"text-gray-900",ce=`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"}`,R="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",ee=TX(i),z=OX(i),te=MX(i),U=IX(i,{taking:p}),P=DX(i.page),Y=EX(i),B=l==="open",{frameSize:se}=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:O,className:ce},"Watch live"):gt.default.createElement("button",{type:"button",onClick:N,className:ce},"Stop watching"),B&&(E?gt.default.createElement("button",{ref:S,type:"button",onClick:D,className:R},o):gt.default.createElement("button",{ref:S,type:"button",onClick:T,disabled:U.disabled,className:R},U.label)),te&>.default.createElement("span",{className:`text-xs font-medium ${ge}`},te),l==="connecting"&>.default.createElement("span",{className:`text-xs ${Ie}`},"Connecting\u2026")),c&>.default.createElement("p",{className:`text-xs ${Ie}`,role:"status"},c),i.error&>.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),z&>.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"}`},z,B?" Take over to help, then hand back.":" Watch live, then take over to help."),ee&>.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"}`},ee),l!=="idle"&>.default.createElement("div",{className:"space-y-1"},P&>.default.createElement("p",{className:`text-xs font-mono truncate ${Ie}`,title:P},P),Y&>.default.createElement("p",{className:`text-xs ${Ie}`,role:"status"},Y),gt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...L},gt.default.createElement("canvas",{ref:b,tabIndex:E?0:-1,role:E?"application":"img","aria-label":E?"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 ${E?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${a?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:se?`${se.width} / ${se.height}`:"16 / 10"},...ie}),V&>.default.createElement(WSe,{chooser:i.fileChooser,upload:m,onFiles:ne=>{M(ne)},onCancel:K})),E&>.default.createElement("p",{className:`text-xs ${Ie}`},"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 ${Ie}`},"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 HSe={settings:"Started from Settings",boot_fix:"Fixing a failed boot",evaluation_fix:"Implementing an evaluation fix",chat:"Chat"};function qSe({turn:e,sandboxId:t,darkMode:r,muted:n,strong:o}){let a=(0,Ye.useMemo)(()=>JC(e.events),[e.events]),[i,s]=(0,Ye.useState)(void 0),l=ps(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 Ye.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ye.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ye.default.createElement(Ks,{tone:l.tone},l.label),Ye.default.createElement("span",{className:`text-xs ${n}`},iX(e))),e.context_note&&Ye.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ye.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ye.default.createElement("div",{className:"space-y-1"},a.length===0&&Ye.default.createElement("p",{className:`text-xs ${n}`},qs(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ye.default.createElement(AI,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ye.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!qs(e)&&Ye.default.createElement("div",{className:"space-y-1"},Ye.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&&Ye.default.createElement(EI,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function OI({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ye.useState)(null),[a,i]=(0,Ye.useState)(null),[s,l]=(0,Ye.useState)(""),[u,c]=(0,Ye.useState)(!1),[d,p]=(0,Ye.useState)(null),[f,m]=(0,Ye.useState)(VSe),y=(0,Ye.useRef)(null);y.current=n;let x=(0,Ye.useRef)(null),h=(0,Ye.useRef)(null),g=(0,Ye.useRef)(null),v=YSe(h,!!n),b=(0,Ye.useRef)(null),[S,w]=(0,Ye.useState)(KSe),[_,k]=(0,Ye.useState)(!1),A=f&&!!v,C=he=>{w(he),UX(he)},E=(0,Ye.useRef)(null),I=(0,Ye.useRef)(S);I.current=S;let Q=he=>{he.button!==0||!b.current||(he.preventDefault(),he.currentTarget.setPointerCapture?.(he.pointerId),E.current=b.current.getBoundingClientRect(),k(!0))},$=he=>{if(!E.current)return;let et=cX(he.clientX,E.current);I.current=et,w(et)},F=he=>{E.current&&(he.currentTarget.releasePointerCapture?.(he.pointerId),E.current=null,k(!1),UX(I.current))},N=he=>{let et=dX(S,he.key);et!==null&&(he.preventDefault(),C(et))},O=he=>{m(et=>{let it=typeof he=="function"?he(et):he;return GSe(it),it})},j=(0,Ye.useCallback)(async()=>{let he=nX(y.current?.turns),et=await fetch(`/api/interactions/code-${e}${he?`?${he}`:""}`),it=await et.json().catch(()=>({}));if(!et.ok){i(ot(it,`Could not load the conversation (HTTP ${et.status}).`));return}i(null),o(ve=>oX(ve,it.interaction))},[e]);(0,Ye.useEffect)(()=>{o(null),y.current=null,j()},[j]);let T=aX(n);(0,Ye.useEffect)(()=>{if(!T)return;let he=setInterval(()=>{j()},eX);return()=>clearInterval(he)},[T,j]);let D=n?.turns?.length||0,M=n?.turns?.reduce((he,et)=>he+(et.events?.length||0),0)||0,K=(0,Ye.useRef)(!0);(0,Ye.useEffect)(()=>{let he=g.current;he&&K.current&&(he.scrollTop=he.scrollHeight)},[D,M,v]);let V=()=>{let he=g.current;he&&(K.current=he.scrollHeight-he.scrollTop-he.clientHeight<48)},L=n?.sandbox_session_id,G=n?.turns?.[n.turns.length-1],W=sX(n),ie=n?.browser?.status==="running",Ie=async he=>{he?.preventDefault();let et=s.trim();if(!(!et||!L)){c(!0),i(null);try{let it=await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:et,...d?{handoff:d}:{}})}),ve=await it.json().catch(()=>({}));if(!it.ok)throw new Error(ot(ve,`The message was not sent (HTTP ${it.status}).`));l(""),p(null),await j()}catch(it){i(it.message)}finally{c(!1)}}},ge=async()=>{let he=(n?.turns||[]).filter(qs);for(let et of he)await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${et.id}/cancel`,{method:"POST"});await j()},ce=he=>{p(he),l(et=>et||"I've handed the browser back. "),x.current?.focus()},R=r?"text-gray-400":"text-gray-500",ee=r?"text-white":"text-gray-900",z=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,te=`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"}`,U="px-3 py-1 text-sm rounded text-white bg-red-600 hover:bg-red-700 disabled:opacity-50",P=`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 Ye.default.createElement("div",{className:z,"data-testid":"code-interaction"},a?Ye.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ye.default.createElement("p",{className:`text-sm ${R}`},"Loading\u2026"));let Y=ps(n.status),B=`flex items-center justify-between gap-2 px-4 py-2 border-b ${r?"border-gray-700":"border-gray-200"}`,se=`rounded-lg border flex flex-col min-h-0 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,ne=`px-2 py-0.5 text-xs rounded ${r?"text-gray-300 hover:bg-gray-700":"text-gray-600 hover:bg-gray-100"}`;return Ye.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:v?{height:v}:void 0,"data-testid":"code-interaction"},Ye.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ye.default.createElement("div",{className:"space-y-1"},t&&Ye.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${R}`},"\u2190 Interactions"),Ye.default.createElement("h2",{className:`text-xl font-bold ${ee}`},n.display_name),Ye.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ye.default.createElement(Ks,{tone:Y.tone},Y.label),Ye.default.createElement("span",{className:`text-xs ${R}`},HSe[n.origin]||n.origin," \xB7 ",r2(n)),n.project&&Ye.default.createElement("a",{href:tt(`/projects/${n.project.id}`),onClick:he=>{he.preventDefault(),lt(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ye.default.createElement("div",{className:"flex items-center gap-2"},T&&Ye.default.createElement("button",{type:"button",onClick:ge,className:te},"Stop"),Ye.default.createElement("button",{type:"button",onClick:()=>O(he=>!he),className:te,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),W&&!f&&Ye.default.createElement("p",{role:"alert",className:`${P} shrink-0`},"Claude Code needs you: ",W.reason," ",Ye.default.createElement("button",{type:"button",onClick:()=>O(!0),className:"underline"},"Show the browser")),Ye.default.createElement("div",{ref:b,className:`flex-1 min-h-0 flex flex-col gap-4 ${A?"lg:flex-row lg:gap-0":""} ${_?"select-none cursor-col-resize":""}`},Ye.default.createElement("section",{className:`${se} lg:h-full min-w-0`,style:A?{flex:`0 0 ${S}%`}:void 0,"aria-label":"Conversation",id:`code-interaction-${e}-conversation`},Ye.default.createElement("div",{className:B},Ye.default.createElement("span",{className:`text-sm font-medium ${ee}`},"Conversation"),!f&&Ye.default.createElement("button",{type:"button",onClick:()=>O(!0),className:ne},"Show browser \u203A")),Ye.default.createElement("ol",{ref:g,onScroll:V,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(he=>Ye.default.createElement(qSe,{key:he.id,turn:he,sandboxId:L,darkMode:r,muted:R,strong:ee}))),Ye.default.createElement("form",{onSubmit:Ie,className:`space-y-2 p-4 border-t shrink-0 ${r?"border-gray-700":"border-gray-200"}`},Ye.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${ee}`},"Message ",l0(n)),Ye.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:x,value:s,onChange:he=>l(he.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:G?.result?"Reply, or ask for the next change":"What should happen next?"}),Ye.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ye.default.createElement("span",{className:`text-xs ${R}`,role:"status"},lX(n,{handoff:d})),Ye.default.createElement("button",{type:"submit",className:U,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ye.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),A&&Ye.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(S),"aria-valuemin":n2,"aria-valuemax":o2,tabIndex:0,onPointerDown:Q,onPointerMove:$,onPointerUp:F,onPointerCancel:F,onKeyDown:N,onDoubleClick:()=>C(Jp),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"},Ye.default.createElement("span",{className:`h-12 w-1 rounded-full transition-colors ${_?"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&&Ye.default.createElement("section",{id:`code-interaction-${e}-browser`,className:`${se} lg:h-full min-w-0 flex-1`,"aria-label":"The sandbox\u2019s browser","data-testid":"code-interaction-browser"},Ye.default.createElement("div",{className:B},Ye.default.createElement("span",{className:`text-sm font-medium ${ee}`},"The sandbox\u2019s browser"),Ye.default.createElement("button",{type:"button",onClick:()=>O(!1),className:ne,"aria-label":"Hide the browser"},"Hide \xD7")),Ye.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},W&&Ye.default.createElement("p",{role:"alert",className:P},l0(n)," needs you: ",W.reason),ie?Ye.default.createElement(y0,{sessionId:L,watchOnOpen:!0,onHandBack:ce,handBackLabel:`Hand back to ${l0(n)}`}):Ye.default.createElement("p",{className:`text-xs ${R}`},"The browser is not running."," ",n.project?Ye.default.createElement("a",{href:tt(`/projects/${n.project.id}?tab=browser`),onClick:he=>{he.preventDefault(),lt(`/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 WX="activeagents.codeInteraction.showBrowser",HX="activeagents.codeInteraction.split";function KSe(){try{let e=window.localStorage.getItem(HX);return e===null?Jp:s0(e)}catch{return Jp}}function UX(e){try{window.localStorage.setItem(HX,String(e))}catch{}}function VSe(){let e=null;try{e=window.localStorage.getItem(WX)}catch{}return uX(window.location.search,e)}function GSe(e){try{window.localStorage.setItem(WX,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 YSe(e,t){let[r,n]=(0,Ye.useState)(null);return(0,Ye.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 qX=Z(J());function id({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=sh(e,t);return a?qX.default.createElement("a",{href:tt(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),lt(a))},style:{fontFamily:H,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var XSe=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=td(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=td(a.content)+td(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:Wx(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}]}},KX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],ZSe=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],JSe=[{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"}],QSe=3e4,Iu=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),VX=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 RSe({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=Xn(t),[i,s]=(0,we.useState)(null),[l,u]=(0,we.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,we.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(y=>y.ok?y.json():Promise.reject(new Error("not found"))).then(({trace:y})=>m&&s(y)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let p=!!i,f=(i?.spans||[]).length;return we.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},we.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},we.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},we.default.createElement("span",{title:e.cache_hit?`${Iu(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&&we.default.createElement("span",{className:"text-amber-500",title:`${Iu(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Iu(e.tokens.thinking)),we.default.createElement("span",null,e.model||"unknown-model"),e.provider&&we.default.createElement("span",null,e.provider),we.default.createElement("span",{className:"text-blue-500"},"in:",Iu(e.tokens.input)),we.default.createElement("span",{className:"text-green-500"},"out:",Iu(e.tokens.output)),e.finish_reason&&we.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&we.default.createElement("span",null,Zn(d)),c&&we.default.createElement("a",{href:tt(`/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&&we.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),we.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?we.default.createElement(oI,{trace:i,darkMode:t}):d>0?we.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},we.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,p&&we.default.createElement(we.default.Fragment,null,we.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),we.default.createElement(Vp,{open:n,darkMode:t,size:12})))),n&&i&&we.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},we.default.createElement(Yx,{trace:i,darkMode:t,compact:!0})))}function Du({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,we.useState)([]),[a,i]=(0,we.useState)(!0),[s,l]=(0,we.useState)(null),[u,c]=(0,we.useState)(null),[d,p]=(0,we.useState)({}),{timeWindow:f}=vl(),m=!t&&!e,y=()=>m?tX(Jn(),window.location.search):{view:"list",source:"all",project:null,codeId:null},[x,h]=(0,we.useState)(y),[g,v]=(0,we.useState)([]),{source:b,project:S}=x;(0,we.useEffect)(()=>{if(!m)return;let L=()=>h(y());return window.addEventListener("popstate",L),window.addEventListener("dashboard:navigate",L),()=>{window.removeEventListener("popstate",L),window.removeEventListener("dashboard:navigate",L)}},[m]),(0,we.useEffect)(()=>{m&&fetch("/api/projects").then(L=>L.ok?L.json():{projects:[]}).then(L=>v(L.projects||[])).catch(()=>{})},[m]);let w=L=>{od(L),h(y())},_=L=>w(t2({source:b,project:S,...L})),k=L=>w(fs(L));(0,we.useEffect)(()=>{if(x.view!=="latest")return;let L=SI({source:b==="all"?"claude_code":b,project:S});fetch(`/api/interactions?${L}`).then(G=>G.json()).then(G=>{let W=rX(G.interactions),ie=W?fs(Zp(W.id)):t2({source:b,project:S});window.history.replaceState({},"",tt(ie)),h(y())}).catch(()=>{})},[x.view,b,S]);let A=(0,we.useCallback)(async()=>{try{let L=await fetch(`/api/interactions?${SI({minutes:f.minutes,agentId:e,source:b,project:S})}`);if(!L.ok)throw new Error(`Request failed (${L.status})`);let G=await L.json();o(G.interactions||[]),l(null)}catch(L){l(L.message)}finally{i(!1)}},[f.minutes,e,b,S]);(0,we.useEffect)(()=>{A();let L=setInterval(A,QSe);return()=>clearInterval(L)},[A]);let[C,E]=(0,we.useState)("recent"),I=(0,we.useMemo)(()=>{let L=[...new Set(n.map(G=>G.display_name).filter(Boolean))].sort();return Object.fromEntries(L.map((G,W)=>[G,KX[W%KX.length]]))},[n]),Q=(0,we.useMemo)(()=>{let L=n.reduce((W,ie)=>W+(ie.tokens?.total||0),0),G=new Set(n.map(W=>W.display_name).filter(Boolean));return{interactions:n.length,tokens:L,agents:G.size,avgTokens:n.length?Math.round(L/n.length):0}},[n]),$=(0,we.useMemo)(()=>{if(n.length===0)return[];let L=Date.now(),G=f.bucketSeconds*1e3,W=Math.max(1,Math.round(f.minutes*60/f.bucketSeconds)),ie=Object.keys(I);return Array.from({length:W},(Ie,ge)=>{let ce=L-(W-1-ge)*G,R=ce-G,ee=n.filter(z=>{let te=new Date(z.last_activity_at).getTime();return te>=R&&te1440?new Date(ce).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(ce).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(ie.map(z=>[z,ee.filter(te=>te.display_name===z).length]))}})},[n,I,f]),F=Math.max(0,Math.ceil($.length/6)-1),N=(0,we.useCallback)(L=>{let G=[...L];switch(C){case"tokens":return G.sort((W,ie)=>(ie.tokens?.total||0)-(W.tokens?.total||0));case"messages":return G.sort((W,ie)=>(ie.message_count||0)-(W.message_count||0));default:return G.sort((W,ie)=>String(ie.last_activity_at).localeCompare(String(W.last_activity_at)))}},[C]),O=(0,we.useMemo)(()=>{let L=new Map;n.forEach(W=>{let ie=W.agent_name||W.agent?.name||"Unattributed",Ie=W.action_name,ge=`${ie}#${Ie||""}`;L.has(ge)||L.set(ge,{key:ge,title:Ie?`${ie} ${Ie.charAt(0).toUpperCase()}${Ie.slice(1)} Agent Interactions`:`${ie} Interactions`,sessions:[],tokens:0,lastActivity:W.last_activity_at});let ce=L.get(ge);ce.sessions.push(W),ce.tokens+=W.tokens?.total||0,W.last_activity_at>ce.lastActivity&&(ce.lastActivity=W.last_activity_at)});let G=[...L.values()].map(W=>({...W,sessions:N(W.sessions)}));return C==="tokens"?G.sort((W,ie)=>ie.tokens-W.tokens):C==="messages"?G.sort((W,ie)=>ie.sessions.length-W.sessions.length):G.sort((W,ie)=>String(ie.lastActivity).localeCompare(String(W.lastActivity)))},[n,C,N]),j=async L=>{if(m&&Zp(L)){k(Zp(L));return}if(u===L){c(null);return}if(c(L),!d[L])try{let G=await fetch(`/api/interactions/${L}`);if(G.ok){let W=await G.json();p(ie=>({...ie,[L]:W.interaction}))}}catch{}},[T,D]=(0,we.useState)({}),[M,K]=ah(),V=Xn(r);return m&&x.view==="conversation"?we.default.createElement(OI,{rootId:x.codeId,onBack:()=>w(t2({source:b,project:S}))}):a?we.default.createElement("div",{className:"flex items-center justify-center h-64"},we.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):we.default.createElement("div",{className:"space-y-6"},we.default.createElement("div",{className:"flex items-start justify-between"},!t&&we.default.createElement("div",null,we.default.createElement("h1",{className:"text-2xl font-bold",style:{color:V.textPrimary}},"Interactions"),we.default.createElement("p",{className:"text-sm mt-1",style:{color:V.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),we.default.createElement("div",{className:"flex items-center gap-3"},we.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},we.default.createElement("span",{className:"text-xs px-1",style:{color:V.textMuted}},"Sort"),ZSe.map(L=>we.default.createElement("button",{key:L.id,onClick:()=>E(L.id),className:"px-2 py-1 text-xs rounded transition-colors",style:C===L.id?{background:r?"#2a2a2a":"#ffffff",color:V.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:V.textSecondary}},L.label))),we.default.createElement(xl,null),m&&we.default.createElement(Qx,null))),m&&we.default.createElement("div",{className:"flex flex-wrap items-center gap-3","data-testid":"interactions-filters"},we.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"}},bI.map(L=>we.default.createElement("button",{key:L.id,type:"button",onClick:()=>_({source:L.id}),"aria-pressed":b===L.id,className:"px-2 py-1 text-xs rounded transition-colors",style:b===L.id?{background:r?"#2a2a2a":"#ffffff",color:V.textPrimary}:{color:V.textSecondary}},L.label))),g.length>0&&we.default.createElement("label",{className:"flex items-center gap-1 text-xs",style:{color:V.textSecondary}},"Project",we.default.createElement("select",{value:S||"",onChange:L=>_({project:L.target.value?Number(L.target.value):null}),className:"text-xs rounded border px-1 py-0.5",style:{background:V.cardBg,borderColor:V.cardBorder,color:V.textPrimary}},we.default.createElement("option",{value:""},"All projects"),g.map(L=>we.default.createElement("option",{key:L.id,value:L.id},L.name)))),we.default.createElement("button",{type:"button",onClick:()=>w(`/interactions/latest${S?`?project=${S}`:""}`),className:"px-2 py-1 text-xs rounded border",style:{borderColor:V.cardBorder,color:V.textPrimary},title:"Open the most recent Claude Code or Codex conversation"},"Latest conversation")),we.default.createElement(dI,{agentId:e}),s&&we.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&&we.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:V.cardBg,borderColor:V.cardBorder}},we.default.createElement("div",{className:"flex items-center justify-between mb-3"},we.default.createElement("h3",{className:"text-sm font-semibold",style:{color:V.textPrimary}},"Interactions over time"),we.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(I).map(([L,G])=>we.default.createElement("span",{key:L,className:"flex items-center gap-1.5 text-xs",style:{color:V.textSecondary}},we.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:G}}),L)))),we.default.createElement("div",{className:"h-32"},we.default.createElement(kc,{width:"100%",height:"100%"},we.default.createElement(ed,{data:$},we.default.createElement("defs",null,Object.entries(I).map(([L,G])=>we.default.createElement("linearGradient",{key:L,id:`ix-gradient-${L.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},we.default.createElement("stop",{offset:"5%",stopColor:G,stopOpacity:.6}),we.default.createElement("stop",{offset:"95%",stopColor:G,stopOpacity:.05})))),we.default.createElement(wu,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),we.default.createElement(Cu,{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:F}),we.default.createElement(Eu,{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}),we.default.createElement(Fc,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${V.cardBorder}`,borderRadius:"8px"},labelStyle:{color:V.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(I).map(([L,G])=>we.default.createElement(ku,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:G,strokeWidth:2,fill:`url(#ix-gradient-${L.replace(/\W/g,"-")})`}))))),we.default.createElement("div",{className:"flex items-center gap-8 pt-3 mt-3 border-t",style:{borderColor:V.cardBorder}},[{label:"Interactions",value:Q.interactions.toLocaleString()},{label:"Agents",value:Q.agents.toLocaleString()},{label:"Total tokens",value:Iu(Q.tokens)},{label:"Avg / interaction",value:Iu(Q.avgTokens)}].map(L=>we.default.createElement("div",{key:L.label},we.default.createElement("div",{className:"text-lg font-bold",style:{color:V.textPrimary}},L.value),we.default.createElement("div",{className:"text-xs",style:{color:V.textSecondary}},L.label))))),n.length===0?we.default.createElement("div",{className:"text-center py-12"},we.default.createElement("div",{className:"text-lg",style:{color:V.textMuted}},"No interactions in the last ",f.label),we.default.createElement("p",{className:"text-sm mt-2",style:{color:V.textSecondary}},"Widen the time window, or run an agent to start recording its conversation stream")):we.default.createElement("div",{className:"space-y-8"},O.map(L=>we.default.createElement("div",{key:L.key,className:"space-y-4"},we.default.createElement("div",{className:"flex items-baseline justify-between"},we.default.createElement("h2",{className:"text-sm font-semibold",style:{color:V.textPrimary}},L.title),we.default.createElement("span",{className:"text-xs",style:{color:V.textMuted}},L.sessions.length," ",L.sessions.length===1?"interaction":"interactions",L.tokens>0&&` \xB7 ${Iu(L.tokens)} tokens`)),L.sessions.map(G=>{let W=d[G.id],ie=u===G.id,Ie=T[G.id]||"conversation",ge=G.tokens?.total||0,ce=(G.tokens?.input||0)+(G.tokens?.output||0)||ge;return we.default.createElement(LC,{key:G.id,darkMode:r,className:"shadow-sm"},we.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:()=>j(G.id),style:ie?{background:V.hoverBg}:void 0},we.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},wI(G)?we.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:`${G.turn_count} ${G.turn_count===1?"turn":"turns"}${G.active?", one running now":""}`},G.runner==="codex"?"CODEX":"CLAUDE CODE",G.active?" \xB7 LIVE":""):G.source==="telemetry"?we.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"):we.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),we.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:V.textPrimary}},G.display_name),G.agent&&we.default.createElement("span",{className:"text-sm truncate",style:{color:V.textSecondary}},G.agent.name),G.service_name&&we.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:V.textMuted}},G.service_name)),we.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},we.default.createElement(nd,{darkMode:r,cells:[{key:"activity",width:Ea.count,content:G.message_count>0?`${G.message_count} messages`:`${G.tool_count||0} tool ${G.tool_count===1?"call":"calls"}`},{key:"tokens",width:Ea.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:ge>0&&`${Iu(ge)} tokens`},{key:"context",width:Ea.context,empty:"Context: this interaction recorded no token counts",content:ge>0&&we.default.createElement(rd,{compact:!0,darkMode:r,label:"Context",used:ce,limit:Wx(G.model),segments:[{key:"messages",label:"Context",tokens:ce}]})},{key:"age",width:Ea.age,title:G.last_activity_at||void 0,empty:"No activity recorded",content:VX(G.last_activity_at)&&we.default.createElement("span",{style:{color:V.textMuted}},VX(G.last_activity_at))}]}),G.source!=="telemetry"&&we.default.createElement(id,{kind:"context",id:G.id,title:"Replay this conversation"}),we.default.createElement(Vp,{open:ie,darkMode:r}))),!ie&&we.default.createElement(oh,{darkMode:r,onClick:()=>j(G.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:G.preview?.input,color:jn("user",r).color},{label:"output",text:G.preview?.output,color:jn("assistant",r).color}]}),ie&&we.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:V.cardBorder,background:V.innerBg}},W?we.default.createElement(we.default.Fragment,null,we.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},we.default.createElement(Gx,{options:JSe,value:Ie,onChange:R=>D(ee=>({...ee,[G.id]:R})),darkMode:r}),we.default.createElement("span",{className:"text-xs",style:{color:V.textSecondary}},W.messages.length," ",W.messages.length===1?"message":"messages",W.generations.length>0&&` \xB7 ${W.generations.length} ${W.generations.length===1?"generation":"generations"}`)),Ie==="conversation"&&we.default.createElement(we.default.Fragment,null,W.messages.length===0&&we.default.createElement("div",{className:"text-sm",style:{color:V.textMuted}},"No conversation content captured for this run. Enable content capture in the reporting app to record prompts, tool arguments, and responses."),we.default.createElement(cs,{darkMode:r,messages:W.instructions?[{id:`ctx-${G.id}-system`,role:"system",content:W.instructions,created_at:G.created_at},...W.messages]:W.messages}),(()=>{let R=XSe(W);return R?we.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:V.cardBorder}},we.default.createElement(rd,{...R,label:"Context pressure",estimated:!0,darkMode:r})):null})()),Ie==="spans"&&(W.generations.length===0?we.default.createElement("div",{className:"text-sm",style:{color:V.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):we.default.createElement("div",{className:"space-y-2"},W.generations.map(R=>we.default.createElement(RSe,{key:R.id,generation:R,darkMode:r,maxMs:Math.max(...W.generations.map(ee=>(ee.duration_seconds||0)*1e3),1),expanded:M(`${G.id}:${R.id}`),onToggle:()=>K(`${G.id}:${R.id}`)}))))):we.default.createElement("div",{className:"flex justify-center py-6"},we.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Pe=Z(J());function YX(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(y=>JSON.stringify(d[y]??null)!==JSON.stringify(f[y]??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 y=r.get(d);if(y&&y.scenario===p&&y.first===f)return y.row;let x=m();return r.set(d,{scenario:p,first:f,row:x}),x},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 GX=e=>/^[1-9]\d*$/.test(e||"")?e:null;function PI(e){let t=new URLSearchParams(e),r=GX(t.get("evaluation"));return r?{evaluationId:r,runId:GX(t.get("run"))}:null}async function XX(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 Se=Z(J());var eke=["trace_error_rate","trace_latency"],$I=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],St=(e,t)=>`${e} ${t}${e===1?"":"s"}`,v0=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},ZX=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),DI=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,tke=(e,t)=>t>0?`${e}/${t} \xB7 ${DI(e/t)}`:"\u2014",JX=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Sl=e=>e?.type==="llm_judge"?"judge":eke.includes(e?.type)?"telemetry":"rules",s2=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||ZX(e.key);default:return ZX(e?.key)}},fh=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 ${JX(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 ${JX(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${v0(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},x0=(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"},LI=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,Rp=(e,t=null)=>{let r=LI(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")}`},zI=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),gh=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var b0=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 gh(e).forEach(([,n])=>{zI(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},ef=(e,t)=>!e||typeof e!="object"?null:zI(e)?t&&e[t]||null:e,RX=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,rke=e=>!!e&&["pending","running"].includes(e.status),ph=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,tf=(e,t)=>e!=null&&t?e/t:null,l2=(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=ph(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:ph(i,i.scenarios),reported:i.reported??null,estimated:l2(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:ph(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=b0(e);return o.length?o.map(a=>{let i=gh(e).map(([,s])=>ef(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"}]},eZ=(e,t)=>{let r=gh(e).map(([,o])=>ef(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}},tZ=20,rf=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,w0=(e=[],t=null)=>{let r=rf(e,t),n=e.length=tZ;return`${St(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},rZ=3,nZ=(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"},yh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:rf(r,n)-t,S0=(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"}},oZ=(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}`:""}`}},aZ=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}`:""}`}},Ni=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=ph(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:l2(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??tf(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}},iZ=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"},k0=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},_0=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 ")},nke=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Ni(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:tf(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},vh=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},BI=e=>e?e.standing?e.standing:e.archived_at?"archived":vh(e)?"current":"none":"none",oke=["current","unrecorded"],sZ=(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=vh(d),f=BI(d);if(!(n?!!p:!!p&&oke.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(([x,h])=>({label:x,passed:h?.passed||0,total:h?.total||0})):hh(p).filter(x=>x.label&&x.samples>0).map(x=>({label:x.label,passed:x.passed||0,total:x.samples||0}))).forEach(({label:x,passed:h,total:g})=>{let v=s[x]||={label:x,passed:0,total:0,byEvaluation:{}};v.passed+=h,v.total+=g;let b=v.byEvaluation[d.id]||={passed:0,total:0};b.passed+=h,b.total+=g})}),{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:nke(i),focused:n}},MI=1.96,ake=(e,t)=>{let r=Number(t)||0;if(r<=0)return 0;let n=(Number(e)||0)/r,o=MI*MI,a=n+o/(2*r),i=MI*Math.sqrt(n*(1-n)/r+o/(4*r*r));return Math.max(0,(a-i)/(1+o/r))},lZ=e=>(e?.perModel||[]).filter(t=>t.total>0).map(t=>({...t,ratio:t.passed/t.total,lower:ake(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})),uZ=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 ")},c2=(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=[];gh(t).forEach(([u,c])=>{let d=x0(e,u);(zI(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[Sl(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 ${DI(.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}`:""} ${DI(c.stats.score)} \xB7 expects ${fh(c.criterion)} \xB7 ${tke(c.stats.passed,c.stats.total)} passed`)})}return r},QX=e=>String(e||"").replace(/_/g," "),cZ=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}},d2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=hh(e),i=new Map(a.map(c=>[c.label,c])),s=o&&o.length?o:a.map(c=>c.label),l=e?.scores?._verdict?.winner||null;return s.map(c=>{let d=i.get(c)||{},p=t.filter(C=>n(C)===c),f=p.filter(C=>C?.status&&C.status!=="pending"),m=d.samples??(r||p.length||null),y=d.passed??f.filter(C=>C.status==="passed").length,x=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,E)=>E.fault?{...C,[E.fault]:(C[E.fault]||0)+1}:C,{}),h=C=>p.find(E=>E.fault===C)||null,g=C=>C==="low_quality"?1:0,v=Object.entries(x).sort((C,E)=>E[1]-C[1]||(h(E[0])?1:0)-(h(C[0])?1:0)||g(C[0])-g(E[0])||C[0].localeCompare(E[0])),[b,S]=v[0]||[],w=b?h(b):null,_=m||null,k=C=>C==null||!_?null:C/_,A=d.avg_score??(f.length&&f.some(C=>C.score!=null)?f.filter(C=>C.score!=null).reduce((C,E)=>C+Number(E.score),0)/f.filter(C=>C.score!=null).length:null);return{label:c,model:d.model||c,provider:d.provider||null,winner:l===c,passed:y,total:m,scored:d.samples??f.length,passRate:m?y/m:null,avgScore: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:k(d.input_tokens),avgOutputTokens:k(d.output_tokens),avgTokens:d.input_tokens==null&&d.output_tokens==null?null:k((d.input_tokens||0)+(d.output_tokens||0)),cost:d.cost??null,priced:d.priced??null,reported:d.reported??null,estimated:d.estimated??!1,judgeCost:d.judge_cost??null,judgeCalls:d.judge_calls??0,costPerInteraction:tf(d.cost,d.priced),faults:v.map(([C,E])=>({fault:C,name:QX(C),count:E})),typicalFault:b?{fault:b,name:QX(b),count:S,scenarioKey:w?.scenario_key||null,summary:(w?.diagnosis?.summary||w?.recommendation||"").toString().trim()||null}:null}}).sort((c,d)=>(d.passRate??-1)-(c.passRate??-1)||(d.avgScore??-1)-(c.avgScore??-1)||s.indexOf(c.label)-s.indexOf(d.label))},dZ=(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 ${v0(s,t)}`},pZ=(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}}),FI=(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}),fZ=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,FI(e,r).length])),p2=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:mZ(t)})),mZ=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}`},C0=e=>mZ(e?.sandbox),gZ=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},f2=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",nf=e=>e?.selection||e?.scores?._selection||{},hZ=e=>(nf(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function A0(e,t=[]){let r=nf(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):rke(e)||e.status==="failed"?n.map(o=>o.key):[]}var UI=(e,t=[])=>{let r=nf(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}},yZ=(e=[],t=[])=>of((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),vZ=(e,t=[])=>{let r=nf(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:of(n,t).keys}:{}},WI=272,HI=16,xZ=32,bZ=940,qI="clamp(360px, calc(100vh - 240px), 900px)",wZ=320,ike=3,SZ=3,kZ=720,jI="aa.evaluations.detail",_Z=e=>368+138*e,CZ=e=>504+170*e,AZ=e=>{try{let t=e?.getItem(jI);return t==="tools"||t==="steps"?t:null}catch{return null}},EZ=(e,t)=>{try{t==null?e?.removeItem?.(jI):e?.setItem(jI,t)}catch{}},NZ=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,TZ=(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))},KI=(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},VI=(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},II=e=>e!=null&&Number.isFinite(Number(e))?Number(e):null,m2=e=>{if(!e||e.status==="pending")return null;let t={durationMs:II(e.duration_ms),inputTokens:II(e.input_tokens),outputTokens:II(e.output_tokens)};return t.durationMs==null&&t.inputTokens==null&&t.outputTokens==null?null:t},PZ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=m2(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},MZ=(e={},t=[])=>{let r=PZ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},IZ=(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")}},GI=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,PZ(r.map(o=>e[o]?.[n]))])),DZ=(e=[],t={},r=[])=>{let n=e.map(o=>VI(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},jZ=(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)},dh=e=>String(e).padStart(2,"0"),$Z=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}},LZ=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n}=$Z(e);return t?`${t}:${dh(r)}:${dh(n)}`:`${dh(r)}:${dh(n)}`},YI=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=$Z(e);return o<60?`${o}s`:t?`${t}h ${dh(r)}m`:`${r}m ${dh(n)}s`},g2=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?YI(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},zZ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},ske=(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,BZ=(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&&ske(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},FZ=(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},UZ=(e=[],t=ike)=>{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 ")}]},XI=(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)},WZ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),HZ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var lke=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],qZ=["openai","anthropic","ollama","openrouter","mock"];function uke(e,t=qZ){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=lke.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function cke(e,t,r=qZ){let n=uke(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function KZ(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:cke(r,o)}]:[]}))}function E0(e,{providers:t,qualify:r=!0}){let n=KZ(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function VZ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=KZ(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 N0(e){return e.join(", ")}function GZ(e,t){return[...new Set([...e,...sd(t)])]}function YZ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function XZ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function ZZ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var xh=Z(J()),Vs=typeof window>"u"?xh.useEffect:xh.useLayoutEffect;function T0(e){let[t,r]=(0,xh.useState)(0);return Vs(()=>{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 ea=Z(J());function O0({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,ea.useState)(""),[p,f]=(0,ea.useState)(""),m=(0,ea.useRef)(null),y=(0,ea.useId)(),x=sd(e),h=(0,ea.useRef)(x);h.current=x;let g=k=>{let A=GZ(h.current,k);A.length!==h.current.length&&(t(N0(A)),f(`Added ${A.slice(h.current.length).join(", ")}`)),d("")},v=k=>{t(N0(h.current.filter(A=>A!==k))),f(`Removed ${k}`),m.current?.focus()},b=(k,A)=>{if(k.includes(",")){let{complete:C,rest:E}=YZ(k);g(C),d(E)}else XZ(A.nativeEvent?.inputType,k,r)?g(k):d(k.trimStart())},S=k=>{let A=ZZ(k,c,h.current.length);A==="commit"?(k.preventDefault(),setTimeout(()=>g(m.current?.value||""),0)):A==="removeLast"&&(k.preventDefault(),v(h.current[h.current.length-1]))},w=r.filter(k=>!x.includes(k)),_=[i,a&&`${y}-title`,`${y}-selected`].filter(Boolean).join(" ");return ea.default.createElement("div",{"data-testid":u,onClick:k=>{k.target===k.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},x.map(k=>ea.default.createElement("span",{key:k,style:dke},ea.default.createElement("span",{style:{overflowWrap:"anywhere"}},k),ea.default.createElement("button",{type:"button",onClick:()=>v(k),"aria-label":`Remove ${k}`,title:`Remove ${k}`,style:pke},"\xD7"))),ea.default.createElement(Ql,{inputRef:m,id:s,"aria-label":l,"aria-describedby":_,title:a,value:c,models:w,onChange:b,onKeyDown:S,onBlur:()=>{c.trim()&&g(c)},placeholder:x.length?"Add a model":n,style:{flex:"1 1 80px",minWidth:80,padding:0,border:"none",background:"transparent",font:"inherit",color:"inherit"}}),a&&ea.default.createElement("span",{id:`${y}-title`,style:ZI},a),ea.default.createElement("span",{id:`${y}-selected`,style:ZI},x.length?`Chosen: ${x.join(", ")}`:"No models chosen"),ea.default.createElement("span",{role:"status","aria-live":"polite",style:ZI},p))}var dke={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:H,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},pke={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},ZI={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Ze=Z(J());var Ti=Z(J());var fke="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",mke="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",af="var(--color-text-muted)",h2=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",ju=(e,t=!1)=>Pr(e,{estimated:t}),JZ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${Pr(e.agent.cost,{estimated:e.agent.estimated})}`,St(e.agent.count,h2(e))];e.agent.perInteraction!=null&&n.push(`${ju(e.agent.perInteraction,e.agent.estimated)} each`),r.push(n.join(" \xB7 "))}return e.judge&&r.push(`judge ${Pr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${St(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${Pr(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function sf({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 Ti.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}},Ti.default.createElement(We,{size:10,color:af},e),Ti.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:H,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Ti.default.createElement("div",{style:{marginTop:4,fontFamily:H,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var QZ={value:"\u2026",valueColor:af,sub:"priced when the run completes"};function JI({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${Tn(n.inputTokens)} \xB7 out ${Tn(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:af,sub:"nothing replayed"}:t?QZ:{value:n?Pr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:af,sub:n?`${St(n.count,h2(e))}${n.perInteraction!=null?` \xB7 ${ju(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Ti.default.createElement(sf,{label:"Agent cost",title:fke,testId:"run-spend-agent",...a})}function QI({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[St(o.calls,"call"),_0(o),o.model,k0(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:af,sub:i}:r?QZ:{value:o?Pr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:af,sub:i};return Ti.default.createElement(sf,{label:"Judge cost",title:mke,testId:"run-spend-judge",...s})}function RI({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Ti.default.createElement(ze,{padding:0,testId:r,style:{overflow:"hidden"}},Ti.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Ti.default.createElement(JI,{spend:e}),Ti.default.createElement(QI,{spend:e,judgedBy:t}),Ti.default.createElement(sf,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?Pr(n,{estimated:o}):"\u2014",sub:iZ(e),testId:"run-spend-total"})),o&&Ti.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:H,fontSize:11,color:af}},al))}function uf({run:e,testId:t,short:r=!1}){if(!e)return Ze.default.createElement(Ce,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Ze.default.createElement(Ce,{tone:"error",testId:t},"failed");if(e.status==="pending")return Ze.default.createElement(Ce,{tone:"warning",testId:t},"queued");if(e.status==="running")return Ze.default.createElement(Ce,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=qn(e.samples_passed||0,e.samples_evaluated);return Ze.default.createElement(Ce,{tone:Ou(RX(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 Ze.default.createElement(Ce,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${aa(n)}`)}return Ze.default.createElement(Ce,{tone:"muted",testId:t},"no samples")}function v2({run:e,testId:t="run-version"}){let r=aZ(e);return r?Ze.default.createElement(Ce,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var lf={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},P0={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},RZ=Ea.cost+32,gke=e=>hh(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:On(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),tJ=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,Rp(t,e),mh(t,e),C0(e)&&`against ${C0(e)}`].filter(Boolean).join(" \xB7 ");function x2({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=yh(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):S0(l,d,{olderNumber:p}),m=f&&d?oZ(l,d):null,y=Ni(l);return{run:l,number:c,latest:u===0,when:xo(l.completed_at||l.created_at),meta:tJ(l,r,n),bars:i?i(l):gke(l),delta:f,version:m,spend:y,selected:l.id===o}})}function nD({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=x2({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Ze.default.createElement(Rr,{title:u,meta:w0(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Ze.default.createElement(en,null,"[ ] no runs yet"),Ze.default.createElement("div",{style:{minWidth:920}},p.map(f=>Ze.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"}`}},Ze.default.createElement("div",{style:{minWidth:0}},Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ze.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Ze.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Ze.default.createElement(Ce,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Ze.default.createElement(Ce,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Ze.default.createElement(v2,{run:f.run})),Ze.default.createElement("div",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Ze.default.createElement("div",{style:{fontFamily:H,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Ze.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Ze.default.createElement("span",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Ze.default.createElement(Pu,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Ze.default.createElement(nd,{darkMode:d,cells:[{key:"agent",width:RZ,title:f.spend?.agent?`Agent: ${St(f.spend.agent.count,h2(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${ju(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&&Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11}},Ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Pr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:RZ,title:f.spend?.judge?`Judge: ${St(f.spend.judge.calls,"call")}${_0(f.spend.judge)?` \xB7 ${_0(f.spend.judge)}`:""}${k0(f.spend.judge)?` \xB7 ${k0(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11}},Ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Pr(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&&Ze.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:600,color:lf[f.delta.tone]||lf.muted}},f.delta.text),f.version&&Ze.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:H,fontSize:10,color:P0[f.version.kind]||P0.same}},f.version.text))},{key:"badge",width:132,content:Ze.default.createElement(uf,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Ze.default.createElement(Na,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var eJ='[data-testid="evaluation-run"]',hke=150,eD=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,tD=(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))},yke=(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},vke=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:xo(e.completed_at||e.created_at),meta:tJ(e,t,r),bars:n||[],delta:null,version:null,spend:Ni(e),selected:e.id===o}),rD={fontFamily:H,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function xke({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Ze.default.createElement("span",{style:{...rD,width:96,flexShrink:0},title:e.label||void 0},e.short),Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Ze.default.createElement("div",{title:t},Ze.default.createElement(Pu,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function y2({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"?yke(e.bars):null,c=UZ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Ze.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}},Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Ze.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Ze.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Ze.default.createElement(v2,{run:s}),Ze.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Ze.default.createElement(uf,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Ze.default.createElement(xke,{key:p.label||"all",bar:p})),u&&Ze.default.createElement(FC,{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&&Ze.default.createElement("div",{style:{...rD,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Ze.default.createElement("div",{"data-testid":"evaluation-run-note",style:rD,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Ze.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:H,fontSize:10,minWidth:0}},e.delta&&Ze.default.createElement("span",{style:{fontWeight:600,color:lf[e.delta.tone]||lf.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Ze.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Pr(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function oD({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:y=null,expandedHeight:x=wZ,testId:h="suite-runs-panel",style:g}){let v=e??x2({runs:t,runCount:r,evaluation:n,agentName:o,selectedId:a,previousRun:s,barsFor:l,deltaFor:u}),b=t.length||!e?t:e.map(W=>W.run),S=a??v.find(W=>W.selected)?.run.id??null,w=W=>W.run.id===S,_=d&&!v.some(W=>W.run.id===d.id)?vke(d,{evaluation:n,agentName:o,bars:p,selectedId:S}):null,k=f==="strip",A=k?nZ(v.map(W=>W.run),{limit:m,selectedId:S}).map(W=>v[W]):v,C=_?[_,...A]:A,E=v.length-A.length,I=k&&Number.isFinite(m)&&E>0,Q=rf(b,r)-b.length,$=(C.find(w)||C[0])?.run.id??null,F=(v.find(w)||v[0])?.run.id??null,[N,O]=(0,Ze.useState)(!1),j=(0,Ze.useRef)(null),T=(0,Ze.useRef)(null),D=(0,Ze.useRef)(null),M=(0,Ze.useRef)(null);(0,Ze.useEffect)(()=>()=>clearTimeout(M.current),[]),(0,Ze.useEffect)(()=>{I||O(!1)},[I]);let K=new Map(C.concat(v).map(W=>[String(W.run.id),W.run])),V=W=>{clearTimeout(M.current),M.current=setTimeout(()=>i?.(W),hke)},L=(W,{next:ie,prev:Ie,axis:ge})=>ce=>{let R=W.current,ee=R?Array.from(R.querySelectorAll(eJ)):[];if(ee.length===0)return;let z=ce.target.closest(eJ),te=ee.indexOf(z),U;if(ce.key===ie)U=ee[Math.min(te+1,ee.length-1)];else if(ce.key===Ie)U=ee[Math.max(te-1,0)];else if(ce.key==="Home")U=ee[0];else if(ce.key==="End")U=ee[ee.length-1];else return;if(ce.preventDefault(),!U||U===z)return;U.focus({preventScroll:!0}),tD(R,U,ge);let P=K.get(U.dataset.runId);P&&V(P)};Vs(()=>{if(N||D.current==null)return;let W=eD(T.current,D.current);D.current=null,W?.focus({preventScroll:!0})},[N]),Vs(()=>{S!=null&&(tD(T.current,eD(T.current,S),"x"),tD(j.current,eD(j.current,S),"y"))},[S,f,N]);let G=Q>0&&Ze.default.createElement("div",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${St(Q,"older run")} \xB7 reachable by link`);return k?Ze.default.createElement(Rr,{title:"Runs",meta:w0(b,r),testId:h,style:g},Ze.default.createElement("div",{ref:T,"data-testid":"run-strip",onKeyDown:L(T,{next:"ArrowRight",prev:"ArrowLeft",axis:"x"}),style:{display:"flex",overflowX:"auto",scrollbarGutter:"stable",position:"relative"}},C.length===0&&Ze.default.createElement(en,{style:{flex:1}},"[ ] no runs yet"),C.map((W,ie)=>Ze.default.createElement(y2,{key:W.run.id,row:W,card:!0,selected:w(W),tabIndex:$===W.run.id?0:-1,onOpen:i,noteFor:c,style:{flex:"1 1 0",minWidth:200,borderTop:"none",borderRight:ieO(W=>!W),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:H,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${St(E,"earlier run")}`),I&&N&&Ze.default.createElement("div",{ref:j,onKeyDown:L(j,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{maxHeight:x,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},v.map(W=>Ze.default.createElement(y2,{key:W.run.id,row:W,selected:w(W),tabIndex:F===W.run.id?0:-1,noteFor:c,onOpen:ie=>{D.current=ie.id,O(!1),i?.(ie)}})),G)):Ze.default.createElement(Rr,{title:"Runs",meta:w0(b,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:y||void 0,...g},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Ze.default.createElement("div",{ref:j,onKeyDown:L(j,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{flex:1,minHeight:0,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},_&&Ze.default.createElement(Ze.default.Fragment,null,Ze.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${b.length}`),Ze.default.createElement(y2,{row:_,selected:w(_),tabIndex:$===_.run.id?0:-1,onOpen:i,noteFor:c})),!_&&v.length===0&&Ze.default.createElement(en,null,"[ ] no runs yet"),v.map(W=>Ze.default.createElement(y2,{key:W.run.id,row:W,selected:w(W),tabIndex:$===W.run.id?0:-1,onOpen:i,noteFor:c})),G))}var rJ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[St(n,"run"),r?`latest #${yh(r,0,e,t)} ${xo(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${qn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Ht=Z(J());var ms="var(--color-text-muted)",aD=3,nJ={passed:0,total:0},oJ={items:0,faults:0,scenarios:0},bke={keys:[],dropped:[]},kl=(e,t,r={})=>({fontFamily:H,fontSize:e,color:t,...r}),wke=e=>typeof window>"u"?"#":tt(e),Ske=e=>{let[t,r]=(0,Ht.useState)(()=>Date.now());return(0,Ht.useEffect)(()=>{if(!e)return;r(Date.now());let n=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(n)},[e]),t};function aJ({short:e,label:t}){return Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ht.default.createElement("span",{style:kl(10,ms,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Ht.default.createElement("span",{style:kl(11,ms)},"\u2014"))}function iD({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=nJ,settledCount:m=0,settledFailed:y=0,expectedResults:x=0,running:h=!1,loading:g=!1,spend:v=null,fixSummary:b=oJ,selectionLabel:S=null,sandboxLabel:w=null,reportPath:_=null,rerun:k=bke,onSelectLatest:A,onWatchLatest:C,onJumpToFix:E,onRerunFailed:I,onRunAgain:Q}){let{darkMode:$}=ut(),F=Ske(h);if(!e)return null;let N=e.status==="failed",O=e.status==="complete",j=h?`started ${xo(e.created_at)}`:xo(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}${w?` \xB7 against ${w}`:""}`,D=k?.keys||[],M=k?.dropped||[],K=M.length?`${D.length} of ${D.length+M.length}`:`${D.length}`,V="Replay every scenario that failed on any model, under the models in the picker"+(M.length?` \xB7 not replayed (disabled or removed): ${M.join(", ")}`:""),L=jZ(e,F),G=[{key:"duration",width:Ea.duration,content:L!=null&&Ht.default.createElement("span",{style:kl(11)},h?LZ(L):YI(L)),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&&Ht.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Ht.default.createElement("span",{style:kl(11,lf[d.tone]||lf.muted,{fontWeight:600})},d.text),p&&Ht.default.createElement("span",{"data-testid":"run-version-delta",style:kl(10,P0[p.kind]||P0.same)},p.text)),title:"Samples passed, against the run before",empty:O&&!d?"Movement is read against the run before, which is not loaded":"Movement is read once the run completes"},{key:"badge",content:Ht.default.createElement(uf,{run:e,testId:"suite-run-badge"})}],W=f||nJ,ie=W.total>0?W.passed/W.total:null,Ie=N?{value:"\u2014",valueColor:ms,sub:m?`${m} of ${x} before it failed`:"run failed"}:h?{value:`${W.passed} passed`,sub:Ht.default.createElement("span",{"data-testid":"suite-run-progress"},`${m} of ${x} results in${y?` \xB7 ${y} failed`:""}`)}:{value:qn(W.passed,W.total),valueColor:ie==null?ms:vo[Ou(ie)].text,sub:`${Math.max(W.total-W.passed,0)} failed \xB7 ${St(i,"scenario")} \xD7 ${St(l.length,"model")}`},ge=c.slice(0,aD),ce=Ht.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:5,fontWeight:400,lineHeight:"normal"}},c.length===0&&l.length===0&&Ht.default.createElement("span",{style:kl(11,ms)},"\u2014"),c.length===0&&l.map(B=>Ht.default.createElement(aJ,{key:B,short:On(B).short,label:B})),ge.map(B=>B.passed==null||B.total==null?Ht.default.createElement(aJ,{key:B.label||"all",short:B.short,label:B.label}):Ht.default.createElement(Pu,{key:B.label||"all",label:B.short,labelWidth:110,passed:B.passed,total:B.total,height:4,valueWidth:48}))),R=c.length>aD?Ht.default.createElement("span",{style:kl(10,ms)},`+${c.length-aD} more`):void 0,ee=b||oJ,z=N?{value:"\u2014",valueColor:ms,sub:"\u2014"}:g?{value:"\u2026",valueColor:ms,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:ms,sub:"scoring\u2026"}:ee.items>0?{value:ee.items,valueColor:vo.error.text,sub:Ht.default.createElement("span",{style:{color:"var(--color-info)"}},`${St(ee.faults,"fault")} across ${St(ee.scenarios,"scenario")} ${Xx.link}`)}:{value:"0",valueColor:ms,sub:"nothing to fix"},te=()=>E?.(),P=N?{}:{role:"button",tabIndex:0,onClick:te,onKeyDown:B=>{(B.key==="Enter"||B.key===" ")&&(B.preventDefault(),te())},style:{cursor:"pointer"}},Y=`The faults this run found, grouped into fixes${N?"":" \u2014 opens What to fix"}`;return Ht.default.createElement(ze,{padding:0,testId:"suite-run-header",style:{overflow:"hidden"}},Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",padding:"10px 16px",borderBottom:"1px solid var(--color-border-light)"}},Ht.default.createElement("span",{style:kl(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Ht.default.createElement("span",{style:kl(11,ms,{whiteSpace:"nowrap"})},j),n&&Ht.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Ht.default.createElement(v2,{run:e}),Ht.default.createElement("span",{style:kl(11,ms,{minWidth:0,textWrap:"pretty"})},T),S&&Ht.default.createElement(Ce,{tone:"muted",size:10,style:{padding:"1px 6px"},testId:"suite-run-selection"},S),!n&&Ht.default.createElement(vn,{onClick:()=>A?.(),title:"Show the suite's latest run",testId:"suite-latest-run"},`latest${r!=null?` #${r}`:""}`),o&&Ht.default.createElement(vn,{onClick:()=>C?.(),title:"A newer run is going; show it as it replays",testId:"suite-watch-latest"},`#${o.number??r??"?"} is running \xB7 watch`),O&&!g&&D.length>0&&Ht.default.createElement(vn,{onClick:()=>I?.(),title:V,testId:"suite-rerun-failed"},`re-run failed (${K})`),N&&Ht.default.createElement(vn,{onClick:()=>Q?.(),title:"Replay what this run was asked to, under the models in the picker",testId:"suite-run-again"},"run again"),_&&Ht.default.createElement(vn,{href:wke(_),onClick:()=>lt(_),title:"The run rendered as a report page",testId:"suite-run-report"},"run report"),Ht.default.createElement("span",{style:{marginLeft:"auto"}},Ht.default.createElement(nd,{darkMode:$,cells:G}))),Ht.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Ht.default.createElement(sf,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...Ie}),Ht.default.createElement(sf,{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:ce,sub:R}),Ht.default.createElement(JI,{spend:v,pending:h,failed:N}),Ht.default.createElement(QI,{spend:v,judgedBy:u,pending:h,failed:N}),Ht.default.createElement(sf,{label:"To fix",title:Y,testId:"suite-to-fix",...P,...z})),h&&x>0&&Ht.default.createElement(FC,{parts:[{value:m-y,tone:"success"},{value:y,tone:"error"}],total:x,height:4,radius:0,role:"progressbar","aria-label":"Results in","aria-valuemin":0,"aria-valuemax":x,"aria-valuenow":m,"aria-valuetext":`${m} of ${x} results in${y?`, ${y} failed`:""}`,testId:"suite-run-progress-bar"}),N&&Ht.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 No=Z(J());function df({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=>x0(e,m)),c={fontFamily:H,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:H,fontSize:11,color:"var(--color-text-cell)"},p=(m,y,x)=>No.default.createElement("span",{"data-testid":y,title:x,style:{...c,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},m),f=JZ(n,{total:o});return No.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},No.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},No.default.createElement("span",{style:c},"judge"),No.default.createElement("span",{style:{...d,fontWeight:600}},mh(e,t)),No.default.createElement("span",{style:{...c,marginLeft:8}},"criteria"),u.length===0&&No.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,y)=>No.default.createElement(No.default.Fragment,{key:m.key||y},y>0&&No.default.createElement("span",{style:c},"\xB7"),No.default.createElement("span",{style:d,title:fh(m)||void 0},s2(m)),Sl(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Sl(m)==="judge"&&p("judge",void 0,"Scored by the judge model; needs provider credentials"))),No.default.createElement("span",{style:{...c,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},q1(.7))),No.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},No.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&No.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&&No.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},al),a&&No.default.createElement(vn,{href:tt(a),onClick:()=>lt(a),title:"The run rendered as a report page"},"run report"),i&&No.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:H,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var kke=["tools","contains","not_contains"];function _ke(e){let t=e.expectations||{},r=[];return kke.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 iJ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(_ke(n))}),t.join(` -`)}var de=Z(J());var jr=Z(J());var Cke=e=>e>=.85?"success":e>=.7?"warning":"error";function bh({label:e,children:t,title:r,nowrap:n=!0}){return jr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function M0({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:y=!1,judgeCost:x=null,judgeCalls:h=0,judgeEstimated:g=!1,unit:v="interaction",badges:b=[],note:S,testId:w="model-scorecard"}){let _=o!=null&&a>0,k=_?o/a:null,A=_?Ou(k):i!=null?Cke(i):"muted",C=vo[A].strong,E=x!=null||h>0;return jr.default.createElement(ze,{padding:"14px 16px",testId:w,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},jr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},jr.default.createElement("span",{style:{fontFamily:H,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&jr.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},r),n&&jr.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),jr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},jr.default.createElement("span",{style:{fontFamily:H,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},_?qn(o,a):i!=null?aa(i):"\u2014"),jr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},_?`${v==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),jr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},jr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:C,width:`${Math.round((k??i??0)*100)}%`}})),jr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:H,fontSize:11,color:"var(--color-text-secondary)"}},jr.default.createElement(bh,{label:"score"},aa(i)),s&&jr.default.createElement(bh,{label:"criteria"},qn(s.cleared,s.scored)),l!=null&&jr.default.createElement(bh,{label:"latency"},zn(l)),u!=null&&jr.default.createElement(bh,{label:"p50 / p95"},`${zn(u)} / ${zn(c)}`),(d!=null||p!=null)&&jr.default.createElement("span",{style:{whiteSpace:"nowrap"}},jr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},p0(d))," \xB7 ",jr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},p0(p))),f!=null&&jr.default.createElement(bh,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${ju(m,y)} per ${v}`:""}${y?` \xB7 ${Sm()}`:""}`},Pr(f,{estimated:y}),m!=null&&jr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${ju(m,y)} / ${v}`)),E&&jr.default.createElement(bh,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Pr(x,{estimated:g}),jr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${St(h,"call")}`))),(b.length>0||S)&&jr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},b.map(I=>jr.default.createElement(Ce,{key:I.text,tone:I.tone,testId:I.testId},I.text)),S&&jr.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:S.color||"var(--color-text-muted)"}},S.text)))}var vr=Z(J());var sD={fontFamily:H,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},lD={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},pf={...lD,fontFamily:H,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},ff={...sD,textAlign:"right"},I0=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function D0({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(p=>p.cost!=null),s=e.some(p=>p.judgeCost!=null||p.judgeCalls>0),l=e.some(p=>p.avgTokens!=null),u=e.some(p=>p.avgDurationMs!=null),c=e.some(p=>p.p50DurationMs!=null),d=e.some(p=>p.cost!=null&&p.estimated||p.judgeCost!=null&&n);return vr.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:a},vr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},vr.default.createElement(We,null,o),vr.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),d&&vr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},al)),vr.default.createElement("div",{style:{overflowX:"auto"}},vr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},vr.default.createElement("thead",null,vr.default.createElement("tr",{style:{background:"var(--color-muted)"}},vr.default.createElement("th",{style:sD},"Model"),vr.default.createElement("th",{style:ff},"Passed"),vr.default.createElement("th",{style:ff},"Mean score"),u&&vr.default.createElement("th",{style:ff},"Avg latency"),c&&vr.default.createElement("th",{style:ff,title:"Median and 95th percentile latency, nearest rank"},"P50 / P95"),l&&vr.default.createElement("th",{style:ff,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&vr.default.createElement("th",{style:ff,title:`Cohort spend, and per ${t}`},"Cost"),s&&vr.default.createElement("th",{style:ff,title:"What the judge spent scoring this model's answers"},"Judge"),vr.default.createElement("th",{style:{...sD,width:"34%"}},"Typical fault"))),vr.default.createElement("tbody",null,e.map(p=>{let{short:f,provider:m}=On(p.label,p.provider||"");return vr.default.createElement("tr",{key:p.label,"data-testid":"model-comparison-row","data-model":p.label},vr.default.createElement("td",{style:{...lD,whiteSpace:"nowrap"}},vr.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:p.label},f),p.winner&&vr.default.createElement("span",{style:{marginLeft:6,fontFamily:H,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),m&&vr.default.createElement("span",{style:{display:"block",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},m)),vr.default.createElement("td",{style:{...pf,color:I0(p.passRate),fontWeight:600}},qn(p.passed,p.total)),vr.default.createElement("td",{style:pf},aa(p.avgScore)),u&&vr.default.createElement("td",{style:pf},p.avgDurationMs==null?"\u2014":zn(p.avgDurationMs)),c&&vr.default.createElement("td",{style:pf,"data-testid":"model-comparison-percentiles"},p.p50DurationMs==null?"\u2014":`${zn(p.p50DurationMs)} / ${zn(p.p95DurationMs)}`),l&&vr.default.createElement("td",{style:pf,title:p.avgInputTokens==null?void 0:`${Math.round(p.avgInputTokens)} in \xB7 ${Math.round(p.avgOutputTokens||0)} out per ${t}`},p.avgTokens==null?"\u2014":Tn(Math.round(p.avgTokens))),i&&vr.default.createElement("td",{style:pf,title:p.cost!=null&&p.estimated?Sm():void 0,"data-testid":"model-comparison-cost"},Pr(p.cost,{estimated:p.estimated}),p.costPerInteraction!=null&&vr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Pr(p.costPerInteraction,{estimated:p.estimated})}/${t}`)),s&&vr.default.createElement("td",{style:pf,"data-testid":"model-comparison-judge"},p.judgeCost==null&&!p.judgeCalls?"\u2014":Pr(p.judgeCost,{estimated:n}),p.judgeCalls>0&&vr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},St(p.judgeCalls,"call"))),vr.default.createElement("td",{style:{...lD,color:p.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},dZ(p)))})))))}var To=Z(J());var Ake=[0,25,50,75,100],Eke={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},sJ={display:"contents"},uD={gridColumn:"1 / -1"},Nke={fontFamily:H,fontSize:11,color:"var(--color-text-secondary)"};function Tke({passRate:e,interval:t}){return To.default.createElement("span",{"aria-hidden":"true",style:{position:"relative",display:"block",height:14}},To.default.createElement("span",{style:{position:"absolute",left:0,right:0,top:6,height:2,background:"var(--color-muted)"}}),t&&To.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&&To.default.createElement("span",{style:{position:"absolute",top:2,left:`${e}%`,width:10,height:10,marginLeft:-5,borderRadius:"50%",background:"var(--color-info)"}}))}function cD({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return To.default.createElement("div",{style:Eke,"data-testid":t},To.default.createElement(We,{size:10,color:"var(--color-text-muted)",style:uD},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=On(n.label,"");return To.default.createElement("div",{key:n.label,style:sJ,"data-testid":"comparison-interval-row","data-model":n.label},To.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),To.default.createElement(Tke,{passRate:n.passRate,interval:n.interval}),To.default.createElement("span",{style:Nke},To.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")}`))}),To.default.createElement("div",{style:sJ,"aria-hidden":"true"},To.default.createElement("span",null),To.default.createElement("span",{style:{position:"relative",display:"block",height:14}},Ake.map(n=>To.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:H,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),To.default.createElement("span",null)),e.conclusion&&To.default.createElement("div",{style:{...uD,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",textWrap:"pretty"},"data-testid":"comparison-conclusion"},e.conclusion),e.resamples!=null&&To.default.createElement("span",{style:{...uD,fontFamily:H,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var $r=Z(J());var lJ={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"},Oke={openrouter:"openrouter/auto"},uJ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=lJ[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:lJ[n],providerDefault:Oke[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},cJ=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 dJ="/settings?tab=api-keys",b2=(e=11)=>({fontFamily:H,fontSize:e,color:"var(--color-text-secondary)"});function dD({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=uJ(e,t),[i,s]=(0,$r.useState)(!1),[l,u]=(0,$r.useState)(a?.suggestion||""),[c,d]=(0,$r.useState)(!1),[p,f]=(0,$r.useState)(null);if((0,$r.useEffect)(()=>{u(a?.suggestion||"")},[a?.suggestion]),!r)return null;if(!a)return $r.default.createElement("span",{style:b2()},`judged by ${r}`);let m=async x=>{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:x}})}),g=await h.json().catch(()=>({}));if(!h.ok){f((g.errors||[g.error]).filter(Boolean).join(", ")||`Saving the judge failed (HTTP ${h.status})`);return}await n?.()}finally{d(!1)}},y=(x,h)=>$r.default.createElement($r.default.Fragment,null,$r.default.createElement(We,{size:10},x),$r.default.createElement("span",{style:{...b2(12),color:"var(--color-text-cell)",overflowWrap:"anywhere"}},h));return $r.default.createElement("span",{style:{display:"inline-flex",flexDirection:"column",gap:8,minWidth:0},"data-testid":o},$r.default.createElement("button",{type:"button",onClick:()=>s(!i),title:cJ(a),"aria-expanded":i,style:{...b2(),display:"inline-flex",alignItems:"center",gap:6,background:"none",border:"none",padding:0,cursor:"pointer"}},$r.default.createElement("span",null,"judged by ",$r.default.createElement("span",{style:{color:"var(--color-info)"}},r)),a.auto&&$r.default.createElement(Ce,{tone:"warning",size:10,title:"No judge model is pinned: the provider chose"},"auto"),a.answered.length>1&&$r.default.createElement(Ce,{tone:"error",size:10,title:"More than one model judged this run"},`${a.answered.length} models`)),i&&$r.default.createElement(ze,{padding:"12px 14px",testId:`${o}-panel`,style:{display:"flex",flexDirection:"column",gap:10,maxWidth:560}},$r.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:14,rowGap:6,alignItems:"baseline"}},y("Judge agent",a.agent),y("Provider",a.provider||"\u2014"),y("Asked for",a.requested?`${a.requested} \xB7 ${a.sourceText}`:`${a.providerDefault||"no model"} \xB7 ${a.sourceText}`),y("Answered by",a.answered.length?a.answered.map(([x,h])=>`${x} \xD7${h}`).join(", "):"no calls recorded")),a.auto&&$r.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&&$r.default.createElement("form",{onSubmit:x=>{x.preventDefault(),l.trim()&&m(l.trim())},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},$r.default.createElement("input",{value:l,onChange:x=>u(x.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:H,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),$r.default.createElement(pe,{size:"sm",variant:"primary",type:"submit",disabled:c||!l.trim()||l.trim()===a.pinned,testId:`${o}-pin`},"Pin judge model"),a.pinned&&$r.default.createElement(pe,{size:"sm",onClick:()=>m(""),disabled:c,testId:`${o}-unpin`},"Unpin")),$r.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"baseline"}},$r.default.createElement("span",{style:b2()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),$r.default.createElement(vn,{href:tt(dJ),onClick:()=>lt(dJ)},`${a.provider||"provider"} key in Settings`)),p&&$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var ld=Z(J());async function w2(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 j0({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,ld.useState)("idle"),a=(0,ld.useRef)(null);(0,ld.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await w2(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 ld.default.createElement(pe,{size:"sm",variant:"ghost",onClick:i,testId:t,title:"Copy a Markdown brief of this fix \u2014 the scenarios, what they expect, what the agent did, and how to verify \u2014 for your coding harness",style:{padding:"4px 8px",fontSize:12,color:n==="failed"?"var(--color-error)":n==="copied"?"var(--color-success-text)":"var(--color-text-secondary)",...r}},s)}var S2=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var At=Z(J());var Me=Z(J());var k2="Update from the sandbox",Pke=new Set(["queued","publishing"]);function $0(e){return!!(e&&Pke.has(e.status))}function fJ(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:`${pJ(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:pJ(e),tone:Mke(e)}}}function pJ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function Mke(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function mJ(e){return!e?.head_commit||!e.number||$0(e)?!1:!["closed","merged"].includes(e.state)}function gJ(e){return!!(e?.head_commit&&!e.number&&!$0(e))}function hJ(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 yJ(e){return(e||[]).some(t=>t.refusal==="not_read")}function vJ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function _2(e){return e==="changed_since_preview"}function C2(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function A2(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 xJ(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 bJ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var Ike=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function Dke(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||Ike.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function wJ({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()?Dke(n):"Add a title."}function E2({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 SJ(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 pD(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 kJ(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var _J={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 CJ(e){return/[.!?]$/.test(e)?e:`${e}.`}function AJ(){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 L0({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Me.useState)(null),[a,i]=(0,Me.useState)(null),[s,l]=(0,Me.useState)(null),[u,c]=(0,Me.useState)(0),[d,p]=(0,Me.useState)(!1),f=(0,Me.useCallback)(async()=>{let h=await fetch(r),g=await h.json().catch(()=>({}));if(!h.ok)throw new Error(ot(g,`Could not load the pull request (HTTP ${h.status}).`));return g},[r]);(0,Me.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await f();if(h)return;o(b),i(null),$0(b.pull_request)&&(g=setTimeout(v,2e3))}catch(b){h||i(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[f,u]);let m=async h=>{p(!0),i(null);try{let g=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));c(b=>b+1)}catch(g){i(g.message)}finally{p(!1)}},y=n?.pull_request||null,x=n?.publishing||null;return x&&!x.supported?null:Me.default.createElement(Me.default.Fragment,null,Me.default.createElement($ke,{pullRequest:y,publishing:x,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Me.default.createElement(Lke,{codeSession:t,sandbox:e,pullRequest:y,publishing:x,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function $ke({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=AJ(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:y}=fJ(e),x=$0(e),h=!!t?.available,g=mJ(e),v=gJ(e);return Me.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Me.default.createElement("div",{className:"flex items-center justify-between gap-3"},Me.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Me.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Me.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Me.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:x,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Me.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:x,className:p},"Open draft PR"))),t&&!h&&Me.default.createElement("p",{className:`text-xs ${s}`},CJ(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Me.default.createElement("div",{className:"space-y-1"},Me.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Me.default.createElement(Ks,{tone:y},m),e.url?Me.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Me.default.createElement("span",{className:`truncate ${l}`},e.title)),Me.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"&&Me.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Me.default.createElement("p",{className:f},e.error_message),v&&Me.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Me.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Me.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&&Me.default.createElement("div",{className:f},r))}function Lke({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,Me.useState)(null),[d,p]=(0,Me.useState)(!0),[f,m]=(0,Me.useState)(null),[y,x]=(0,Me.useState)(new Set),[h,g]=(0,Me.useState)(l?t?.title||"":kJ(e)),[v,b]=(0,Me.useState)(""),[S,w]=(0,Me.useState)(l&&t?.branch||""),[_,k]=(0,Me.useState)(k2),[A,C]=(0,Me.useState)(""),[E,I]=(0,Me.useState)(null),[Q,$]=(0,Me.useState)(!1),[F,N]=(0,Me.useState)(0);return(0,Me.useEffect)(()=>{let j=!1;return p(!0),(async()=>{try{let T=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(E?{allowlist:E}:{})}),D=await T.json().catch(()=>({}));if(j)return;if(!T.ok)throw new Error(ot(D,`Could not read the sandbox's changes (HTTP ${T.status}).`));c(D.preview),x(C2(D.preview.files)),w(M=>M||D.preview.suggested_branch||"")}catch(T){j||m(T.message)}finally{j||p(!1)}})(),()=>{j=!0}},[s,F,E]),Me.default.createElement(fD,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:y,onToggle:j=>x(T=>A2(T,j)),fields:{title:h,body:v,branch:S,message:_,allowlist:A},onField:(j,T)=>({title:g,body:b,branch:w,message:k,allowlist:C})[j](T),allowlistApplied:!!E,onApplyAllowlist:()=>{m(null),I(vJ(A))},mode:n,submitting:Q,onSubmit:async()=>{$(!0),m(null);try{let j=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...E2({files:u?.files,selection:y,title:h,body:v,branch:S,message:_,allowlist:E,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),T=await j.json().catch(()=>({}));if(!j.ok)throw _2(T.code)&&N(D=>D+1),new Error(ot(T,`Could not publish (HTTP ${j.status}).`));a(T.pull_request)}catch(j){m(j.message)}finally{$(!1)}},onCancel:o})}function fD({sandbox:e,preview:t,loading:r,error:n,publishing:o,pullRequest:a,selection:i,onToggle:s,fields:l,onField:u,allowlistApplied:c,onApplyAllowlist:d,mode:p,submitting:f,onSubmit:m,onCancel:y,patchHref:x}){let h=AJ(),{muted:g,strong:v,border:b,link:S,secondaryButton:w,primaryButton:_,input:k,errorBox:A,darkMode:C}=h,E=t?.files||[],I=(0,Me.useMemo)(()=>wh(E,i),[E,i]),Q=!!o?.available,$=p==="patch"||!Q,F=p==="update"&&!$,N=t&&!$?wJ({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:F}):null,O=F?hJ(a,E,i):[],j="Open draft PR";$?j="Download patch":F&&(j="Update draft PR");let T=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return $?T=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:F&&(T="Publishes the files you tick as one commit on the pull request's branch, which then holds the checkout commit with exactly these files changed."),Me.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":j},Me.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${b} ${C?"bg-gray-900":"bg-white"}`},Me.default.createElement("div",{className:"flex items-start justify-between gap-3"},Me.default.createElement("div",null,Me.default.createElement("p",{className:`text-lg font-medium ${v}`},j),Me.default.createElement("p",{className:`text-xs ${g}`},T," Nothing under .github/ is ever published.")),Me.default.createElement("button",{type:"button",onClick:y,className:w},"Close")),r&&Me.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Me.default.createElement("div",{className:A},n),t&&Me.default.createElement(Me.default.Fragment,null,d&&(yJ(E)||c)&&Me.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Me.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Only read paths matching"),Me.default.createElement("input",{type:"text",value:l.allowlist,onChange:D=>u("allowlist",D.target.value),disabled:f||r,placeholder:"app/**, lib/*.rb",className:`${k} font-mono`})),Me.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${w} disabled:opacity-50`},"Read again")),Me.default.createElement("div",{className:"space-y-1"},Me.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",xJ(E,i)),E.length===0&&Me.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Me.default.createElement("ul",{className:"space-y-1"},E.map(D=>Me.default.createElement("li",{key:D.path,className:"flex items-center gap-2 text-sm"},Me.default.createElement("input",{type:"checkbox","aria-label":`Publish ${D.path}`,checked:!D.refusal&&i.has(D.path),disabled:!!D.refusal||f,onChange:()=>s(D.path)}),Me.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},bJ(D)),Me.default.createElement("span",{className:`font-mono truncate ${D.refusal?g:v}`},D.path),D.size!=null&&D.status!=="deleted"&&Me.default.createElement("span",{className:`shrink-0 text-xs ${g}`},pD(D.size)),D.refusal&&Me.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},D.refusal_message))))),O.length>0&&Me.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: ",Me.default.createElement("span",{className:"font-mono"},O.join(", "))),I.length>0&&Me.default.createElement("div",{className:"space-y-2"},Me.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),I.map(D=>Me.default.createElement(zke,{key:D.path,file:D,classes:h}))),!$&&Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Branch"),Me.default.createElement("input",{type:"text",value:l.branch,onChange:D=>u("branch",D.target.value),disabled:F||f,maxLength:200,className:`${k} font-mono`})),F?Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Commit message"),Me.default.createElement("input",{type:"text",value:l.message,onChange:D=>u("message",D.target.value),disabled:f,className:k})):Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Title"),Me.default.createElement("input",{type:"text",value:l.title,onChange:D=>u("title",D.target.value),disabled:f,maxLength:256,className:k})),!$&&!F&&Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Description"),Me.default.createElement("textarea",{value:l.body,onChange:D=>u("body",D.target.value),disabled:f,rows:4,className:k})),Me.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Me.default.createElement("p",{className:`text-xs ${g}`},!Q&&CJ(o?.refusal||"Publishing is not available for this sandbox"),Q&&N),Me.default.createElement("div",{className:"flex items-center gap-3"},I.length>0&&Me.default.createElement("a",{href:tt((x||((D,M)=>SJ(e.session_id,D,M)))(I.map(D=>D.path),F?l.message:l.title)),className:`text-sm ${S}`},"Download patch"),Me.default.createElement("button",{type:"button",onClick:y,className:w},"Cancel"),!$&&Me.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:_},f?"Publishing\u2026":j))))))}function zke({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Me.useMemo)(()=>o0(e.diff),[e.diff]);return Me.default.createElement("div",{className:`rounded border ${n}`},Me.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Me.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",pD(e.size),": published as it is in the sandbox."):Me.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=_J[s.kind]||_J.context;return Me.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var Bke=(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")),N2=new Map,Fke=e=>(N2.has(e)||N2.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(()=>N2.delete(e))),N2.get(e));function mD({item:e,evaluation:t,run:r}){let[n,o]=(0,At.useState)(!1),[a,i]=(0,At.useState)(null),[s,l]=(0,At.useState)(""),[u,c]=(0,At.useState)(null),[d,p]=(0,At.useState)(!1),[f,m]=(0,At.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,x=(0,At.useCallback)(async()=>{let k=await Fke(y);return i(k),l(A=>A||k.sandboxes?.find(C=>C.status==="ready")?.session_id||""),k},[y]);if((0,At.useEffect)(()=>{if(!t?.id||!r?.id)return;let k=!1,A,C=async()=>{try{await x()}catch(E){k||c(E.message)}!k&&n&&(A=setTimeout(C,2500))};return C(),()=>{k=!0,clearTimeout(A)}},[x,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(k=>Bke(k.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(k=>k.id===f)||h[0],v=a?.sandboxes?.find(k=>k.session_id===(g?.sandbox_session_id||s)),b=g&&(["queued","running"].includes(g.status)||g.status==="succeeded"&&g.diff&&!g.verification?.error&&!["complete","failed"].includes(g.verification?.status)),S=a?.auth_mode!=="sandbox_login"||v?.claude_login?.credential_mode,w=async(k=null)=>{if(!(!v||d||b)){p(!0),c(null);try{let A=await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation_run_id:r.id,fix_item:{kind:e.kind,fault:e.fault,quote:e.quote,scenario_keys:e.scenario_keys,models:e.models},previous_code_session_id:k?.id})}),C=await A.json();if(!A.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await x()}catch(A){c(A.message)}finally{p(!1)}}},_=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return At.default.createElement(At.default.Fragment,null,At.default.createElement(pe,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&At.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},g.verification.counts.fixed||0," fixed \xB7 ",g.verification.counts.regressed||0," regressed"),n&&At.default.createElement(_I,{title:"Implement evaluation fix",onClose:()=>o(!1)},At.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((k,A)=>At.default.createElement(Ce,{key:k,tone:A===_?"accent":A<_?"success":"muted"},A+1,". ",k))),At.default.createElement("div",null,At.default.createElement("h3",{style:{margin:"0 0 8px",fontSize:16}},e.kind==="instruction"?"Improve the instructions":String(e.fault||"").replaceAll("_"," ")),At.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"20px",color:"var(--color-text-secondary)"}},e.quote||e.recommendation)),At.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.scenario_keys?.length," scenarios \xB7 ",e.models?.join(", ")||"the original models"," \xB7 ",t.name),!a&&At.default.createElement("p",{role:"status"},"Loading checkout sandboxes\u2026"),a?.refusal&&At.default.createElement("p",{role:"alert",style:{fontSize:13,color:"var(--color-warning-text)"}},a.refusal),a&&!a.supported&&At.default.createElement("p",{role:"alert"},"This backend cannot refresh the checkout for verification."),!g&&a?.sandboxes?.some(k=>k.status==="ready")&&At.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",At.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...kI,marginTop:8},value:s,onChange:k=>l(k.target.value)},At.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(k=>k.status==="ready").map(k=>At.default.createElement("option",{key:k.session_id,value:k.session_id},k.repository," \xB7 ",k.repository_ref," \xB7 ",k.session_id.slice(0,8))))),a&&!v&&At.default.createElement("div",{style:c0},At.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),At.default.createElement("a",{href:tt(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),At.default.createElement(pe,{size:"sm",onClick:()=>x().catch(k=>c(k.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!b&&At.default.createElement(Qp,{sandbox:v,onConnected:x,onChange:x}),v&&At.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",At.default.createElement("strong",null,v.claude_login?.credential_mode==="sandbox_login"?"your Claude subscription":a?.auth_mode==="local_login"?"this machine\u2019s Claude login":S?"the account\u2019s Anthropic API key":"your sandbox login after you connect"),". Verification uses the agent\u2019s own provider credentials."),!g&&At.default.createElement(pe,{variant:"primary",disabled:!v||!S||d||!!a?.refusal||!a?.supported,onClick:()=>w()},d?"Starting\u2026":"Implement this fix"),g&&At.default.createElement(At.default.Fragment,null,At.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},At.default.createElement(Ce,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),At.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&At.default.createElement(pe,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions/${g.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await x()}catch(k){c(k.message)}}},"Cancel session"),g.result&&At.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&At.default.createElement("details",null,At.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),At.default.createElement("pre",{style:{...c0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),At.default.createElement(d0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&At.default.createElement(L0,{sandbox:v,codeSession:g})),u&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var gD=6,Uke=600,Sh=12,kh=e=>String(e||"").replace(/_/g," "),gs=e=>String(e??"").trim(),z0=e=>[...new Set(e.filter(Boolean))],hD=e=>gs(e).split(` +`);o.length>t&&(o=o.slice(0,t));let a=o.lengthe?.is_error===!0||e?.subtype!=null&&e.subtype!=="success",NSe=e=>{if(!HY(e))return"Done";if(OY[e.subtype])return OY[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},TSe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?Hs(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: ${e2(e.subtype).toLowerCase()}`:"System event"}},OSe=/^(hook_|thinking_tokens$)/,PSe=e=>OSe.test(String(e?.subtype||"")),MSe=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: ${e2(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},QC=(e,t)=>({kind:"unknown",label:String(e||"event"),text:n0(ph(t),300)}),PY=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!Qp(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:CSe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=ESe(ASe(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[QC(`${t} ${e.type||"block"}`,e)]}},ISe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?PY(r,e.type,t):Array.isArray(r)?r.flatMap(n=>PY(n,e.type,t)):[QC(e.type,e)]},DSe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!Qp(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:ph(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}]:[QC(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),PSe(e)?[]:[TSe(e)];case"rate_limit_event":return MSe(e);case"assistant":case"user":return n(ISe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=MY(NSe(e),e);return[{kind:"result",tone:HY(e)?"error":"success",text:o?`${a} \xB7 ${Hs(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[QC(e.type,e)]}},n2=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>DSe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},qY=/^diff (--git|--cc|--combined) /,jSe="\u2026 diff truncated",l0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` +`).map(n=>{if(qY.test(n))return t=!0,{text:n,kind:"meta"};if(n===jSe)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"}})},KY=e=>{let t=l0(e),r=t.filter(a=>a.kind==="meta"&&qY.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${Hs(r,"file")} changed \xB7 +${n} \u2212${o}`},u0="default",c0="other",VY=["sonnet","opus","haiku"],$Se=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,kI="actionagent.claudeCode.modelChoice",GY=(e="claude_code")=>[{value:u0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:VY.map(t=>({value:t,label:t})),{value:c0,label:"Other\u2026"}],_I=e=>e===u0||e===c0||VY.includes(e),CI=(e,t="")=>{if(!_I(e)||e===u0)return{model:null};if(e!==c0)return{model:e};let r=String(t??"").trim();return r?$Se.test(r)?{model:r}:{error:`"${n0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},YY=(e,t,r,n="claude_code")=>{let{model:o}=CI(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},o2=e=>{let t={choice:u0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!Qp(r)||!_I(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},XY=(e,t="")=>JSON.stringify({choice:_I(e)?e:u0,custom:String(t??"").slice(0,100)}),AI=e=>e?.model||"default model",o0="api_key",a0="local_login",ZY="claude /login",JY="sk-ant-api03-\u2026",QY="https://platform.claude.com",RY="https://code.claude.com/docs/en/legal-and-compliance.md",a2=e=>{let t=Qp(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===a0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?a0:o0,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}},eX=(e,t)=>{if(!e)return{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null};if(e.mode==="sandbox_login")return{view:"sandbox_login",status:"Your subscription, inside each sandbox",tone:"neutral",keyForm:!0,needsReplacing:t?.needs_replacing===!0,loginHint:null};if(e.mode===a0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:a0,status:e.loggedIn?`Using this machine's Claude Code login \xB7 logged in${r}`:"Using this machine's Claude Code login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,needsReplacing:!1,loginHint:e.loggedIn?null:ZY}}return t?t.configured&&t.needs_replacing===!0?{view:o0,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:o0,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}},tX=e=>e?.connected===!0?null:e?.mode==="sandbox_login"?{text:"Sign in with your Claude subscription in this sandbox, or connect an Anthropic API key.",loginHint:null,after:null}:e?.mode===a0?{text:"Claude Code is not logged in on this machine. Run",loginHint:ZY,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},i0="local_login",rX="codex login",i2=e=>{let t=Qp(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===i0;return{supported:e?.codex_sessions_supported===!0,mode:r?i0:o0,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}},nX=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===i0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:i0,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:rX}}return t?{view:o0,status:t.configured?`Connected \xB7 ${t.hint}`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,loginHint:null}:r},oX=e=>!e||e.supported!==!0?{text:"This sandbox backend does not support Codex.",loginHint:null,after:null}:e.connected===!0?null:e.mode===i0?{text:"Codex is not logged in on this machine. Run",loginHint:rX,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var iX=1500,EI=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],LSe=new Set(EI.map(e=>e.id)),NI=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),Rp=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},sX=(e,t="")=>{let r=new URLSearchParams(t),n=LSe.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=Rp(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},ms=e=>`/interactions/code-${e}`,s2=({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}`:""}`},TI=({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()},lX=e=>{let t=(e||[]).filter(NI);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]},uX=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),cX=(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}},dX=e=>(e?.turns||[]).some(qs),pX=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(t2(e.total_cost_usd)),e.duration_ms!=null&&t.push(xI(e.duration_ms)),e.diff_stat&&t.push(`${Hs(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},l2=e=>{let t=[Hs(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(t2(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 ")},fX=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||qs(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",mX=(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 ${Hs(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},gX=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},ef=50,u2=25,c2=75,aX=5,d0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(c2,Math.max(u2,Math.round(t*10)/10)):ef},hX=(e,{left:t,width:r})=>r>0?d0((e-t)/r*100):ef,yX=(e,t)=>{switch(t){case"ArrowLeft":return d0(e-aX);case"ArrowRight":return d0(e+aX);case"Home":return u2;case"End":return c2;case"Enter":return ef;default:return null}};var Ne=Z(Q());var Ut=Z(Q());var m0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},OI={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 PI({title:e,onClose:t,children:r}){let n=(0,Ut.useRef)(null);return(0,Ut.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Ut.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)"}},Ut.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Ut.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Ut.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")),Ut.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function f0(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 zSe=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 tf({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Ut.useState)(null),[i,s]=(0,Ut.useState)(!1),[l,u]=(0,Ut.useState)(""),[c,d]=(0,Ut.useState)(!1),[p,f]=(0,Ut.useState)(null),m=(0,Ut.useRef)(null),y=(0,Ut.useRef)(t);y.current=t,(0,Ut.useEffect)(()=>{let v=!1;return f0(n).then(b=>{v||a(b)}).catch(b=>{v||f(b.message)}),()=>{v=!0}},[n]),(0,Ut.useEffect)(()=>{if(!i)return;let v=!1,b,k=async()=>{try{let S=await f0(n);if(v)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?.(),y.current?.();return}if(!["starting","awaiting_code","submitted"].includes(S.status)){f(zSe(S.status)),d(!1);return}b=setTimeout(k,1200)}catch(S){v||(f(S.message),d(!1))}};return b=setTimeout(k,300),()=>{v=!0,clearTimeout(b)}},[n,i]);let x=async()=>{f(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await f0(n,"POST")),s(!0)}catch(v){m.current?.close(),m.current=null,f(v.message)}finally{d(!1)}},h=async()=>{m.current?.close(),m.current=null,u(""),s(!1),d(!0);try{a(await f0(n,"DELETE")),r?.()}catch(v){f(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let b=l.trim();u(""),d(!0),f(null);try{a(await f0(`${n}/code`,"POST",{claude_login_code:b}))}catch(k){f(k.message),d(!1)}};return Ut.default.createElement("section",{style:m0,"data-testid":"sandbox-claude-login"},Ut.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Ut.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Ut.default.createElement("strong",null,"Claude Code"),Ut.default.createElement(Ce,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Ut.default.createElement(pe,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Ut.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&&Ut.default.createElement(pe,{variant:"primary",onClick:x,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Ut.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Ut.default.createElement(PI,{title:"Connect your Claude subscription",onClose:h},Ut.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."),Ut.default.createElement("div",{style:{...m0,fontSize:12}},Ut.default.createElement("strong",null,e.repository||"Checkout sandbox"),Ut.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Ut.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"):Ut.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Ut.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Ut.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Ut.default.createElement("input",{id:`claude-login-code-${e.session_id}`,type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,maxLength:2048,value:l,onChange:v=>u(v.target.value),placeholder:"Paste the code from Claude",style:OI,disabled:c||o?.status!=="awaiting_code"}),Ut.default.createElement(pe,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Ut.default.createElement(Ut.default.Fragment,null,Ut.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Ut.default.createElement(pe,{onClick:x,disabled:c},"Start sign-in again")),Ut.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 Dr=Z(Q());function g0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,Dr.useState)(null),[i,s]=(0,Dr.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 Dr.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},Dr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Dr.default.createElement("strong",{style:{fontSize:13}},"Before & after"),Dr.default.createElement(Ce,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&Dr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),Dr.default.createElement("div",{style:{overflowX:"auto"}},Dr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},Dr.default.createElement("thead",null,Dr.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(f=>Dr.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)))),Dr.default.createElement("tbody",null,u.map(f=>Dr.default.createElement("tr",{key:`${f.scenario_key}/${f.model}`},Dr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,Dr.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model)),Dr.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),Dr.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)}`,Dr.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),Dr.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),Dr.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.before_fault)||"\u2014")))))),Dr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},Dr.default.createElement("a",{href:Re(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Dr.default.createElement("a",{href:Re(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Dr.default.createElement(pe,{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)&&Dr.default.createElement(pe,{size:"sm",onClick:n},"Try again")),o?.run&&Dr.default.createElement("a",{style:{fontSize:12},href:Re(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&Dr.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var On=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)}`},h0=e=>e==null?"\u2014":On(e),MI=(e,t)=>e==null&&t==null?"\u2014":`${h0(e)}\u2192${h0(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`},y0=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)}`},v0=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var fh=(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}`},wo=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`},bn=(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 BSe=2e4,xX=()=>{try{return o2(window.localStorage.getItem(kI))}catch{return o2(null)}},FSe=(e,t)=>{try{window.localStorage.setItem(kI,XY(e,t))}catch{}},SX=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),bX={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 Ks({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=bX[e]||bX.neutral;return Ne.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"&&Ne.default.createElement("span",{className:"mr-1 h-1.5 w-1.5 rounded-full bg-current animate-pulse"}),t)}function x0({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,Ne.useState)(null),[d,p]=(0,Ne.useState)(null),[f,m]=(0,Ne.useState)(null),[y,x]=(0,Ne.useState)(null),[h,g]=(0,Ne.useState)(0),[v,b]=(0,Ne.useState)(0),[k,S]=(0,Ne.useState)(""),[w,_]=(0,Ne.useState)("claude_code"),A=w==="codex"?"Codex":"Claude Code",[C,E]=(0,Ne.useState)(xX),[I,J]=(0,Ne.useState)(!1),[$,U]=(0,Ne.useState)(!1),[N,T]=(0,Ne.useState)(null),D=(0,Ne.useRef)(null),O=(0,Ne.useRef)(!0),j=(0,Ne.useCallback)(async()=>{let B=await fetch(l),oe=await B.json().catch(()=>({}));if(!B.ok)throw new Error(ot(oe,`Could not load code sessions (HTTP ${B.status}).`));return oe.code_sessions||[]},[l]);(0,Ne.useEffect)(()=>{let B=!1;return c(null),p(null),j().then(oe=>{if(B)return;c(oe);let ne=oe.find(he=>he.id===a)||oe.find(qs)||oe[0];p(he=>he??ne?.id??null)}).catch(oe=>{B||(c([]),T(oe.message))}),()=>{B=!0}},[j]),(0,Ne.useEffect)(()=>{a!=null&&p(a)},[a]),(0,Ne.useEffect)(()=>{if(d==null)return;let B=!1,oe=null,ne=[],he=0;m(null),x(null),O.current=!0;let tt=async()=>{let it=!0,ve=null;try{let ce=await fetch(`${l}/${d}?after=${ne.length}`);ve=ce.status;let Ue=await ce.json().catch(()=>({}));if(B)return;if(!ce.ok)throw new Error(ot(Ue,`Could not load the session (HTTP ${ce.status}).`));let Je=Ue.code_session;ne=WY(ne,Je),he=0,x(null),m({...Je,events:ne}),c(Tt=>id(Tt||[],FY(Je),"id"));let nt=Je.evaluation_run_id&&Je.status==="succeeded"&&Je.diff&&!Je.verification?.error&&!["complete","failed"].includes(Je.verification?.status);wI(Je)&&!nt&&(it=!1)}catch(ce){if(B)return;he+=1,x(ce.message),RC(ve,he)&&(it=!1)}it&&!B&&(oe=setTimeout(tt,1500))};return tt(),()=>{B=!0,clearTimeout(oe)}},[l,d,h]);let M=(u||[]).find(qs)||null,H=M&&M.id!==d?M.id:null,G=w==="codex"?oX(r):tX(t),z=G?"not_connected":M?"busy":null;(0,Ne.useEffect)(()=>{if(H==null)return;let B=!1,oe=setTimeout(async()=>{try{let ne=await j();B||c(ne)}catch{}B||b(ne=>ne+1)},1500*2);return()=>{B=!0,clearTimeout(oe)}},[H,v,j]);let V=(0,Ne.useMemo)(()=>n2(f?.events),[f?.events]);(0,Ne.useLayoutEffect)(()=>{let B=D.current;B&&O.current&&(B.scrollTop=B.scrollHeight)},[V.length]);let K=B=>{let oe=B.currentTarget;O.current=oe.scrollHeight-oe.scrollTop-oe.clientHeight<40},ie=CI(C.choice,C.custom).error||null,Ie=B=>{E(oe=>{let ne={...oe,...B};return w==="claude_code"&&FSe(ne.choice,ne.custom),ne})},ge=async()=>{let B=k.trim();if(!(!B||z||I||ie)){J(!0),T(null);try{let oe=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(YY(B,C.choice,C.custom,w))}),ne=await oe.json().catch(()=>({}));if(!oe.ok)throw ne.code_session&&(c(he=>id(he||[],ne.code_session,"id")),p(ne.code_session.id)),new Error(ot(ne,`Could not start ${A} (HTTP ${oe.status}).`));c(he=>id(he||[],ne.code_session,"id")),p(ne.code_session.id),S("")}catch(oe){T(oe.message)}finally{J(!1)}}},de=async B=>{U(!0),T(null);try{let oe=await fetch(`${l}/${B.id}/cancel`,{method:"POST"}),ne=await oe.json().catch(()=>({}));if(!oe.ok)throw new Error(ot(ne,`Could not cancel the session (HTTP ${oe.status}).`));c(he=>id(he||[],ne.code_session,"id")),m(he=>he&&he.id===ne.code_session.id?{...he,...ne.code_session}:he)}catch(oe){T(oe.message)}finally{U(!1)}},R=s?"text-gray-400":"text-gray-500",ee=s?"text-white":"text-gray-900",L=s?"border-gray-700":"border-gray-200",te=`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"}`,F=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,P=`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"}`,Y=f&&f.id===d?f:(u||[]).find(B=>B.id===d)||null;return Ne.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${L}`},!o&&t?.mode==="sandbox_login"&&Ne.default.createElement(tf,{sandbox:e,onChange:n}),Ne.default.createElement("div",{className:"flex items-center justify-between"},Ne.default.createElement("p",{className:`text-sm font-medium ${ee}`},i),Ne.default.createElement("p",{className:`text-xs ${R}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Ne.default.createElement("div",{className:P},N),!o&&Ne.default.createElement("div",{className:"space-y-2"},Ne.default.createElement("label",{className:`flex items-center gap-2 text-xs ${R}`},"Agent",Ne.default.createElement("select",{"aria-label":"Coding agent",value:w,onChange:B=>{_(B.target.value),E(B.target.value==="claude_code"?xX():o2(null))},disabled:I,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},Ne.default.createElement("option",{value:"claude_code"},"Claude Code"),Ne.default.createElement("option",{value:"codex",disabled:!r?.supported},"Codex",r?.supported?"":" (backend unavailable)"))),Ne.default.createElement("textarea",{value:k,onChange:B=>S(B.target.value),onKeyDown:B=>{B.key==="Enter"&&(B.metaKey||B.ctrlKey)&&ge()},rows:3,maxLength:BSe,disabled:z==="not_connected"||I,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"}`}),Ne.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ne.default.createElement("label",{htmlFor:`code-session-model-${e.session_id}`,className:`text-xs ${R}`},"Model"),Ne.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:B=>Ie({choice:B.target.value}),disabled:I,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"}`},GY(w).map(B=>Ne.default.createElement("option",{key:B.value,value:B.value},B.label))),C.choice===c0&&Ne.default.createElement("input",{type:"text",value:C.custom,onChange:B=>Ie({custom:B.target.value}),disabled:I,maxLength:100,placeholder:w==="codex"?"Model id":"claude-sonnet-4-5","aria-label":"Model id","aria-invalid":!!ie,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"}`})),ie&&C.custom.trim()&&Ne.default.createElement("p",{className:`text-xs ${s?"text-red-300":"text-red-700"}`},ie),Ne.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ne.default.createElement("p",{className:`text-xs ${R}`},z==="not_connected"&&Ne.default.createElement(Ne.default.Fragment,null,G.text,G.loginHint&&Ne.default.createElement(Ne.default.Fragment,null," ",Ne.default.createElement("code",{className:"font-mono"},G.loginHint)," ",G.after)," ",n&&Ne.default.createElement("button",{type:"button",onClick:n,className:F},"Check again")),z==="busy"&&Ne.default.createElement(Ne.default.Fragment,null,"A session is ",M.status," in this checkout; wait for it to finish or cancel it."," ",M.id!==d&&Ne.default.createElement("button",{type:"button",onClick:()=>p(M.id),className:F},"Show it"))),Ne.default.createElement("button",{type:"button",onClick:ge,disabled:!!z||I||!k.trim()||!!ie,className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600 disabled:opacity-50"},I?"Starting\u2026":`Run ${A}`)),N&&Ne.default.createElement("div",{className:P},N)),u&&u.length>0&&Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${R}`},"Sessions"),Ne.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(B=>{let{label:oe,tone:ne}=fs(B.status),he=B.id===d;return Ne.default.createElement("button",{key:B.id,type:"button",title:LY(B),onClick:()=>he?g(tt=>tt+1):p(B.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${he?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ne.default.createElement(Ks,{tone:ne},oe),Ne.default.createElement("span",{className:`text-xs ${R}`},B.runner==="codex"?"Codex":"Claude Code"),Ne.default.createElement("span",{className:`flex-1 truncate ${ee}`},zY(B.prompt)),Ne.default.createElement("span",{className:`shrink-0 text-xs font-mono ${R}`},AI(B)),Ne.default.createElement("span",{className:`shrink-0 text-xs ${R}`},wo(B.created_at)))}))),u===null&&Ne.default.createElement("p",{className:`text-xs ${R}`},"Loading sessions\u2026"),Y&&Ne.default.createElement(USe,{session:Y,rows:V,loaded:!!(f&&f.id===Y.id),detailError:y,cancelling:$,onCancel:()=>de(Y),onReload:()=>g(B=>B+1),transcriptRef:D,onTranscriptScroll:K,classes:{muted:R,strong:ee,border:L,secondaryButton:te,linkButton:F,errorBox:P}}))}function USe({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:y,errorBox:x}=u,{label:h,tone:g}=fs(e.status),v=qs(e),b=s0(e),k=$Y(e),S=Number(e.dropped_events_count)||0;return Ne.default.createElement("div",{className:`pt-3 border-t space-y-2 ${f}`},Ne.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ne.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},Ne.default.createElement(Ks,{tone:g},h),Ne.default.createElement("span",{className:`text-xs truncate ${d}`},[SI(e),AI(e)].filter(Boolean).join(" \xB7 "))),Ne.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Ne.default.createElement("a",{href:Re(ms(e.conversation_id||e.id)),onClick:w=>{w.preventDefault(),lt(ms(e.conversation_id||e.id))},className:y,"data-testid":"code-session-open-interaction"},"Open in Interactions"),v&&Ne.default.createElement("button",{type:"button",onClick:a,disabled:o,className:`${m} shrink-0 disabled:opacity-50`},o?"Cancelling\u2026":"Cancel"))),Ne.default.createElement("p",{className:`text-xs whitespace-pre-wrap break-words max-h-24 overflow-y-auto ${d}`},e.prompt),n&&Ne.default.createElement("div",{className:x},n),Ne.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:SX(c)},!r&&Ne.default.createElement("p",{className:`text-xs ${d}`},"Loading transcript\u2026"),r&&t.length===0&&Ne.default.createElement("p",{className:`text-xs ${d}`},e.status==="queued"?"Waiting for the sandbox to start the agent\u2026":v?"The agent is starting\u2026":k?"Cancelled before the agent started.":"No transcript was recorded."),t.map(w=>Ne.default.createElement(II,{key:w.key,row:w,darkMode:c,muted:d,strong:p})),S>0&&Ne.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&&Ne.default.createElement("pre",{className:`${x} whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto`},e.error_message),e.evaluation_run_id&&Ne.default.createElement(g0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),b&&r&&Ne.default.createElement(DI,{diff:e.diff,pending:bI(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function II({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 Ne.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${n} ${o}`},e.text);case"user_text":return Ne.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words ${r} ${o}`},e.text);case"thinking":return Ne.default.createElement("p",{className:`text-xs italic whitespace-pre-wrap break-words line-clamp-3 ${r} ${o}`},e.text);case"tool_use":return Ne.default.createElement("p",{className:`text-xs font-mono break-words ${o}`},Ne.default.createElement("span",{className:`font-semibold ${t?"text-blue-300":"text-blue-700"}`},e.name),e.summary&&Ne.default.createElement("span",{className:r}," ",e.summary));case"tool_result":return Ne.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 Ne.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 Ne.default.createElement("p",{className:`text-xs ${r}`},e.text);case"raw":return Ne.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},e.text);default:return Ne.default.createElement("pre",{className:`text-xs font-mono whitespace-pre-wrap break-words ${r} ${o}`},"[",e.label,"] ",e.text)}}var wX={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 DI({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ne.useMemo)(()=>l0(e),[e]);return e==null?t?Ne.default.createElement("p",{className:`text-xs ${n}`},"The diff is recorded once the agent has stopped."," ",Ne.default.createElement("button",{type:"button",onClick:r,className:o},"Refresh")):Ne.default.createElement("p",{className:`text-xs ${n}`},"No diff was recorded."):i.length===0?Ne.default.createElement("p",{className:`text-xs ${n}`},"No changes in the checkout."):Ne.default.createElement("div",{className:"space-y-1"},Ne.default.createElement("p",{className:`text-xs ${n}`},"Diff \xB7 ",KY(e)),Ne.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:SX(a)},i.map((s,l)=>{let u=wX[s.kind]||wX.context;return Ne.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var gt=Z(Q());function d2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var kX=["left","middle","right"];function _X(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 p2(e,t,r){let n=_X(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:d2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:kX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function CX(e,t,r){let n=p2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:d2(e),button:kX[e.button]||"left",clickCount:1}}var WSe=16,HSe=800;function AX(e,t){let r=_X(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?WSe:e.deltaMode===2?HSe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:d2(e)}}function jI(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:d2(t)}}function EX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var qSe=600;function NX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=qSe}var $I=32*1024;function TX(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 PX(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 ${OX(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function MX(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${OX(e.total)}\u2026 ${t}%`}function IX(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 DX(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 jX(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 $X(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function LX({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 zX(e){return e.control.held?e.control.mine?"You are driving":e.control.yours?"You are driving in another view":`Held by ${e.control.by||"someone else"}`:null}function BX(e,{taking:t=!1}={}){let{held:r,yours:n}=e.control,o="Take over";return t?o="Taking over\u2026":r&&n&&(o="Continue driving here"),{label:o,disabled:t||r&&!n}}function FX(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 KSe={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 UX(e,{requested:t=!1}={}){return t?null:KSe[e]||"The live view lost its connection to the browser."}var VSe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function WX(e){return e?.status?VSe[e.status]||{label:e.status,tone:"neutral"}:null}function HX(e){return e?.status==="starting"||e?.status==="running"}function qX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function KX(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 VX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",GSe=1024*1024,YSe=e=>new Promise(t=>{setTimeout(t,e)});function XSe({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"},MX(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 w0({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,gt.useReducer)(DX,b0),[l,u]=(0,gt.useState)("idle"),[c,d]=(0,gt.useState)(null),[p,f]=(0,gt.useState)(!1),[m,y]=(0,gt.useState)(null),x=(0,gt.useRef)(null),h=(0,gt.useRef)(!1),g=(0,gt.useRef)(0),v=(0,gt.useRef)(!1),b=(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),E=i.control.mine,I=(0,gt.useRef)(null),J=(0,gt.useRef)(i);J.current=i,(0,gt.useEffect)(()=>{if(E){I.current=i.control.since||Date.now();return}if(I.current===null)return;let ne=I.current;I.current=null,n?.(LX({by:null,takenAt:ne,releasedAt:Date.now(),page:J.current.page}))},[E]);let $=(0,gt.useCallback)(ne=>{let he=x.current;ne&&he?.readyState===WebSocket.OPEN&&he.send(JSON.stringify(ne))},[]),U=(0,gt.useCallback)(ne=>{let he=S.current;if(he.pending=ne,he.decoding)return;let tt=()=>{let it=he.pending;if(he.pending=null,he.decoding=!!it,!it)return;let ve=new Image;ve.onload=()=>{let ce=b.current;ce&&((ce.width!==ve.naturalWidth||ce.height!==ve.naturalHeight)&&(ce.width=ve.naturalWidth,ce.height=ve.naturalHeight),ce.getContext("2d")?.drawImage(ve,0,0)),tt()},ve.onerror=tt,ve.src=`data:image/jpeg;base64,${it.data}`};tt()},[]),N=(0,gt.useCallback)(()=>{g.current+=1;let ne=x.current;if(!ne){u("idle");return}v.current&&ne.readyState===WebSocket.OPEN&&ne.send(JSON.stringify({type:"hand_back"})),h.current=!0,ne.close(1e3)},[]);(0,gt.useEffect)(()=>N,[N]);let T=async()=>{g.current+=1;let ne=g.current;d(null),u("connecting");try{let{ticket:he,url:tt}=await KX(e,"view");if(g.current!==ne)return;let it=new WebSocket(tt);x.current=it,h.current=!1,it.onopen=()=>it.send(JSON.stringify({type:"auth",ticket:he})),it.onmessage=ve=>{let ce;try{ce=JSON.parse(ve.data)}catch{return}ce.type==="ready"&&u("open"),ce.type==="frame"&&U(ce),(ce.type==="file_upload"&&ce.status!=="progress"||ce.type==="file_chooser"&&!ce.chooser)&&(C.current+=1,y(null)),s(ce)},it.onclose=ve=>{x.current===it&&(x.current=null,C.current+=1,y(null),u("idle"),s({type:"reset"}),d(UX(ve.code,{requested:h.current})))}}catch(he){if(g.current!==ne)return;u("idle"),d(he.message)}},D=(0,gt.useRef)(!1);(0,gt.useEffect)(()=>{!r||D.current||(D.current=!0,T())},[r]);let O=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:ne}=await KX(e,"control");$({type:"take_control",ticket:ne})}catch(ne){d(ne.message)}finally{f(!1)}},j=()=>{$({type:"hand_back"}),b.current?.blur()},M=async ne=>{let he=i.fileChooser,tt=PX(ne,he);if(tt.error){d(tt.error);return}let it=x.current;if(!it||it.readyState!==WebSocket.OPEN)return;C.current+=1;let ve=C.current;d(null),s({type:"clear_error"}),$({type:"file_upload",chooser:he.id,files:tt.files});let ce=0;y({sent:ce,total:tt.total});try{for(let Ue of Array.from(ne))for(let Je=0;JeGSe&&C.current===ve;)await YSe(50);if(C.current!==ve||it.readyState!==WebSocket.OPEN)return;let nt=new Uint8Array(await Ue.slice(Je,Je+$I).arrayBuffer());$({type:"file_chunk",chooser:he.id,data:TX(nt)}),ce+=nt.length,y({sent:ce,total:tt.total})}}catch(Ue){d(`Could not read the file: ${Ue.message}`),H()}},H=()=>{C.current+=1,y(null),i.fileChooser&&$({type:"file_cancel",chooser:i.fileChooser.id})},G=E&&!!i.fileChooser,z=G?{onDragOver:ne=>{ne.preventDefault(),ne.dataTransfer.dropEffect="copy"},onDrop:ne=>{ne.preventDefault(),m||M(ne.dataTransfer.files)}}:{};(0,gt.useEffect)(()=>{v.current=E,E?b.current?.focus():b.current?.blur()},[E]),(0,gt.useEffect)(()=>{let ne=b.current;if(!ne||!E)return;let he=tt=>{tt.preventDefault(),$(AX(tt,ne.getBoundingClientRect()))};return ne.addEventListener("wheel",he,{passive:!1}),()=>ne.removeEventListener("wheel",he)},[E,$,l]);let V=()=>b.current?.getBoundingClientRect(),K=ne=>{ne&&(_.current={x:ne.x,y:ne.y},$(ne))},ie=E?{onMouseDown:ne=>{ne.preventDefault(),b.current?.focus(),K(p2("down",ne,V())),window.addEventListener("mouseup",he=>K(CX(he,V(),_.current)),{once:!0})},onMouseMove:ne=>{let he=w.current;he.message=p2("move",ne,V()),!he.scheduled&&(he.scheduled=!0,requestAnimationFrame(()=>{he.scheduled=!1,K(he.message),he.message=null}))},onContextMenu:ne=>ne.preventDefault(),onKeyDown:ne=>{if(NX(ne,A.current)){ne.preventDefault(),A.current=null,k.current?.focus();return}if(A.current=ne.key==="Escape"&&!ne.repeat?ne.timeStamp:null,VX(ne))return;let he=jI("down",ne);he&&(ne.preventDefault(),$(he))},onKeyUp:ne=>{if(VX(ne))return;let he=jI("up",ne);he&&(ne.preventDefault(),$(he))},onPaste:ne=>{ne.preventDefault(),$(EX(ne.clipboardData?.getData("text/plain")))}}:{},Ie=a?"text-gray-400":"text-gray-500",ge=a?"text-white":"text-gray-900",de=`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"}`,R="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",ee=jX(i),L=$X(i),te=zX(i),F=BX(i,{taking:p}),P=FX(i.page),Y=IX(i),B=l==="open",{frameSize:oe}=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:T,className:de},"Watch live"):gt.default.createElement("button",{type:"button",onClick:N,className:de},"Stop watching"),B&&(E?gt.default.createElement("button",{ref:k,type:"button",onClick:j,className:R},o):gt.default.createElement("button",{ref:k,type:"button",onClick:O,disabled:F.disabled,className:R},F.label)),te&>.default.createElement("span",{className:`text-xs font-medium ${ge}`},te),l==="connecting"&>.default.createElement("span",{className:`text-xs ${Ie}`},"Connecting\u2026")),c&>.default.createElement("p",{className:`text-xs ${Ie}`,role:"status"},c),i.error&>.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),L&>.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"}`},L,B?" Take over to help, then hand back.":" Watch live, then take over to help."),ee&>.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"}`},ee),l!=="idle"&>.default.createElement("div",{className:"space-y-1"},P&>.default.createElement("p",{className:`text-xs font-mono truncate ${Ie}`,title:P},P),Y&>.default.createElement("p",{className:`text-xs ${Ie}`,role:"status"},Y),gt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...z},gt.default.createElement("canvas",{ref:b,tabIndex:E?0:-1,role:E?"application":"img","aria-label":E?"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 ${E?"cursor-default outline-none focus:ring-2 focus:ring-blue-500":""} ${a?"border-gray-700":"border-gray-200"}`,style:{aspectRatio:oe?`${oe.width} / ${oe.height}`:"16 / 10"},...ie}),G&>.default.createElement(XSe,{chooser:i.fileChooser,upload:m,onFiles:ne=>{M(ne)},onCancel:H})),E&>.default.createElement("p",{className:`text-xs ${Ie}`},"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 ${Ie}`},"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 ZSe={settings:"Started from Settings",boot_fix:"Fixing a failed boot",evaluation_fix:"Implementing an evaluation fix",chat:"Chat"};function JSe({turn:e,sandboxId:t,darkMode:r,muted:n,strong:o}){let a=(0,Ye.useMemo)(()=>n2(e.events),[e.events]),[i,s]=(0,Ye.useState)(void 0),l=fs(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 Ye.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ye.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ye.default.createElement(Ks,{tone:l.tone},l.label),Ye.default.createElement("span",{className:`text-xs ${n}`},pX(e))),e.context_note&&Ye.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ye.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ye.default.createElement("div",{className:"space-y-1"},a.length===0&&Ye.default.createElement("p",{className:`text-xs ${n}`},qs(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ye.default.createElement(II,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ye.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!qs(e)&&Ye.default.createElement("div",{className:"space-y-1"},Ye.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&&Ye.default.createElement(DI,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function LI({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ye.useState)(null),[a,i]=(0,Ye.useState)(null),[s,l]=(0,Ye.useState)(""),[u,c]=(0,Ye.useState)(!1),[d,p]=(0,Ye.useState)(null),[f,m]=(0,Ye.useState)(RSe),y=(0,Ye.useRef)(null);y.current=n;let x=(0,Ye.useRef)(null),h=(0,Ye.useRef)(null),g=(0,Ye.useRef)(null),v=tke(h,!!n),b=(0,Ye.useRef)(null),[k,S]=(0,Ye.useState)(QSe),[w,_]=(0,Ye.useState)(!1),A=f&&!!v,C=he=>{S(he),GX(he)},E=(0,Ye.useRef)(null),I=(0,Ye.useRef)(k);I.current=k;let J=he=>{he.button!==0||!b.current||(he.preventDefault(),he.currentTarget.setPointerCapture?.(he.pointerId),E.current=b.current.getBoundingClientRect(),_(!0))},$=he=>{if(!E.current)return;let tt=hX(he.clientX,E.current);I.current=tt,S(tt)},U=he=>{E.current&&(he.currentTarget.releasePointerCapture?.(he.pointerId),E.current=null,_(!1),GX(I.current))},N=he=>{let tt=yX(k,he.key);tt!==null&&(he.preventDefault(),C(tt))},T=he=>{m(tt=>{let it=typeof he=="function"?he(tt):he;return eke(it),it})},D=(0,Ye.useCallback)(async()=>{let he=uX(y.current?.turns),tt=await fetch(`/api/interactions/code-${e}${he?`?${he}`:""}`),it=await tt.json().catch(()=>({}));if(!tt.ok){i(ot(it,`Could not load the conversation (HTTP ${tt.status}).`));return}i(null),o(ve=>cX(ve,it.interaction))},[e]);(0,Ye.useEffect)(()=>{o(null),y.current=null,D()},[D]);let O=dX(n);(0,Ye.useEffect)(()=>{if(!O)return;let he=setInterval(()=>{D()},iX);return()=>clearInterval(he)},[O,D]);let j=n?.turns?.length||0,M=n?.turns?.reduce((he,tt)=>he+(tt.events?.length||0),0)||0,H=(0,Ye.useRef)(!0);(0,Ye.useEffect)(()=>{let he=g.current;he&&H.current&&(he.scrollTop=he.scrollHeight)},[j,M,v]);let G=()=>{let he=g.current;he&&(H.current=he.scrollHeight-he.scrollTop-he.clientHeight<48)},z=n?.sandbox_session_id,V=n?.turns?.[n.turns.length-1],K=fX(n),ie=n?.browser?.status==="running",Ie=async he=>{he?.preventDefault();let tt=s.trim();if(!(!tt||!z)){c(!0),i(null);try{let it=await fetch(`/api/sandboxes/${encodeURIComponent(z)}/code_sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:tt,...d?{handoff:d}:{}})}),ve=await it.json().catch(()=>({}));if(!it.ok)throw new Error(ot(ve,`The message was not sent (HTTP ${it.status}).`));l(""),p(null),await D()}catch(it){i(it.message)}finally{c(!1)}}},ge=async()=>{let he=(n?.turns||[]).filter(qs);for(let tt of he)await fetch(`/api/sandboxes/${encodeURIComponent(z)}/code_sessions/${tt.id}/cancel`,{method:"POST"});await D()},de=he=>{p(he),l(tt=>tt||"I've handed the browser back. "),x.current?.focus()},R=r?"text-gray-400":"text-gray-500",ee=r?"text-white":"text-gray-900",L=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,te=`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"}`,F="px-3 py-1 text-sm rounded text-white bg-red-600 hover:bg-red-700 disabled:opacity-50",P=`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 Ye.default.createElement("div",{className:L,"data-testid":"code-interaction"},a?Ye.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ye.default.createElement("p",{className:`text-sm ${R}`},"Loading\u2026"));let Y=fs(n.status),B=`flex items-center justify-between gap-2 px-4 py-2 border-b ${r?"border-gray-700":"border-gray-200"}`,oe=`rounded-lg border flex flex-col min-h-0 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,ne=`px-2 py-0.5 text-xs rounded ${r?"text-gray-300 hover:bg-gray-700":"text-gray-600 hover:bg-gray-100"}`;return Ye.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:v?{height:v}:void 0,"data-testid":"code-interaction"},Ye.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ye.default.createElement("div",{className:"space-y-1"},t&&Ye.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${R}`},"\u2190 Interactions"),Ye.default.createElement("h2",{className:`text-xl font-bold ${ee}`},n.display_name),Ye.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ye.default.createElement(Ks,{tone:Y.tone},Y.label),Ye.default.createElement("span",{className:`text-xs ${R}`},ZSe[n.origin]||n.origin," \xB7 ",l2(n)),n.project&&Ye.default.createElement("a",{href:Re(`/projects/${n.project.id}`),onClick:he=>{he.preventDefault(),lt(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ye.default.createElement("div",{className:"flex items-center gap-2"},O&&Ye.default.createElement("button",{type:"button",onClick:ge,className:te},"Stop"),Ye.default.createElement("button",{type:"button",onClick:()=>T(he=>!he),className:te,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),K&&!f&&Ye.default.createElement("p",{role:"alert",className:`${P} shrink-0`},"Claude Code needs you: ",K.reason," ",Ye.default.createElement("button",{type:"button",onClick:()=>T(!0),className:"underline"},"Show the browser")),Ye.default.createElement("div",{ref:b,className:`flex-1 min-h-0 flex flex-col gap-4 ${A?"lg:flex-row lg:gap-0":""} ${w?"select-none cursor-col-resize":""}`},Ye.default.createElement("section",{className:`${oe} lg:h-full min-w-0`,style:A?{flex:`0 0 ${k}%`}:void 0,"aria-label":"Conversation",id:`code-interaction-${e}-conversation`},Ye.default.createElement("div",{className:B},Ye.default.createElement("span",{className:`text-sm font-medium ${ee}`},"Conversation"),!f&&Ye.default.createElement("button",{type:"button",onClick:()=>T(!0),className:ne},"Show browser \u203A")),Ye.default.createElement("ol",{ref:g,onScroll:G,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(he=>Ye.default.createElement(JSe,{key:he.id,turn:he,sandboxId:z,darkMode:r,muted:R,strong:ee}))),Ye.default.createElement("form",{onSubmit:Ie,className:`space-y-2 p-4 border-t shrink-0 ${r?"border-gray-700":"border-gray-200"}`},Ye.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${ee}`},"Message ",p0(n)),Ye.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:x,value:s,onChange:he=>l(he.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:V?.result?"Reply, or ask for the next change":"What should happen next?"}),Ye.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ye.default.createElement("span",{className:`text-xs ${R}`,role:"status"},mX(n,{handoff:d})),Ye.default.createElement("button",{type:"submit",className:F,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ye.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),A&&Ye.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":u2,"aria-valuemax":c2,tabIndex:0,onPointerDown:J,onPointerMove:$,onPointerUp:U,onPointerCancel:U,onKeyDown:N,onDoubleClick:()=>C(ef),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"},Ye.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&&Ye.default.createElement("section",{id:`code-interaction-${e}-browser`,className:`${oe} lg:h-full min-w-0 flex-1`,"aria-label":"The sandbox\u2019s browser","data-testid":"code-interaction-browser"},Ye.default.createElement("div",{className:B},Ye.default.createElement("span",{className:`text-sm font-medium ${ee}`},"The sandbox\u2019s browser"),Ye.default.createElement("button",{type:"button",onClick:()=>T(!1),className:ne,"aria-label":"Hide the browser"},"Hide \xD7")),Ye.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},K&&Ye.default.createElement("p",{role:"alert",className:P},p0(n)," needs you: ",K.reason),ie?Ye.default.createElement(w0,{sessionId:z,watchOnOpen:!0,onHandBack:de,handBackLabel:`Hand back to ${p0(n)}`}):Ye.default.createElement("p",{className:`text-xs ${R}`},"The browser is not running."," ",n.project?Ye.default.createElement("a",{href:Re(`/projects/${n.project.id}?tab=browser`),onClick:he=>{he.preventDefault(),lt(`/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 YX="activeagents.codeInteraction.showBrowser",XX="activeagents.codeInteraction.split";function QSe(){try{let e=window.localStorage.getItem(XX);return e===null?ef:d0(e)}catch{return ef}}function GX(e){try{window.localStorage.setItem(XX,String(e))}catch{}}function RSe(){let e=null;try{e=window.localStorage.getItem(YX)}catch{}return gX(window.location.search,e)}function eke(e){try{window.localStorage.setItem(YX,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 tke(e,t){let[r,n]=(0,Ye.useState)(null);return(0,Ye.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 ZX=Z(Q());function sd({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=ch(e,t);return a?ZX.default.createElement("a",{href:Re(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),lt(a))},style:{fontFamily:W,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var rke=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=rd(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=rd(a.content)+rd(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:Vx(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}]}},JX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],nke=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],oke=[{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"}],ake=3e4,Du=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),QX=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 ike({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=Zn(t),[i,s]=(0,we.useState)(null),[l,u]=(0,we.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,we.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(y=>y.ok?y.json():Promise.reject(new Error("not found"))).then(({trace:y})=>m&&s(y)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let p=!!i,f=(i?.spans||[]).length;return we.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},we.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},we.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},we.default.createElement("span",{title:e.cache_hit?`${Du(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&&we.default.createElement("span",{className:"text-amber-500",title:`${Du(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Du(e.tokens.thinking)),we.default.createElement("span",null,e.model||"unknown-model"),e.provider&&we.default.createElement("span",null,e.provider),we.default.createElement("span",{className:"text-blue-500"},"in:",Du(e.tokens.input)),we.default.createElement("span",{className:"text-green-500"},"out:",Du(e.tokens.output)),e.finish_reason&&we.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&we.default.createElement("span",null,Jn(d)),c&&we.default.createElement("a",{href:Re(`/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&&we.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),we.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?we.default.createElement(dI,{trace:i,darkMode:t}):d>0?we.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},we.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,p&&we.default.createElement(we.default.Fragment,null,we.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),we.default.createElement(Xp,{open:n,darkMode:t,size:12})))),n&&i&&we.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},we.default.createElement(Qx,{trace:i,darkMode:t,compact:!0})))}function ju({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,we.useState)([]),[a,i]=(0,we.useState)(!0),[s,l]=(0,we.useState)(null),[u,c]=(0,we.useState)(null),[d,p]=(0,we.useState)({}),{timeWindow:f}=vl(),m=!t&&!e,y=()=>m?sX(Qn(),window.location.search):{view:"list",source:"all",project:null,codeId:null},[x,h]=(0,we.useState)(y),[g,v]=(0,we.useState)([]),{source:b,project:k}=x;(0,we.useEffect)(()=>{if(!m)return;let z=()=>h(y());return window.addEventListener("popstate",z),window.addEventListener("dashboard:navigate",z),()=>{window.removeEventListener("popstate",z),window.removeEventListener("dashboard:navigate",z)}},[m]),(0,we.useEffect)(()=>{m&&fetch("/api/projects").then(z=>z.ok?z.json():{projects:[]}).then(z=>v(z.projects||[])).catch(()=>{})},[m]);let S=z=>{ad(z),h(y())},w=z=>S(s2({source:b,project:k,...z})),_=z=>S(ms(z));(0,we.useEffect)(()=>{if(x.view!=="latest")return;let z=TI({source:b==="all"?"claude_code":b,project:k});fetch(`/api/interactions?${z}`).then(V=>V.json()).then(V=>{let K=lX(V.interactions),ie=K?ms(Rp(K.id)):s2({source:b,project:k});window.history.replaceState({},"",Re(ie)),h(y())}).catch(()=>{})},[x.view,b,k]);let A=(0,we.useCallback)(async()=>{try{let z=await fetch(`/api/interactions?${TI({minutes:f.minutes,agentId:e,source:b,project:k})}`);if(!z.ok)throw new Error(`Request failed (${z.status})`);let V=await z.json();o(V.interactions||[]),l(null)}catch(z){l(z.message)}finally{i(!1)}},[f.minutes,e,b,k]);(0,we.useEffect)(()=>{A();let z=setInterval(A,ake);return()=>clearInterval(z)},[A]);let[C,E]=(0,we.useState)("recent"),I=(0,we.useMemo)(()=>{let z=[...new Set(n.map(V=>V.display_name).filter(Boolean))].sort();return Object.fromEntries(z.map((V,K)=>[V,JX[K%JX.length]]))},[n]),J=(0,we.useMemo)(()=>{let z=n.reduce((K,ie)=>K+(ie.tokens?.total||0),0),V=new Set(n.map(K=>K.display_name).filter(Boolean));return{interactions:n.length,tokens:z,agents:V.size,avgTokens:n.length?Math.round(z/n.length):0}},[n]),$=(0,we.useMemo)(()=>{if(n.length===0)return[];let z=Date.now(),V=f.bucketSeconds*1e3,K=Math.max(1,Math.round(f.minutes*60/f.bucketSeconds)),ie=Object.keys(I);return Array.from({length:K},(Ie,ge)=>{let de=z-(K-1-ge)*V,R=de-V,ee=n.filter(L=>{let te=new Date(L.last_activity_at).getTime();return te>=R&&te1440?new Date(de).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit"}):new Date(de).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}),...Object.fromEntries(ie.map(L=>[L,ee.filter(te=>te.display_name===L).length]))}})},[n,I,f]),U=Math.max(0,Math.ceil($.length/6)-1),N=(0,we.useCallback)(z=>{let V=[...z];switch(C){case"tokens":return V.sort((K,ie)=>(ie.tokens?.total||0)-(K.tokens?.total||0));case"messages":return V.sort((K,ie)=>(ie.message_count||0)-(K.message_count||0));default:return V.sort((K,ie)=>String(ie.last_activity_at).localeCompare(String(K.last_activity_at)))}},[C]),T=(0,we.useMemo)(()=>{let z=new Map;n.forEach(K=>{let ie=K.agent_name||K.agent?.name||"Unattributed",Ie=K.action_name,ge=`${ie}#${Ie||""}`;z.has(ge)||z.set(ge,{key:ge,title:Ie?`${ie} ${Ie.charAt(0).toUpperCase()}${Ie.slice(1)} Agent Interactions`:`${ie} Interactions`,sessions:[],tokens:0,lastActivity:K.last_activity_at});let de=z.get(ge);de.sessions.push(K),de.tokens+=K.tokens?.total||0,K.last_activity_at>de.lastActivity&&(de.lastActivity=K.last_activity_at)});let V=[...z.values()].map(K=>({...K,sessions:N(K.sessions)}));return C==="tokens"?V.sort((K,ie)=>ie.tokens-K.tokens):C==="messages"?V.sort((K,ie)=>ie.sessions.length-K.sessions.length):V.sort((K,ie)=>String(ie.lastActivity).localeCompare(String(K.lastActivity)))},[n,C,N]),D=async z=>{if(m&&Rp(z)){_(Rp(z));return}if(u===z){c(null);return}if(c(z),!d[z])try{let V=await fetch(`/api/interactions/${z}`);if(V.ok){let K=await V.json();p(ie=>({...ie,[z]:K.interaction}))}}catch{}},[O,j]=(0,we.useState)({}),[M,H]=lh(),G=Zn(r);return m&&x.view==="conversation"?we.default.createElement(LI,{rootId:x.codeId,onBack:()=>S(s2({source:b,project:k}))}):a?we.default.createElement("div",{className:"flex items-center justify-center h-64"},we.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):we.default.createElement("div",{className:"space-y-6"},we.default.createElement("div",{className:"flex items-start justify-between"},!t&&we.default.createElement("div",null,we.default.createElement("h1",{className:"text-2xl font-bold",style:{color:G.textPrimary}},"Interactions"),we.default.createElement("p",{className:"text-sm mt-1",style:{color:G.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),we.default.createElement("div",{className:"flex items-center gap-3"},we.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},we.default.createElement("span",{className:"text-xs px-1",style:{color:G.textMuted}},"Sort"),nke.map(z=>we.default.createElement("button",{key:z.id,onClick:()=>E(z.id),className:"px-2 py-1 text-xs rounded transition-colors",style:C===z.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:G.textSecondary}},z.label))),we.default.createElement(xl,null),m&&we.default.createElement(r0,null))),m&&we.default.createElement("div",{className:"flex flex-wrap items-center gap-3","data-testid":"interactions-filters"},we.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"}},EI.map(z=>we.default.createElement("button",{key:z.id,type:"button",onClick:()=>w({source:z.id}),"aria-pressed":b===z.id,className:"px-2 py-1 text-xs rounded transition-colors",style:b===z.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary}:{color:G.textSecondary}},z.label))),g.length>0&&we.default.createElement("label",{className:"flex items-center gap-1 text-xs",style:{color:G.textSecondary}},"Project",we.default.createElement("select",{value:k||"",onChange:z=>w({project:z.target.value?Number(z.target.value):null}),className:"text-xs rounded border px-1 py-0.5",style:{background:G.cardBg,borderColor:G.cardBorder,color:G.textPrimary}},we.default.createElement("option",{value:""},"All projects"),g.map(z=>we.default.createElement("option",{key:z.id,value:z.id},z.name)))),we.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")),we.default.createElement(vI,{agentId:e}),s&&we.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&&we.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:G.cardBg,borderColor:G.cardBorder}},we.default.createElement("div",{className:"flex items-center justify-between mb-3"},we.default.createElement("h3",{className:"text-sm font-semibold",style:{color:G.textPrimary}},"Interactions over time"),we.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(I).map(([z,V])=>we.default.createElement("span",{key:z,className:"flex items-center gap-1.5 text-xs",style:{color:G.textSecondary}},we.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:V}}),z)))),we.default.createElement("div",{className:"h-32"},we.default.createElement(_c,{width:"100%",height:"100%"},we.default.createElement(td,{data:$},we.default.createElement("defs",null,Object.entries(I).map(([z,V])=>we.default.createElement("linearGradient",{key:z,id:`ix-gradient-${z.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},we.default.createElement("stop",{offset:"5%",stopColor:V,stopOpacity:.6}),we.default.createElement("stop",{offset:"95%",stopColor:V,stopOpacity:.05})))),we.default.createElement(Su,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),we.default.createElement(Au,{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:U}),we.default.createElement(Nu,{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}),we.default.createElement(Uc,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${G.cardBorder}`,borderRadius:"8px"},labelStyle:{color:G.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(I).map(([z,V])=>we.default.createElement(_u,{key:z,type:"monotone",dataKey:z,stackId:"1",stroke:V,strokeWidth:2,fill:`url(#ix-gradient-${z.replace(/\W/g,"-")})`}))))),we.default.createElement("div",{className:"flex items-center gap-8 pt-3 mt-3 border-t",style:{borderColor:G.cardBorder}},[{label:"Interactions",value:J.interactions.toLocaleString()},{label:"Agents",value:J.agents.toLocaleString()},{label:"Total tokens",value:Du(J.tokens)},{label:"Avg / interaction",value:Du(J.avgTokens)}].map(z=>we.default.createElement("div",{key:z.label},we.default.createElement("div",{className:"text-lg font-bold",style:{color:G.textPrimary}},z.value),we.default.createElement("div",{className:"text-xs",style:{color:G.textSecondary}},z.label))))),n.length===0?we.default.createElement("div",{className:"text-center py-12"},we.default.createElement("div",{className:"text-lg",style:{color:G.textMuted}},"No interactions in the last ",f.label),we.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")):we.default.createElement("div",{className:"space-y-8"},T.map(z=>we.default.createElement("div",{key:z.key,className:"space-y-4"},we.default.createElement("div",{className:"flex items-baseline justify-between"},we.default.createElement("h2",{className:"text-sm font-semibold",style:{color:G.textPrimary}},z.title),we.default.createElement("span",{className:"text-xs",style:{color:G.textMuted}},z.sessions.length," ",z.sessions.length===1?"interaction":"interactions",z.tokens>0&&` \xB7 ${Du(z.tokens)} tokens`)),z.sessions.map(V=>{let K=d[V.id],ie=u===V.id,Ie=O[V.id]||"conversation",ge=V.tokens?.total||0,de=(V.tokens?.input||0)+(V.tokens?.output||0)||ge;return we.default.createElement(HC,{key:V.id,darkMode:r,className:"shadow-sm"},we.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:()=>D(V.id),style:ie?{background:G.hoverBg}:void 0},we.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},NI(V)?we.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:`${V.turn_count} ${V.turn_count===1?"turn":"turns"}${V.active?", one running now":""}`},V.runner==="codex"?"CODEX":"CLAUDE CODE",V.active?" \xB7 LIVE":""):V.source==="telemetry"?we.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"):we.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),we.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:G.textPrimary}},V.display_name),V.agent&&we.default.createElement("span",{className:"text-sm truncate",style:{color:G.textSecondary}},V.agent.name),V.service_name&&we.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:G.textMuted}},V.service_name)),we.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},we.default.createElement(od,{darkMode:r,cells:[{key:"activity",width:Ea.count,content:V.message_count>0?`${V.message_count} messages`:`${V.tool_count||0} tool ${V.tool_count===1?"call":"calls"}`},{key:"tokens",width:Ea.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:ge>0&&`${Du(ge)} tokens`},{key:"context",width:Ea.context,empty:"Context: this interaction recorded no token counts",content:ge>0&&we.default.createElement(nd,{compact:!0,darkMode:r,label:"Context",used:de,limit:Vx(V.model),segments:[{key:"messages",label:"Context",tokens:de}]})},{key:"age",width:Ea.age,title:V.last_activity_at||void 0,empty:"No activity recorded",content:QX(V.last_activity_at)&&we.default.createElement("span",{style:{color:G.textMuted}},QX(V.last_activity_at))}]}),V.source!=="telemetry"&&we.default.createElement(sd,{kind:"context",id:V.id,title:"Replay this conversation"}),we.default.createElement(Xp,{open:ie,darkMode:r}))),!ie&&we.default.createElement(sh,{darkMode:r,onClick:()=>D(V.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:V.preview?.input,color:jn("user",r).color},{label:"output",text:V.preview?.output,color:jn("assistant",r).color}]}),ie&&we.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:G.cardBorder,background:G.innerBg}},K?we.default.createElement(we.default.Fragment,null,we.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},we.default.createElement(Jx,{options:oke,value:Ie,onChange:R=>j(ee=>({...ee,[V.id]:R})),darkMode:r}),we.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"}`)),Ie==="conversation"&&we.default.createElement(we.default.Fragment,null,K.messages.length===0&&we.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."),we.default.createElement(ds,{darkMode:r,messages:K.instructions?[{id:`ctx-${V.id}-system`,role:"system",content:K.instructions,created_at:V.created_at},...K.messages]:K.messages}),(()=>{let R=rke(K);return R?we.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:G.cardBorder}},we.default.createElement(nd,{...R,label:"Context pressure",estimated:!0,darkMode:r})):null})()),Ie==="spans"&&(K.generations.length===0?we.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):we.default.createElement("div",{className:"space-y-2"},K.generations.map(R=>we.default.createElement(ike,{key:R.id,generation:R,darkMode:r,maxMs:Math.max(...K.generations.map(ee=>(ee.duration_seconds||0)*1e3),1),expanded:M(`${V.id}:${R.id}`),onToggle:()=>H(`${V.id}:${R.id}`)}))))):we.default.createElement("div",{className:"flex justify-center py-6"},we.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var Te=Z(Q());function eZ(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(y=>JSON.stringify(d[y]??null)!==JSON.stringify(f[y]??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 y=r.get(d);if(y&&y.scenario===p&&y.first===f)return y.row;let x=m();return r.set(d,{scenario:p,first:f,row:x}),x},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 RX=e=>/^[1-9]\d*$/.test(e||"")?e:null;function zI(e){let t=new URLSearchParams(e),r=RX(t.get("evaluation"));return r?{evaluationId:r,runId:RX(t.get("run"))}:null}async function tZ(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 Se=Z(Q());async function ld(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 mh(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 f2(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 rZ(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 ld(await i(),{navigator:r,document:n})}catch{return!1}}var ske=["trace_error_rate","trace_latency"],HI=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],St=(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},nZ=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),UI=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,lke=(e,t)=>t>0?`${e}/${t} \xB7 ${UI(e/t)}`:"\u2014",oZ=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},Sl=e=>e?.type==="llm_judge"?"judge":ske.includes(e?.type)?"telemetry":"rules",m2=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||nZ(e.key);default:return nZ(e?.key)}},yh=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 ${oZ(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 ${oZ(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${S0(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},k0=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},vh=(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"},qI=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,rf=(e,t=null)=>{let r=qI(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")}`},KI=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),xh=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var _0=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 xh(e).forEach(([,n])=>{KI(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},nf=(e,t)=>!e||typeof e!="object"?null:KI(e)?t&&e[t]||null:e,iZ=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,uke=e=>!!e&&["pending","running"].includes(e.status),hh=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,of=(e,t)=>e!=null&&t?e/t:null,g2=(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=hh(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:hh(i,i.scenarios),reported:i.reported??null,estimated:g2(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:hh(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=_0(e);return o.length?o.map(a=>{let i=xh(e).map(([,s])=>nf(s,a)).filter(s=>s&&s.total!=null).map(s=>s.total);return{label:a,model:a,provider:null,samples:i.length?Math.max(...i):null,passed:null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:e.selection||t._selection?"replay":"sample"}}):[{label:null,model:null,provider:null,samples:e.samples_evaluated??null,passed:e.samples_passed??null,errored:0,avg_score:null,avg_duration_ms:null,input_tokens:null,output_tokens:null,cost:null,priced:null,reported:null,estimated:!1,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}]},sZ=(e,t)=>{let r=xh(e).map(([,o])=>nf(o,t)).filter(Boolean),n=r.filter(o=>o.score!=null);return{avg:n.length?n.reduce((o,a)=>o+a.score,0)/n.length:null,scored:n.length,cleared:n.filter(o=>o.score>=.7).length,below:n.filter(o=>o.score<.7).length,skipped:r.filter(o=>o.skipped).length}},lZ=20,af=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,C0=(e=[],t=null)=>{let r=af(e,t),n=e.length=lZ;return`${St(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},uZ=3,cZ=(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"},wh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:af(r,n)-t,A0=(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"}},dZ=(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}`:""}`}},pZ=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}`:""}`}},Ni=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=hh(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:g2(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??of(n,o),inputTokens:t.input_tokens??null,outputTokens:t.output_tokens??null,modelTimeMs:t.model_time_ms??null}:null,i=t.judge,s=i&&typeof i=="object"?{cost:i.cost??null,calls:i.calls||0,byKind:i.by_kind||{},model:i.model||null,inputTokens:i.input_tokens??null,outputTokens:i.output_tokens??null,source:i.source||null,estimated:i.estimated??(i.source==null||i.source!=="reported"),run:i.run&&typeof i.run=="object"?i.run:null}:null;if(!a&&!s)return null;let l=t.total??(a?.cost!=null||s?.cost!=null?(a?.cost||0)+(s?.cost||0):null),u=!!(a?.cost!=null&&a.estimated||s?.cost!=null&&s.estimated);return{agent:a,judge:s,total:l,totalEstimated:u,runtimeMs:t.runtime_ms??null}},fZ=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"},E0=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},N0=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 ")},cke=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Ni(l);u&&(a+=1,u.agent&&(r+=u.agent.count,n+=u.agent.priced),u.agent?.cost!=null&&(t=(t||0)+u.agent.cost,u.agent.estimated&&(i=!0)),u.judge?.cost!=null&&(o=(o||0)+u.judge.cost,u.judge.estimated&&(s=!0)))}),{agentCost:t,interactions:r,pricedInteractions:n,perInteraction:of(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},Sh=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},VI=e=>e?e.standing?e.standing:e.archived_at?"archived":Sh(e)?"current":"none":"none",dke=["current","unrecorded"],mZ=(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=Sh(d),f=VI(d);if(!(n?!!p:!!p&&dke.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(([x,h])=>({label:x,passed:h?.passed||0,total:h?.total||0})):bh(p).filter(x=>x.label&&x.samples>0).map(x=>({label:x.label,passed:x.passed||0,total:x.samples||0}))).forEach(({label:x,passed:h,total:g})=>{let v=s[x]||={label:x,passed:0,total:0,byEvaluation:{}};v.passed+=h,v.total+=g;let b=v.byEvaluation[d.id]||={passed:0,total:0};b.passed+=h,b.total+=g})}),{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:cke(i),focused:n}},BI=1.96,pke=(e,t)=>{let r=Number(t)||0;if(r<=0)return 0;let n=(Number(e)||0)/r,o=BI*BI,a=n+o/(2*r),i=BI*Math.sqrt(n*(1-n)/r+o/(4*r*r));return Math.max(0,(a-i)/(1+o/r))},gZ=e=>(e?.perModel||[]).filter(t=>t.total>0).map(t=>({...t,ratio:t.passed/t.total,lower:pke(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})),hZ=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 ")},y2=(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=[];xh(t).forEach(([u,c])=>{let d=k0(e,u);(KI(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[Sl(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 ${UI(.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}`:""} ${UI(c.stats.score)} \xB7 expects ${yh(c.criterion)} \xB7 ${lke(c.stats.passed,c.stats.total)} passed`)})}return r},aZ=e=>String(e||"").replace(/_/g," "),yZ=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}},v2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=bh(e),i=new Map(a.map(c=>[c.label,c])),s=o&&o.length?o:a.map(c=>c.label),l=e?.scores?._verdict?.winner||null;return s.map(c=>{let d=i.get(c)||{},p=t.filter(C=>n(C)===c),f=p.filter(C=>C?.status&&C.status!=="pending"),m=d.samples??(r||p.length||null),y=d.passed??f.filter(C=>C.status==="passed").length,x=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,E)=>E.fault?{...C,[E.fault]:(C[E.fault]||0)+1}:C,{}),h=C=>p.find(E=>E.fault===C)||null,g=C=>C==="low_quality"?1:0,v=Object.entries(x).sort((C,E)=>E[1]-C[1]||(h(E[0])?1:0)-(h(C[0])?1:0)||g(C[0])-g(E[0])||C[0].localeCompare(E[0])),[b,k]=v[0]||[],S=b?h(b):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,E)=>C+Number(E.score),0)/f.filter(C=>C.score!=null).length:null);return{label:c,model:d.model||c,provider:d.provider||null,winner:l===c,passed:y,total:m,scored:d.samples??f.length,passRate:m?y/m:null,avgScore: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:of(d.cost,d.priced),faults:v.map(([C,E])=>({fault:C,name:aZ(C),count:E})),typicalFault:b?{fault:b,name:aZ(b),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))},vZ=(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 ${S0(s,t)}`},xZ=(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}}),GI=(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}),bZ=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,GI(e,r).length])),x2=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:wZ(t)})),wZ=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}`},T0=e=>wZ(e?.sandbox),SZ=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},b2=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",sf=e=>e?.selection||e?.scores?._selection||{},kZ=e=>(sf(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function O0(e,t=[]){let r=sf(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):uke(e)||e.status==="failed"?n.map(o=>o.key):[]}var YI=(e,t=[])=>{let r=sf(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}},_Z=(e=[],t=[])=>lf((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),CZ=(e,t=[])=>{let r=sf(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:lf(n,t).keys}:{}},XI=272,ZI=16,AZ=32,EZ=940,JI="clamp(360px, calc(100vh - 240px), 900px)",NZ=320,fke=3,TZ=3,OZ=720,WI="aa.evaluations.detail",PZ=e=>368+138*e,MZ=e=>504+170*e,IZ=e=>{try{let t=e?.getItem(WI);return t==="tools"||t==="steps"?t:null}catch{return null}},DZ=(e,t)=>{try{t==null?e?.removeItem?.(WI):e?.setItem(WI,t)}catch{}},jZ=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,$Z=(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))},QI=(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},RI=(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},FI=e=>e!=null&&Number.isFinite(Number(e))?Number(e):null,w2=e=>{if(!e||e.status==="pending")return null;let t={durationMs:FI(e.duration_ms),inputTokens:FI(e.input_tokens),outputTokens:FI(e.output_tokens)};return t.durationMs==null&&t.inputTokens==null&&t.outputTokens==null?null:t},zZ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=w2(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},BZ=(e={},t=[])=>{let r=zZ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},FZ=(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")}},eD=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,zZ(r.map(o=>e[o]?.[n]))])),UZ=(e=[],t={},r=[])=>{let n=e.map(o=>RI(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},WZ=(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)},gh=e=>String(e).padStart(2,"0"),HZ=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}},qZ=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n}=HZ(e);return t?`${t}:${gh(r)}:${gh(n)}`:`${gh(r)}:${gh(n)}`},tD=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=HZ(e);return o<60?`${o}s`:t?`${t}h ${gh(r)}m`:`${r}m ${gh(n)}s`},S2=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?tD(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},KZ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},mke=(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,VZ=(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&&mke(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},GZ=(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},YZ=(e=[],t=fke)=>{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 ")}]},rD=(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)},XZ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),ZZ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var gke=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],JZ=["openai","anthropic","ollama","openrouter","mock"];function hke(e,t=JZ){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=gke.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function yke(e,t,r=JZ){let n=hke(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function QZ(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:yke(r,o)}]:[]}))}function P0(e,{providers:t,qualify:r=!0}){let n=QZ(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function RZ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=QZ(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 ud(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function M0(e){return e.join(", ")}function eJ(e,t){return[...new Set([...e,...ud(t)])]}function tJ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function rJ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function nJ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var kh=Z(Q()),Vs=typeof window>"u"?kh.useEffect:kh.useLayoutEffect;function I0(e){let[t,r]=(0,kh.useState)(0);return Vs(()=>{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 ta=Z(Q());function D0({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,ta.useState)(""),[p,f]=(0,ta.useState)(""),m=(0,ta.useRef)(null),y=(0,ta.useId)(),x=ud(e),h=(0,ta.useRef)(x);h.current=x;let g=_=>{let A=eJ(h.current,_);A.length!==h.current.length&&(t(M0(A)),f(`Added ${A.slice(h.current.length).join(", ")}`)),d("")},v=_=>{t(M0(h.current.filter(A=>A!==_))),f(`Removed ${_}`),m.current?.focus()},b=(_,A)=>{if(_.includes(",")){let{complete:C,rest:E}=tJ(_);g(C),d(E)}else rJ(A.nativeEvent?.inputType,_,r)?g(_):d(_.trimStart())},k=_=>{let A=nJ(_,c,h.current.length);A==="commit"?(_.preventDefault(),setTimeout(()=>g(m.current?.value||""),0)):A==="removeLast"&&(_.preventDefault(),v(h.current[h.current.length-1]))},S=r.filter(_=>!x.includes(_)),w=[i,a&&`${y}-title`,`${y}-selected`].filter(Boolean).join(" ");return ta.default.createElement("div",{"data-testid":u,onClick:_=>{_.target===_.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},x.map(_=>ta.default.createElement("span",{key:_,style:vke},ta.default.createElement("span",{style:{overflowWrap:"anywhere"}},_),ta.default.createElement("button",{type:"button",onClick:()=>v(_),"aria-label":`Remove ${_}`,title:`Remove ${_}`,style:xke},"\xD7"))),ta.default.createElement(Rl,{inputRef:m,id:s,"aria-label":l,"aria-describedby":w,title:a,value:c,models:S,onChange:b,onKeyDown:k,onBlur:()=>{c.trim()&&g(c)},placeholder:x.length?"Add a model":n,style:{flex:"1 1 80px",minWidth:80,padding:0,border:"none",background:"transparent",font:"inherit",color:"inherit"}}),a&&ta.default.createElement("span",{id:`${y}-title`,style:nD},a),ta.default.createElement("span",{id:`${y}-selected`,style:nD},x.length?`Chosen: ${x.join(", ")}`:"No models chosen"),ta.default.createElement("span",{role:"status","aria-live":"polite",style:nD},p))}var vke={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:W,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},xke={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},nD={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Ze=Z(Q());var Ti=Z(Q());var bke="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",wke="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",uf="var(--color-text-muted)",k2=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",$u=(e,t=!1)=>Pr(e,{estimated:t}),oJ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${Pr(e.agent.cost,{estimated:e.agent.estimated})}`,St(e.agent.count,k2(e))];e.agent.perInteraction!=null&&n.push(`${$u(e.agent.perInteraction,e.agent.estimated)} each`),r.push(n.join(" \xB7 "))}return e.judge&&r.push(`judge ${Pr(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${St(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${Pr(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function cf({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 Ti.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}},Ti.default.createElement(We,{size:10,color:uf},e),Ti.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:W,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Ti.default.createElement("div",{style:{marginTop:4,fontFamily:W,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var aJ={value:"\u2026",valueColor:uf,sub:"priced when the run completes"};function oD({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${On(n.inputTokens)} \xB7 out ${On(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:uf,sub:"nothing replayed"}:t?aJ:{value:n?Pr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:uf,sub:n?`${St(n.count,k2(e))}${n.perInteraction!=null?` \xB7 ${$u(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Ti.default.createElement(cf,{label:"Agent cost",title:bke,testId:"run-spend-agent",...a})}function aD({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[St(o.calls,"call"),N0(o),o.model,E0(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:uf,sub:i}:r?aJ:{value:o?Pr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:uf,sub:i};return Ti.default.createElement(cf,{label:"Judge cost",title:wke,testId:"run-spend-judge",...s})}function iD({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Ti.default.createElement(ze,{padding:0,testId:r,style:{overflow:"hidden"}},Ti.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Ti.default.createElement(oD,{spend:e}),Ti.default.createElement(aD,{spend:e,judgedBy:t}),Ti.default.createElement(cf,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?Pr(n,{estimated:o}):"\u2014",sub:fZ(e),testId:"run-spend-total"})),o&&Ti.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:W,fontSize:11,color:uf}},al))}function pf({run:e,testId:t,short:r=!1}){if(!e)return Ze.default.createElement(Ce,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Ze.default.createElement(Ce,{tone:"error",testId:t},"failed");if(e.status==="pending")return Ze.default.createElement(Ce,{tone:"warning",testId:t},"queued");if(e.status==="running")return Ze.default.createElement(Ce,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=Kn(e.samples_passed||0,e.samples_evaluated);return Ze.default.createElement(Ce,{tone:Pu(iZ(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 Ze.default.createElement(Ce,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${aa(n)}`)}return Ze.default.createElement(Ce,{tone:"muted",testId:t},"no samples")}function C2({run:e,testId:t="run-version"}){let r=pZ(e);return r?Ze.default.createElement(Ce,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var df={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},j0={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},iJ=Ea.cost+32,Ske=e=>bh(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:bn(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),lJ=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,rf(t,e),vh(t,e),T0(e)&&`against ${T0(e)}`].filter(Boolean).join(" \xB7 ");function A2({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=wh(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):A0(l,d,{olderNumber:p}),m=f&&d?dZ(l,d):null,y=Ni(l);return{run:l,number:c,latest:u===0,when:wo(l.completed_at||l.created_at),meta:lJ(l,r,n),bars:i?i(l):Ske(l),delta:f,version:m,spend:y,selected:l.id===o}})}function cD({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=A2({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Ze.default.createElement(en,{title:u,meta:C0(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Ze.default.createElement(tn,null,"[ ] no runs yet"),Ze.default.createElement("div",{style:{minWidth:920}},p.map(f=>Ze.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"}`}},Ze.default.createElement("div",{style:{minWidth:0}},Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ze.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Ze.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Ze.default.createElement(Ce,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Ze.default.createElement(Ce,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Ze.default.createElement(C2,{run:f.run})),Ze.default.createElement("div",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Ze.default.createElement("div",{style:{fontFamily:W,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Ze.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Ze.default.createElement("span",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Ze.default.createElement(Mu,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Ze.default.createElement(od,{darkMode:d,cells:[{key:"agent",width:iJ,title:f.spend?.agent?`Agent: ${St(f.spend.agent.count,k2(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${$u(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&&Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11}},Ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Pr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:iJ,title:f.spend?.judge?`Judge: ${St(f.spend.judge.calls,"call")}${N0(f.spend.judge)?` \xB7 ${N0(f.spend.judge)}`:""}${E0(f.spend.judge)?` \xB7 ${E0(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11}},Ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Pr(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&&Ze.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:600,color:df[f.delta.tone]||df.muted}},f.delta.text),f.version&&Ze.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:W,fontSize:10,color:j0[f.version.kind]||j0.same}},f.version.text))},{key:"badge",width:132,content:Ze.default.createElement(pf,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Ze.default.createElement(Na,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var sJ='[data-testid="evaluation-run"]',kke=150,sD=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,lD=(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))},_ke=(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},Cke=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:wo(e.completed_at||e.created_at),meta:lJ(e,t,r),bars:n||[],delta:null,version:null,spend:Ni(e),selected:e.id===o}),uD={fontFamily:W,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function Ake({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Ze.default.createElement("span",{style:{...uD,width:96,flexShrink:0},title:e.label||void 0},e.short),Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Ze.default.createElement("div",{title:t},Ze.default.createElement(Mu,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function _2({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"?_ke(e.bars):null,c=YZ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Ze.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}},Ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Ze.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Ze.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Ze.default.createElement(C2,{run:s}),Ze.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Ze.default.createElement(pf,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Ze.default.createElement(Ake,{key:p.label||"all",bar:p})),u&&Ze.default.createElement(VC,{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&&Ze.default.createElement("div",{style:{...uD,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Ze.default.createElement("div",{"data-testid":"evaluation-run-note",style:uD,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Ze.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:W,fontSize:10,minWidth:0}},e.delta&&Ze.default.createElement("span",{style:{fontWeight:600,color:df[e.delta.tone]||df.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Ze.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Pr(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function dD({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:y=null,expandedHeight:x=NZ,testId:h="suite-runs-panel",style:g}){let v=e??A2({runs:t,runCount:r,evaluation:n,agentName:o,selectedId:a,previousRun:s,barsFor:l,deltaFor:u}),b=t.length||!e?t:e.map(K=>K.run),k=a??v.find(K=>K.selected)?.run.id??null,S=K=>K.run.id===k,w=d&&!v.some(K=>K.run.id===d.id)?Cke(d,{evaluation:n,agentName:o,bars:p,selectedId:k}):null,_=f==="strip",A=_?cZ(v.map(K=>K.run),{limit:m,selectedId:k}).map(K=>v[K]):v,C=w?[w,...A]:A,E=v.length-A.length,I=_&&Number.isFinite(m)&&E>0,J=af(b,r)-b.length,$=(C.find(S)||C[0])?.run.id??null,U=(v.find(S)||v[0])?.run.id??null,[N,T]=(0,Ze.useState)(!1),D=(0,Ze.useRef)(null),O=(0,Ze.useRef)(null),j=(0,Ze.useRef)(null),M=(0,Ze.useRef)(null);(0,Ze.useEffect)(()=>()=>clearTimeout(M.current),[]),(0,Ze.useEffect)(()=>{I||T(!1)},[I]);let H=new Map(C.concat(v).map(K=>[String(K.run.id),K.run])),G=K=>{clearTimeout(M.current),M.current=setTimeout(()=>i?.(K),kke)},z=(K,{next:ie,prev:Ie,axis:ge})=>de=>{let R=K.current,ee=R?Array.from(R.querySelectorAll(sJ)):[];if(ee.length===0)return;let L=de.target.closest(sJ),te=ee.indexOf(L),F;if(de.key===ie)F=ee[Math.min(te+1,ee.length-1)];else if(de.key===Ie)F=ee[Math.max(te-1,0)];else if(de.key==="Home")F=ee[0];else if(de.key==="End")F=ee[ee.length-1];else return;if(de.preventDefault(),!F||F===L)return;F.focus({preventScroll:!0}),lD(R,F,ge);let P=H.get(F.dataset.runId);P&&G(P)};Vs(()=>{if(N||j.current==null)return;let K=sD(O.current,j.current);j.current=null,K?.focus({preventScroll:!0})},[N]),Vs(()=>{k!=null&&(lD(O.current,sD(O.current,k),"x"),lD(D.current,sD(D.current,k),"y"))},[k,f,N]);let V=J>0&&Ze.default.createElement("div",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${St(J,"older run")} \xB7 reachable by link`);return _?Ze.default.createElement(en,{title:"Runs",meta:C0(b,r),testId:h,style:g},Ze.default.createElement("div",{ref:O,"data-testid":"run-strip",onKeyDown:z(O,{next:"ArrowRight",prev:"ArrowLeft",axis:"x"}),style:{display:"flex",overflowX:"auto",scrollbarGutter:"stable",position:"relative"}},C.length===0&&Ze.default.createElement(tn,{style:{flex:1}},"[ ] no runs yet"),C.map((K,ie)=>Ze.default.createElement(_2,{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:ieT(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:W,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${St(E,"earlier run")}`),I&&N&&Ze.default.createElement("div",{ref:D,onKeyDown:z(D,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{maxHeight:x,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},v.map(K=>Ze.default.createElement(_2,{key:K.run.id,row:K,selected:S(K),tabIndex:U===K.run.id?0:-1,noteFor:c,onOpen:ie=>{j.current=ie.id,T(!1),i?.(ie)}})),V)):Ze.default.createElement(en,{title:"Runs",meta:C0(b,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:y||void 0,...g},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Ze.default.createElement("div",{ref:D,onKeyDown:z(D,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{flex:1,minHeight:0,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},w&&Ze.default.createElement(Ze.default.Fragment,null,Ze.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${b.length}`),Ze.default.createElement(_2,{row:w,selected:S(w),tabIndex:$===w.run.id?0:-1,onOpen:i,noteFor:c})),!w&&v.length===0&&Ze.default.createElement(tn,null,"[ ] no runs yet"),v.map(K=>Ze.default.createElement(_2,{key:K.run.id,row:K,selected:S(K),tabIndex:$===K.run.id?0:-1,onOpen:i,noteFor:c})),V))}var uJ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[St(n,"run"),r?`latest #${wh(r,0,e,t)} ${wo(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${Kn(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Mt=Z(Q());var cd=Z(Q());function kl({text:e=null,url:t=null,label:r="Copy as Markdown",title:n,testId:o="copy-markdown",style:a}){let[i,s]=(0,cd.useState)("idle"),l=(0,cd.useRef)(null);return(0,cd.useEffect)(()=>()=>clearTimeout(l.current),[]),!e&&!t?null:cd.default.createElement(pe,{size:"sm",variant:"ghost",onClick:async c=>{c?.stopPropagation?.();let d=e?await ld(e):await rZ(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 Oi="var(--color-text-muted)",pD=3,cJ={passed:0,total:0},dJ={items:0,faults:0,scenarios:0},Eke={keys:[],dropped:[]},_l=(e,t,r={})=>({fontFamily:W,fontSize:e,color:t,...r}),$0=e=>typeof window>"u"?"#":Re(e),Nke=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 pJ({short:e,label:t}){return Mt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Mt.default.createElement("span",{style:_l(10,Oi,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Mt.default.createElement("span",{style:_l(11,Oi)},"\u2014"))}function fD({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=cJ,settledCount:m=0,settledFailed:y=0,expectedResults:x=0,running:h=!1,loading:g=!1,spend:v=null,fixSummary:b=dJ,selectionLabel:k=null,sandboxLabel:S=null,reportPath:w=null,rerun:_=Eke,onSelectLatest:A,onWatchLatest:C,onJumpToFix:E,onRerunFailed:I,onRunAgain:J}){let{darkMode:$}=ut(),U=Nke(h);if(!e)return null;let N=mh(w),T=e.status==="failed",D=e.status==="complete",O=h?`started ${wo(e.created_at)}`:wo(e.completed_at||e.created_at),j=`@${a} \xB7 ${St(i,"scenario")}${s?` in ${St(s,"group")}`:""} \xD7 ${St(l.length,"model")} \xB7 judged by ${u}${S?` \xB7 against ${S}`:""}`,M=_?.keys||[],H=_?.dropped||[],G=H.length?`${M.length} of ${M.length+H.length}`:`${M.length}`,z="Replay every scenario that failed on any model, under the models in the picker"+(H.length?` \xB7 not replayed (disabled or removed): ${H.join(", ")}`:""),V=WZ(e,U),K=[{key:"duration",width:Ea.duration,content:V!=null&&Mt.default.createElement("span",{style:_l(11)},h?qZ(V):tD(V)),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:_l(11,df[d.tone]||df.muted,{fontWeight:600})},d.text),p&&Mt.default.createElement("span",{"data-testid":"run-version-delta",style:_l(10,j0[p.kind]||j0.same)},p.text)),title:"Samples passed, against the run before",empty:D&&!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(pf,{run:e,testId:"suite-run-badge"})}],ie=f||cJ,Ie=ie.total>0?ie.passed/ie.total:null,ge=T?{value:"\u2014",valueColor:Oi,sub:m?`${m} of ${x} before it failed`:"run failed"}:h?{value:`${ie.passed} passed`,sub:Mt.default.createElement("span",{"data-testid":"suite-run-progress"},`${m} of ${x} results in${y?` \xB7 ${y} failed`:""}`)}:{value:Kn(ie.passed,ie.total),valueColor:Ie==null?Oi:bo[Pu(Ie)].text,sub:`${Math.max(ie.total-ie.passed,0)} failed \xB7 ${St(i,"scenario")} \xD7 ${St(l.length,"model")}`},de=c.slice(0,pD),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:_l(11,Oi)},"\u2014"),c.length===0&&l.map(oe=>Mt.default.createElement(pJ,{key:oe,short:bn(oe).short,label:oe})),de.map(oe=>oe.passed==null||oe.total==null?Mt.default.createElement(pJ,{key:oe.label||"all",short:oe.short,label:oe.label}):Mt.default.createElement(Mu,{key:oe.label||"all",label:oe.short,labelWidth:110,passed:oe.passed,total:oe.total,height:4,valueWidth:48}))),ee=c.length>pD?Mt.default.createElement("span",{style:_l(10,Oi)},`+${c.length-pD} more`):void 0,L=b||dJ,te=T?{value:"\u2014",valueColor:Oi,sub:"\u2014"}:g?{value:"\u2026",valueColor:Oi,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:Oi,sub:"scoring\u2026"}:L.items>0?{value:L.items,valueColor:bo.error.text,sub:Mt.default.createElement("span",{style:{color:"var(--color-info)"}},`${St(L.faults,"fault")} across ${St(L.scenarios,"scenario")} ${Rx.link}`)}:{value:"0",valueColor:Oi,sub:"nothing to fix"},F=()=>E?.(),Y=T?{}:{role:"button",tabIndex:0,onClick:F,onKeyDown:oe=>{(oe.key==="Enter"||oe.key===" ")&&(oe.preventDefault(),F())},style:{cursor:"pointer"}},B=`The faults this run found, grouped into fixes${T?"":" \u2014 opens What to fix"}`;return Mt.default.createElement(ze,{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:_l(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Mt.default.createElement("span",{style:_l(11,Oi,{whiteSpace:"nowrap"})},O),n&&Mt.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Mt.default.createElement(C2,{run:e}),Mt.default.createElement("span",{style:_l(11,Oi,{minWidth:0,textWrap:"pretty"})},j),k&&Mt.default.createElement(Ce,{tone:"muted",size:10,style:{padding:"1px 6px"},testId:"suite-run-selection"},k),!n&&Mt.default.createElement(Gr,{onClick:()=>A?.(),title:"Show the suite's latest run",testId:"suite-latest-run"},`latest${r!=null?` #${r}`:""}`),o&&Mt.default.createElement(Gr,{onClick:()=>C?.(),title:"A newer run is going; show it as it replays",testId:"suite-watch-latest"},`#${o.number??r??"?"} is running \xB7 watch`),D&&!g&&M.length>0&&Mt.default.createElement(Gr,{onClick:()=>I?.(),title:z,testId:"suite-rerun-failed"},`re-run failed (${G})`),T&&Mt.default.createElement(Gr,{onClick:()=>J?.(),title:"Replay what this run was asked to, under the models in the picker",testId:"suite-run-again"},"run again"),w&&Mt.default.createElement(Gr,{href:$0(w),onClick:()=>lt(w),title:"The run rendered as a report page",testId:"suite-run-report"},"run report"),N&&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:W,fontSize:11,color:Oi}},"download"),Mt.default.createElement(Gr,{href:$0(N.html),title:"The report as one self-contained HTML page",testId:"suite-run-download-html"},"html"),Mt.default.createElement(Gr,{href:$0(N.json),title:"The run as the evaluation report envelope another install imports",testId:"suite-run-download-json"},"json"),Mt.default.createElement(Gr,{href:$0(N.md),title:"The report as GitHub-flavored Markdown",testId:"suite-run-download-md"},"markdown"),Mt.default.createElement(kl,{url:$0(N.markdown),label:"copy markdown",testId:"suite-run-copy-markdown",title:"Copy the whole report as GitHub-flavored Markdown",style:{padding:"0 4px",fontFamily:W,fontSize:11}})),Mt.default.createElement("span",{style:{marginLeft:"auto"}},Mt.default.createElement(od,{darkMode:$,cells:K}))),Mt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Mt.default.createElement(cf,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...ge}),Mt.default.createElement(cf,{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:ee}),Mt.default.createElement(oD,{spend:v,pending:h,failed:T}),Mt.default.createElement(aD,{spend:v,judgedBy:u,pending:h,failed:T}),Mt.default.createElement(cf,{label:"To fix",title:B,testId:"suite-to-fix",...Y,...te})),h&&x>0&&Mt.default.createElement(VC,{parts:[{value:m-y,tone:"success"},{value:y,tone:"error"}],total:x,height:4,radius:0,role:"progressbar","aria-label":"Results in","aria-valuemin":0,"aria-valuemax":x,"aria-valuenow":m,"aria-valuetext":`${m} of ${x} results in${y?`, ${y} failed`:""}`,testId:"suite-run-progress-bar"}),T&&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 Oo=Z(Q());function mf({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=>k0(e,m)),c={fontFamily:W,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:W,fontSize:11,color:"var(--color-text-cell)"},p=(m,y,x)=>Oo.default.createElement("span",{"data-testid":y,title:x,style:{...c,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},m),f=oJ(n,{total:o});return Oo.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},Oo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},Oo.default.createElement("span",{style:c},"judge"),Oo.default.createElement("span",{style:{...d,fontWeight:600}},vh(e,t)),Oo.default.createElement("span",{style:{...c,marginLeft:8}},"criteria"),u.length===0&&Oo.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,y)=>Oo.default.createElement(Oo.default.Fragment,{key:m.key||y},y>0&&Oo.default.createElement("span",{style:c},"\xB7"),Oo.default.createElement("span",{style:d,title:yh(m)||void 0},m2(m)),Sl(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),Sl(m)==="judge"&&p("judge",void 0,"Scored by the judge model; needs provider credentials"))),Oo.default.createElement("span",{style:{...c,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},Z1(.7))),Oo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},Oo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&Oo.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&&Oo.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},al),a&&Oo.default.createElement(Gr,{href:Re(a),onClick:()=>lt(a),title:"The run rendered as a report page"},"run report"),i&&Oo.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:W,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var Tke=["tools","contains","not_contains"];function Oke(e){let t=e.expectations||{},r=[];return Tke.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 fJ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(Oke(n))}),t.join(` +`)}var ue=Z(Q());var jr=Z(Q());var Pke=e=>e>=.85?"success":e>=.7?"warning":"error";function _h({label:e,children:t,title:r,nowrap:n=!0}){return jr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function L0({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:y=!1,judgeCost:x=null,judgeCalls:h=0,judgeEstimated:g=!1,unit:v="interaction",badges:b=[],note:k,testId:S="model-scorecard"}){let w=o!=null&&a>0,_=w?o/a:null,A=w?Pu(_):i!=null?Pke(i):"muted",C=bo[A].strong,E=x!=null||h>0;return jr.default.createElement(ze,{padding:"14px 16px",testId:S,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},jr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},jr.default.createElement("span",{style:{fontFamily:W,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&jr.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},r),n&&jr.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),jr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},jr.default.createElement("span",{style:{fontFamily:W,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},w?Kn(o,a):i!=null?aa(i):"\u2014"),jr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},w?`${v==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),jr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},jr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:C,width:`${Math.round((_??i??0)*100)}%`}})),jr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:W,fontSize:11,color:"var(--color-text-secondary)"}},jr.default.createElement(_h,{label:"score"},aa(i)),s&&jr.default.createElement(_h,{label:"criteria"},Kn(s.cleared,s.scored)),l!=null&&jr.default.createElement(_h,{label:"latency"},zn(l)),u!=null&&jr.default.createElement(_h,{label:"p50 / p95"},`${zn(u)} / ${zn(c)}`),(d!=null||p!=null)&&jr.default.createElement("span",{style:{whiteSpace:"nowrap"}},jr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},h0(d))," \xB7 ",jr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",jr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},h0(p))),f!=null&&jr.default.createElement(_h,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${$u(m,y)} per ${v}`:""}${y?` \xB7 ${Cm()}`:""}`},Pr(f,{estimated:y}),m!=null&&jr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${$u(m,y)} / ${v}`)),E&&jr.default.createElement(_h,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Pr(x,{estimated:g}),jr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${St(h,"call")}`))),(b.length>0||k)&&jr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},b.map(I=>jr.default.createElement(Ce,{key:I.text,tone:I.tone,testId:I.testId},I.text)),k&&jr.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:k.color||"var(--color-text-muted)"}},k.text)))}var vr=Z(Q());var mD={fontFamily:W,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},gD={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},gf={...gD,fontFamily:W,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},hf={...mD,textAlign:"right"},z0=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function B0({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(p=>p.cost!=null),s=e.some(p=>p.judgeCost!=null||p.judgeCalls>0),l=e.some(p=>p.avgTokens!=null),u=e.some(p=>p.avgDurationMs!=null),c=e.some(p=>p.p50DurationMs!=null),d=e.some(p=>p.cost!=null&&p.estimated||p.judgeCost!=null&&n);return vr.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:a},vr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},vr.default.createElement(We,null,o),vr.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),d&&vr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},al)),vr.default.createElement("div",{style:{overflowX:"auto"}},vr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},vr.default.createElement("thead",null,vr.default.createElement("tr",{style:{background:"var(--color-muted)"}},vr.default.createElement("th",{style:mD},"Model"),vr.default.createElement("th",{style:hf},"Passed"),vr.default.createElement("th",{style:hf},"Mean score"),u&&vr.default.createElement("th",{style:hf},"Avg latency"),c&&vr.default.createElement("th",{style:hf,title:"Median and 95th percentile latency, nearest rank"},"P50 / P95"),l&&vr.default.createElement("th",{style:hf,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&vr.default.createElement("th",{style:hf,title:`Cohort spend, and per ${t}`},"Cost"),s&&vr.default.createElement("th",{style:hf,title:"What the judge spent scoring this model's answers"},"Judge"),vr.default.createElement("th",{style:{...mD,width:"34%"}},"Typical fault"))),vr.default.createElement("tbody",null,e.map(p=>{let{short:f,provider:m}=bn(p.label,p.provider||"");return vr.default.createElement("tr",{key:p.label,"data-testid":"model-comparison-row","data-model":p.label},vr.default.createElement("td",{style:{...gD,whiteSpace:"nowrap"}},vr.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:p.label},f),p.winner&&vr.default.createElement("span",{style:{marginLeft:6,fontFamily:W,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),m&&vr.default.createElement("span",{style:{display:"block",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},m)),vr.default.createElement("td",{style:{...gf,color:z0(p.passRate),fontWeight:600}},Kn(p.passed,p.total)),vr.default.createElement("td",{style:gf},aa(p.avgScore)),u&&vr.default.createElement("td",{style:gf},p.avgDurationMs==null?"\u2014":zn(p.avgDurationMs)),c&&vr.default.createElement("td",{style:gf,"data-testid":"model-comparison-percentiles"},p.p50DurationMs==null?"\u2014":`${zn(p.p50DurationMs)} / ${zn(p.p95DurationMs)}`),l&&vr.default.createElement("td",{style:gf,title:p.avgInputTokens==null?void 0:`${Math.round(p.avgInputTokens)} in \xB7 ${Math.round(p.avgOutputTokens||0)} out per ${t}`},p.avgTokens==null?"\u2014":On(Math.round(p.avgTokens))),i&&vr.default.createElement("td",{style:gf,title:p.cost!=null&&p.estimated?Cm():void 0,"data-testid":"model-comparison-cost"},Pr(p.cost,{estimated:p.estimated}),p.costPerInteraction!=null&&vr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Pr(p.costPerInteraction,{estimated:p.estimated})}/${t}`)),s&&vr.default.createElement("td",{style:gf,"data-testid":"model-comparison-judge"},p.judgeCost==null&&!p.judgeCalls?"\u2014":Pr(p.judgeCost,{estimated:n}),p.judgeCalls>0&&vr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},St(p.judgeCalls,"call"))),vr.default.createElement("td",{style:{...gD,color:p.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},vZ(p)))})))))}var Po=Z(Q());var Mke=[0,25,50,75,100],Ike={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},mJ={display:"contents"},hD={gridColumn:"1 / -1"},Dke={fontFamily:W,fontSize:11,color:"var(--color-text-secondary)"};function jke({passRate:e,interval:t}){return Po.default.createElement("span",{"aria-hidden":"true",style:{position:"relative",display:"block",height:14}},Po.default.createElement("span",{style:{position:"absolute",left:0,right:0,top:6,height:2,background:"var(--color-muted)"}}),t&&Po.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&&Po.default.createElement("span",{style:{position:"absolute",top:2,left:`${e}%`,width:10,height:10,marginLeft:-5,borderRadius:"50%",background:"var(--color-info)"}}))}function yD({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return Po.default.createElement("div",{style:Ike,"data-testid":t},Po.default.createElement(We,{size:10,color:"var(--color-text-muted)",style:hD},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=bn(n.label,"");return Po.default.createElement("div",{key:n.label,style:mJ,"data-testid":"comparison-interval-row","data-model":n.label},Po.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),Po.default.createElement(jke,{passRate:n.passRate,interval:n.interval}),Po.default.createElement("span",{style:Dke},Po.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")}`))}),Po.default.createElement("div",{style:mJ,"aria-hidden":"true"},Po.default.createElement("span",null),Po.default.createElement("span",{style:{position:"relative",display:"block",height:14}},Mke.map(n=>Po.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:W,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),Po.default.createElement("span",null)),e.conclusion&&Po.default.createElement("div",{style:{...hD,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",textWrap:"pretty"},"data-testid":"comparison-conclusion"},e.conclusion),e.resamples!=null&&Po.default.createElement("span",{style:{...hD,fontFamily:W,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var $r=Z(Q());var gJ={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"},$ke={openrouter:"openrouter/auto"},hJ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=gJ[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:gJ[n],providerDefault:$ke[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},yJ=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 vJ="/settings?tab=api-keys",E2=(e=11)=>({fontFamily:W,fontSize:e,color:"var(--color-text-secondary)"});function vD({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=hJ(e,t),[i,s]=(0,$r.useState)(!1),[l,u]=(0,$r.useState)(a?.suggestion||""),[c,d]=(0,$r.useState)(!1),[p,f]=(0,$r.useState)(null);if((0,$r.useEffect)(()=>{u(a?.suggestion||"")},[a?.suggestion]),!r)return null;if(!a)return $r.default.createElement("span",{style:E2()},`judged by ${r}`);let m=async x=>{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:x}})}),g=await h.json().catch(()=>({}));if(!h.ok){f((g.errors||[g.error]).filter(Boolean).join(", ")||`Saving the judge failed (HTTP ${h.status})`);return}await n?.()}finally{d(!1)}},y=(x,h)=>$r.default.createElement($r.default.Fragment,null,$r.default.createElement(We,{size:10},x),$r.default.createElement("span",{style:{...E2(12),color:"var(--color-text-cell)",overflowWrap:"anywhere"}},h));return $r.default.createElement("span",{style:{display:"inline-flex",flexDirection:"column",gap:8,minWidth:0},"data-testid":o},$r.default.createElement("button",{type:"button",onClick:()=>s(!i),title:yJ(a),"aria-expanded":i,style:{...E2(),display:"inline-flex",alignItems:"center",gap:6,background:"none",border:"none",padding:0,cursor:"pointer"}},$r.default.createElement("span",null,"judged by ",$r.default.createElement("span",{style:{color:"var(--color-info)"}},r)),a.auto&&$r.default.createElement(Ce,{tone:"warning",size:10,title:"No judge model is pinned: the provider chose"},"auto"),a.answered.length>1&&$r.default.createElement(Ce,{tone:"error",size:10,title:"More than one model judged this run"},`${a.answered.length} models`)),i&&$r.default.createElement(ze,{padding:"12px 14px",testId:`${o}-panel`,style:{display:"flex",flexDirection:"column",gap:10,maxWidth:560}},$r.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"max-content 1fr",columnGap:14,rowGap:6,alignItems:"baseline"}},y("Judge agent",a.agent),y("Provider",a.provider||"\u2014"),y("Asked for",a.requested?`${a.requested} \xB7 ${a.sourceText}`:`${a.providerDefault||"no model"} \xB7 ${a.sourceText}`),y("Answered by",a.answered.length?a.answered.map(([x,h])=>`${x} \xD7${h}`).join(", "):"no calls recorded")),a.auto&&$r.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&&$r.default.createElement("form",{onSubmit:x=>{x.preventDefault(),l.trim()&&m(l.trim())},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},$r.default.createElement("input",{value:l,onChange:x=>u(x.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:W,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),$r.default.createElement(pe,{size:"sm",variant:"primary",type:"submit",disabled:c||!l.trim()||l.trim()===a.pinned,testId:`${o}-pin`},"Pin judge model"),a.pinned&&$r.default.createElement(pe,{size:"sm",onClick:()=>m(""),disabled:c,testId:`${o}-unpin`},"Unpin")),$r.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"baseline"}},$r.default.createElement("span",{style:E2()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),$r.default.createElement(Gr,{href:Re(vJ),onClick:()=>lt(vJ)},`${a.provider||"provider"} key in Settings`)),p&&$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var dd=Z(Q());function F0({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,dd.useState)("idle"),a=(0,dd.useRef)(null);(0,dd.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await ld(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 dd.default.createElement(pe,{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 N2=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var At=Z(Q());var Me=Z(Q());var T2="Update from the sandbox",Lke=new Set(["queued","publishing"]);function U0(e){return!!(e&&Lke.has(e.status))}function bJ(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:`${xJ(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:xJ(e),tone:zke(e)}}}function xJ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function zke(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function wJ(e){return!e?.head_commit||!e.number||U0(e)?!1:!["closed","merged"].includes(e.state)}function SJ(e){return!!(e?.head_commit&&!e.number&&!U0(e))}function kJ(e,t,r){let n=new Set(Ch(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function _J(e){return(e||[]).some(t=>t.refusal==="not_read")}function CJ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function O2(e){return e==="changed_since_preview"}function P2(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function M2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function Ch(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function AJ(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=Ch(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 EJ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var Bke=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function Fke(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||Bke.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function NJ({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return Ch(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?Fke(n):"Add a title."}function I2({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=Ch(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 TJ(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 xD(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 OJ(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var PJ={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 MJ(e){return/[.!?]$/.test(e)?e:`${e}.`}function IJ(){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 W0({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Me.useState)(null),[a,i]=(0,Me.useState)(null),[s,l]=(0,Me.useState)(null),[u,c]=(0,Me.useState)(0),[d,p]=(0,Me.useState)(!1),f=(0,Me.useCallback)(async()=>{let h=await fetch(r),g=await h.json().catch(()=>({}));if(!h.ok)throw new Error(ot(g,`Could not load the pull request (HTTP ${h.status}).`));return g},[r]);(0,Me.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await f();if(h)return;o(b),i(null),U0(b.pull_request)&&(g=setTimeout(v,2e3))}catch(b){h||i(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[f,u]);let m=async h=>{p(!0),i(null);try{let g=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));c(b=>b+1)}catch(g){i(g.message)}finally{p(!1)}},y=n?.pull_request||null,x=n?.publishing||null;return x&&!x.supported?null:Me.default.createElement(Me.default.Fragment,null,Me.default.createElement(Wke,{pullRequest:y,publishing:x,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Me.default.createElement(Hke,{codeSession:t,sandbox:e,pullRequest:y,publishing:x,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function Wke({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=IJ(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:y}=bJ(e),x=U0(e),h=!!t?.available,g=wJ(e),v=SJ(e);return Me.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Me.default.createElement("div",{className:"flex items-center justify-between gap-3"},Me.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Me.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Me.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Me.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:x,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Me.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:x,className:p},"Open draft PR"))),t&&!h&&Me.default.createElement("p",{className:`text-xs ${s}`},MJ(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Me.default.createElement("div",{className:"space-y-1"},Me.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Me.default.createElement(Ks,{tone:y},m),e.url?Me.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Me.default.createElement("span",{className:`truncate ${l}`},e.title)),Me.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"&&Me.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Me.default.createElement("p",{className:f},e.error_message),v&&Me.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Me.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Me.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&&Me.default.createElement("div",{className:f},r))}function Hke({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,Me.useState)(null),[d,p]=(0,Me.useState)(!0),[f,m]=(0,Me.useState)(null),[y,x]=(0,Me.useState)(new Set),[h,g]=(0,Me.useState)(l?t?.title||"":OJ(e)),[v,b]=(0,Me.useState)(""),[k,S]=(0,Me.useState)(l&&t?.branch||""),[w,_]=(0,Me.useState)(T2),[A,C]=(0,Me.useState)(""),[E,I]=(0,Me.useState)(null),[J,$]=(0,Me.useState)(!1),[U,N]=(0,Me.useState)(0);return(0,Me.useEffect)(()=>{let D=!1;return p(!0),(async()=>{try{let O=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(E?{allowlist:E}:{})}),j=await O.json().catch(()=>({}));if(D)return;if(!O.ok)throw new Error(ot(j,`Could not read the sandbox's changes (HTTP ${O.status}).`));c(j.preview),x(P2(j.preview.files)),S(M=>M||j.preview.suggested_branch||"")}catch(O){D||m(O.message)}finally{D||p(!1)}})(),()=>{D=!0}},[s,U,E]),Me.default.createElement(bD,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:y,onToggle:D=>x(O=>M2(O,D)),fields:{title:h,body:v,branch:k,message:w,allowlist:A},onField:(D,O)=>({title:g,body:b,branch:S,message:_,allowlist:C})[D](O),allowlistApplied:!!E,onApplyAllowlist:()=>{m(null),I(CJ(A))},mode:n,submitting:J,onSubmit:async()=>{$(!0),m(null);try{let D=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...I2({files:u?.files,selection:y,title:h,body:v,branch:k,message:w,allowlist:E,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),O=await D.json().catch(()=>({}));if(!D.ok)throw O2(O.code)&&N(j=>j+1),new Error(ot(O,`Could not publish (HTTP ${D.status}).`));a(O.pull_request)}catch(D){m(D.message)}finally{$(!1)}},onCancel:o})}function bD({sandbox:e,preview:t,loading:r,error:n,publishing:o,pullRequest:a,selection:i,onToggle:s,fields:l,onField:u,allowlistApplied:c,onApplyAllowlist:d,mode:p,submitting:f,onSubmit:m,onCancel:y,patchHref:x}){let h=IJ(),{muted:g,strong:v,border:b,link:k,secondaryButton:S,primaryButton:w,input:_,errorBox:A,darkMode:C}=h,E=t?.files||[],I=(0,Me.useMemo)(()=>Ch(E,i),[E,i]),J=!!o?.available,$=p==="patch"||!J,U=p==="update"&&!$,N=t&&!$?NJ({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:U}):null,T=U?kJ(a,E,i):[],D="Open draft PR";$?D="Download patch":U&&(D="Update draft PR");let O=`Publishes the files you tick from ${e.repository}@${e.repository_ref} through the GitHub API, as one commit on a new branch.`;return $?O=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:U&&(O="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."),Me.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":D},Me.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${b} ${C?"bg-gray-900":"bg-white"}`},Me.default.createElement("div",{className:"flex items-start justify-between gap-3"},Me.default.createElement("div",null,Me.default.createElement("p",{className:`text-lg font-medium ${v}`},D),Me.default.createElement("p",{className:`text-xs ${g}`},O," Nothing under .github/ is ever published.")),Me.default.createElement("button",{type:"button",onClick:y,className:S},"Close")),r&&Me.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Me.default.createElement("div",{className:A},n),t&&Me.default.createElement(Me.default.Fragment,null,d&&(_J(E)||c)&&Me.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Me.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Only read paths matching"),Me.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`})),Me.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${S} disabled:opacity-50`},"Read again")),Me.default.createElement("div",{className:"space-y-1"},Me.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",AJ(E,i)),E.length===0&&Me.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Me.default.createElement("ul",{className:"space-y-1"},E.map(j=>Me.default.createElement("li",{key:j.path,className:"flex items-center gap-2 text-sm"},Me.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)}),Me.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},EJ(j)),Me.default.createElement("span",{className:`font-mono truncate ${j.refusal?g:v}`},j.path),j.size!=null&&j.status!=="deleted"&&Me.default.createElement("span",{className:`shrink-0 text-xs ${g}`},xD(j.size)),j.refusal&&Me.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},j.refusal_message))))),T.length>0&&Me.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: ",Me.default.createElement("span",{className:"font-mono"},T.join(", "))),I.length>0&&Me.default.createElement("div",{className:"space-y-2"},Me.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),I.map(j=>Me.default.createElement(qke,{key:j.path,file:j,classes:h}))),!$&&Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Branch"),Me.default.createElement("input",{type:"text",value:l.branch,onChange:j=>u("branch",j.target.value),disabled:U||f,maxLength:200,className:`${_} font-mono`})),U?Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Commit message"),Me.default.createElement("input",{type:"text",value:l.message,onChange:j=>u("message",j.target.value),disabled:f,className:_})):Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Title"),Me.default.createElement("input",{type:"text",value:l.title,onChange:j=>u("title",j.target.value),disabled:f,maxLength:256,className:_})),!$&&!U&&Me.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Me.default.createElement("span",null,"Description"),Me.default.createElement("textarea",{value:l.body,onChange:j=>u("body",j.target.value),disabled:f,rows:4,className:_})),Me.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Me.default.createElement("p",{className:`text-xs ${g}`},!J&&MJ(o?.refusal||"Publishing is not available for this sandbox"),J&&N),Me.default.createElement("div",{className:"flex items-center gap-3"},I.length>0&&Me.default.createElement("a",{href:Re((x||((j,M)=>TJ(e.session_id,j,M)))(I.map(j=>j.path),U?l.message:l.title)),className:`text-sm ${k}`},"Download patch"),Me.default.createElement("button",{type:"button",onClick:y,className:S},"Cancel"),!$&&Me.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:w},f?"Publishing\u2026":D))))))}function qke({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Me.useMemo)(()=>l0(e.diff),[e.diff]);return Me.default.createElement("div",{className:`rounded border ${n}`},Me.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Me.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",xD(e.size),": published as it is in the sandbox."):Me.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=PJ[s.kind]||PJ.context;return Me.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var Kke=(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")),D2=new Map,Vke=e=>(D2.has(e)||D2.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(()=>D2.delete(e))),D2.get(e));function wD({item:e,evaluation:t,run:r}){let[n,o]=(0,At.useState)(!1),[a,i]=(0,At.useState)(null),[s,l]=(0,At.useState)(""),[u,c]=(0,At.useState)(null),[d,p]=(0,At.useState)(!1),[f,m]=(0,At.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,x=(0,At.useCallback)(async()=>{let _=await Vke(y);return i(_),l(A=>A||_.sandboxes?.find(C=>C.status==="ready")?.session_id||""),_},[y]);if((0,At.useEffect)(()=>{if(!t?.id||!r?.id)return;let _=!1,A,C=async()=>{try{await x()}catch(E){_||c(E.message)}!_&&n&&(A=setTimeout(C,2500))};return C(),()=>{_=!0,clearTimeout(A)}},[x,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(_=>Kke(_.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(_=>_.id===f)||h[0],v=a?.sandboxes?.find(_=>_.session_id===(g?.sandbox_session_id||s)),b=g&&(["queued","running"].includes(g.status)||g.status==="succeeded"&&g.diff&&!g.verification?.error&&!["complete","failed"].includes(g.verification?.status)),k=a?.auth_mode!=="sandbox_login"||v?.claude_login?.credential_mode,S=async(_=null)=>{if(!(!v||d||b)){p(!0),c(null);try{let A=await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation_run_id:r.id,fix_item:{kind:e.kind,fault:e.fault,quote:e.quote,scenario_keys:e.scenario_keys,models:e.models},previous_code_session_id:_?.id})}),C=await A.json();if(!A.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await x()}catch(A){c(A.message)}finally{p(!1)}}},w=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return At.default.createElement(At.default.Fragment,null,At.default.createElement(pe,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&At.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},g.verification.counts.fixed||0," fixed \xB7 ",g.verification.counts.regressed||0," regressed"),n&&At.default.createElement(PI,{title:"Implement evaluation fix",onClose:()=>o(!1)},At.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((_,A)=>At.default.createElement(Ce,{key:_,tone:A===w?"accent":A_.status==="ready")&&At.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",At.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...OI,marginTop:8},value:s,onChange:_=>l(_.target.value)},At.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(_=>_.status==="ready").map(_=>At.default.createElement("option",{key:_.session_id,value:_.session_id},_.repository," \xB7 ",_.repository_ref," \xB7 ",_.session_id.slice(0,8))))),a&&!v&&At.default.createElement("div",{style:m0},At.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),At.default.createElement("a",{href:Re(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),At.default.createElement(pe,{size:"sm",onClick:()=>x().catch(_=>c(_.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!b&&At.default.createElement(tf,{sandbox:v,onConnected:x,onChange:x}),v&&At.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",At.default.createElement("strong",null,v.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."),!g&&At.default.createElement(pe,{variant:"primary",disabled:!v||!k||d||!!a?.refusal||!a?.supported,onClick:()=>S()},d?"Starting\u2026":"Implement this fix"),g&&At.default.createElement(At.default.Fragment,null,At.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},At.default.createElement(Ce,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),At.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&At.default.createElement(pe,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions/${g.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await x()}catch(_){c(_.message)}}},"Cancel session"),g.result&&At.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&At.default.createElement("details",null,At.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),At.default.createElement("pre",{style:{...m0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),At.default.createElement(g0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>S(g)}),g.verification?.status==="complete"&&v&&At.default.createElement(W0,{sandbox:v,codeSession:g})),u&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var SD=6,Gke=600,Ah=12,Eh=e=>String(e||"").replace(/_/g," "),gs=e=>String(e??"").trim(),H0=e=>[...new Set(e.filter(Boolean))],kD=e=>gs(e).split(` `).map(t=>`> ${t}`).join(` -`),yD=(e,t=Uke)=>{let r=gs(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Gs=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,T2=e=>String(e||"").replace(/\/+$/,""),EJ=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${kh(e.fault)}`:`Fix: ${kh(e.label||e.kind)}`:"Fix",NJ=(e,t)=>{let r=z0(e?.models||[]);return r.length?r:z0(b0(t).map(n=>typeof n=="string"?n:n?.label))},Wke=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${kh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),Hke=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: ${yD(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),qke=(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"?gs(l.diagnosis?.judge?.instruction_change)===gs(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},Kke=(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},Vke=(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=[`### ${Gs(e)}`];o&&s.push("","Prompt:",hD(o));let l=Wke(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${gs(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 ${kh(p)}`:""}`),s.push(`- Tools called: ${Hke(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(gs).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let y=f.judge.suggested_tool;s.push(`- Suggested tool: ${Gs(y.name)}${y.description?` (${gs(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${yD(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:",hD(yD(u.output))):s.push("- Answer: not retained for this run")}),s},TJ=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=T2(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 ${Gs(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},OJ=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=T2(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 ${Gs("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 ${Gs("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. ${Gs("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},PJ=({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=T2(s),d=z0(e.scenario_keys||[]),p=NJ(e,r),f=qke(e,o,{labelFor:l}),m=new Map;f.forEach(b=>m.set(b.scenario_key,[...m.get(b.scenario_key)||[],b]));let y=[`# ${EJ(e)}`,"",...TJ({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let x=e.count||d.length,h=`${kh(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(y.push(`${x>1?`${x} results: `:""}${h}.`),e.recommendation&&y.push("",gs(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",hD(e.quote)),e.note&&y.push("",gs(e.note)),z0((e.tools||[]).map(b=>typeof b=="string"?b:b?.name)).length&&(y.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(b=>{let S=typeof b=="string"?b:b?.name;if(!S)return;let w=typeof b=="object"?b.note:null,_=typeof b=="object"?b.server:null,k=_?` \xB7 served by ${_.name||_.key}${_.status?` (${_.status})`:""}`:"";y.push(`- ${Gs(S)}${w&&w!==_?.name?` \u2014 ${gs(w)}`:""}${k}`)}),e.server)){let b=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${Gs(e.server.key)}) is ${b?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}y.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,gD).forEach(b=>{y.push("",...Vke(b,m.get(b)||[],Kke(b,a,o)))}),d.length>gD&&y.push("",`Also failing: ${d.slice(gD).map(Gs).join(", ")}.`),y.push("","## Where to look","");let v=t?.agent?.id;return y.push(`- The agent's instructions and action prompts${c&&v!=null?`: ${c}/agents/${v}/edit`:""}.`),y.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&y.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${c&&e.action.path?` ${c}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`),u==="sandbox"?y.push("","- Find the agent in app/agents/ and its prompt views in app/views/agents/.","","## Verify","","1. Change the agent, not the scenarios or their expectations.","2. Run the relevant tests in this checkout. Do not commit or push.",`3. The dashboard will re-run these scenarios when you finish: ${d.join(", ")}; models: ${p.join(", ")}.`,"","Summarize your changes. Do not read or copy the sandbox\u2019s Claude credentials."):y.push("",...OJ({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${y.join(` +`),_D=(e,t=Gke)=>{let r=gs(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Gs=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,j2=e=>String(e||"").replace(/\/+$/,""),DJ=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${Eh(e.fault)}`:`Fix: ${Eh(e.label||e.kind)}`:"Fix",jJ=(e,t)=>{let r=H0(e?.models||[]);return r.length?r:H0(_0(t).map(n=>typeof n=="string"?n:n?.label))},Yke=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${Eh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),Xke=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: ${_D(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),Zke=(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"?gs(l.diagnosis?.judge?.instruction_change)===gs(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},Jke=(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},Qke=(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=[`### ${Gs(e)}`];o&&s.push("","Prompt:",kD(o));let l=Yke(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${gs(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 ${Eh(p)}`:""}`),s.push(`- Tools called: ${Xke(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(gs).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let y=f.judge.suggested_tool;s.push(`- Suggested tool: ${Gs(y.name)}${y.description?` (${gs(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${_D(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:",kD(_D(u.output))):s.push("- Answer: not retained for this run")}),s},$J=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=j2(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 ${Gs(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},LJ=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=j2(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 ${Gs("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 ${Gs("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. ${Gs("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},zJ=({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=j2(s),d=H0(e.scenario_keys||[]),p=jJ(e,r),f=Zke(e,o,{labelFor:l}),m=new Map;f.forEach(b=>m.set(b.scenario_key,[...m.get(b.scenario_key)||[],b]));let y=[`# ${DJ(e)}`,"",...$J({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let x=e.count||d.length,h=`${Eh(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(y.push(`${x>1?`${x} results: `:""}${h}.`),e.recommendation&&y.push("",gs(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",kD(e.quote)),e.note&&y.push("",gs(e.note)),H0((e.tools||[]).map(b=>typeof b=="string"?b:b?.name)).length&&(y.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(b=>{let k=typeof b=="string"?b:b?.name;if(!k)return;let S=typeof b=="object"?b.note:null,w=typeof b=="object"?b.server:null,_=w?` \xB7 served by ${w.name||w.key}${w.status?` (${w.status})`:""}`:"";y.push(`- ${Gs(k)}${S&&S!==w?.name?` \u2014 ${gs(S)}`:""}${_}`)}),e.server)){let b=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${Gs(e.server.key)}) is ${b?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}y.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,SD).forEach(b=>{y.push("",...Qke(b,m.get(b)||[],Jke(b,a,o)))}),d.length>SD&&y.push("",`Also failing: ${d.slice(SD).map(Gs).join(", ")}.`),y.push("","## Where to look","");let v=t?.agent?.id;return y.push(`- The agent's instructions and action prompts${c&&v!=null?`: ${c}/agents/${v}/edit`:""}.`),y.push(`- Its tools and MCP servers${c?`: ${c}/tools`:""}.`),e.action?.label&&y.push(`- On the dashboard: **${e.action.label}**${e.action.hint?` (${e.action.hint})`:""}${c&&e.action.path?` ${c}${e.action.path.startsWith("/")?"":"/"}${e.action.path}`:""}.`),u==="sandbox"?y.push("","- Find the agent in app/agents/ and its prompt views in app/views/agents/.","","## Verify","","1. Change the agent, not the scenarios or their expectations.","2. Run the relevant tests in this checkout. Do not commit or push.",`3. The dashboard will re-run these scenarios when you finish: ${d.join(", ")}; models: ${p.join(", ")}.`,"","Summarize your changes. Do not read or copy the sandbox\u2019s Claude credentials."):y.push("",...LJ({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${y.join(` `)} -`},MJ=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${EJ(e)}`,"",...TJ({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||kh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",gs(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,Sh).map(Gs).join(", ")}${e.chips.length>Sh?` and ${e.chips.length-Sh} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,Sh).forEach(d=>i.push(`- ${gs(d)}`)),e.details.length>Sh&&i.push(`- and ${e.details.length-Sh} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${Gs(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=T2(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=z0(e.kind==="missing"?e.chips||[]:NJ({},r));return i.push("",...OJ({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` +`},BJ=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${DJ(e)}`,"",...$J({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||Eh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",gs(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,Ah).map(Gs).join(", ")}${e.chips.length>Ah?` and ${e.chips.length-Ah} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,Ah).forEach(d=>i.push(`- ${gs(d)}`)),e.details.length>Ah&&i.push(`- and ${e.details.length-Ah} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${Gs(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=j2(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=H0(e.kind==="missing"?e.chips||[]:jJ({},r));return i.push("",...LJ({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` `)} -`};var ud=e=>[...new Set(e)],bD=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},_h=e=>String(e||"").replace(/_/g," "),_l=e=>e?.status==="passed",Cl=e=>!!e&&e.status!=="pending",cd=e=>!!e&&["pending","running"].includes(e.status);function B0(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=hZ(e);if(o.length)return o;let a=ud(t.map(s=>$u(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function $u(e,t){let n=(nf(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 SD(e,t){let r=e?.scores?._models?.[t],n=(nf(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return On(t,r?.provider||n?.provider||"")}function Ch(e,t=[],r=[]){let n=A0(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 jJ(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=>$u(e,i)===t);return{passed:a.filter(_l).length,failed:a.filter(i=>Cl(i)&&!_l(i)).length,total:n||a.length}}function $J(e,t=[],r=null,n=[]){let o=B0(e,t,r),a=Ch(e,o,n);return o.map(i=>{let s={label:i,short:On(i).short};return e?.scores?._models?.[i]?.scenarios!=null||cd(e)||t.some(u=>$u(e,u)===i)?{...s,...jJ(e,i,t,a)}:{...s,passed:null,failed:null,total:null}})}function LJ(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=Ch(e,r,n)*Math.max(r.length,1);return{passed:t.filter(_l).length,total:o}}function zJ(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 Gke=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},vD=e=>e?.diagnosis?.judge?.instruction_change;function BJ(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(vD);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>Yke(a,t)),o=new Set;return t.forEach(a=>{let i=vD(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>vD(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:ud(s.map(l=>l.scenario_key)),models:ud(s.map(l=>$u(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 Yke(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=ud(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=ud(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:Gke(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=ud(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||ud(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 kD=e=>e?.cost_source==="estimated",FJ=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},O2=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Pr(e.cost,{estimated:kD(e)})];return t!=null&&r.push(`judge ${Pr(t,{estimated:FJ(e)})}`),r.join(" \xB7 ")},UJ=e=>{if(!kD(e))return;let t=e.cost_rate||null;return Sm({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},Xke=(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(Cl),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=>kD(u)||FJ(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 WJ({entry:e,compact:t=!1,testId:r,tokens:n=null}){let o={display:"flex",flexDirection:"column",gap:1,minWidth:0,textAlign:"right"},a=n&&(n.input!=null||n.output!=null)?de.default.createElement("span",{"data-testid":r?`${r}-tokens`:void 0,title:"input\u2192output tokens across the models",style:{...Ur(10.5),whiteSpace:"nowrap"}},CI(n.input,n.output)):null;if(!e)return de.default.createElement("span",{style:o,"data-testid":r},de.default.createElement("span",{style:Ur(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 ${Pr(e.cost,{estimated:e.estimated})}`),e.judgeCost!=null&&s.push(`judge ${Pr(e.judgeCost,{estimated:e.estimated})}`),de.default.createElement("span",{style:o,"data-testid":r},de.default.createElement("span",{title:s.join(" \xB7 ")||void 0,style:{fontFamily:H,fontSize:11,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap"}},Pr(i,{estimated:e.estimated})),a)}return de.default.createElement("span",{style:{...o,fontFamily:H,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":r},de.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Pr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&de.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Pr(e.judgeCost,{estimated:e.estimated})}`),a)}var Ur=(e,t="var(--color-text-muted)",r={})=>({fontFamily:H,fontSize:e,color:t,...r});function HJ({calls:e,empty:t,style:r}){return de.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:H,fontSize:11,...r}},e.map(n=>de.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&de.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function qJ({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a,evaluation:i=null,onJudgeChanged:s}){let l=e?.scores?._models||{},u=Ni(e)?.judge?.estimated??!0;return de.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},de.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},de.default.createElement(We,null,"Models"),de.default.createElement(dD,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"})),t.length===0&&de.default.createElement(en,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&de.default.createElement(D0,{rows:d2(e,{results:r,scenarioCount:n,columns:t,labelFor:c=>$u(e,c)}),unit:"scenario",judgedBy:o,judgeEstimated:u}),t.length>1&&de.default.createElement(cD,{plot:cZ(e)}),t.length>0&&de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},t.map(c=>{let{short:d,provider:p}=SD(e,c),f=l[c],{passed:m,total:y}=jJ(e,c,r,n),x=Object.entries(f?.faults||{}),h=ph(f,f?.scenarios),g=f&&x.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!f&&cd(e)?{text:"scoring\u2026"}:null;return de.default.createElement(M0,{key:c,label:c,short:d,provider:p,winner:a?.winner===c,passed:m,total:y,avgScore:f?.avg_score,latencyMs:f?.avg_duration_ms,p50Ms:f?.p50_duration_ms??null,p95Ms:f?.p95_duration_ms??null,inputTokens:f?.input_tokens,outputTokens:f?.output_tokens,cost:f?.cost,perInteraction:tf(f?.cost,h),estimated:l2(f,f?.scenarios),judgeCost:f?.judge_cost,judgeCalls:f?.judge_calls||0,judgeEstimated:u,unit:"scenario",badges:x.map(([v,b])=>({tone:"error",text:`${_h(v)} \xD7${b}`})),note:g})})),a?.rationale&&de.default.createElement(ze,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement(We,null,"Verdict"),a.judge&&de.default.createElement("span",{style:Ur(11)},`judged by ${a.judge}`)),de.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},de.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:H,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var Jke=(e,t)=>e==="tools"?["minmax(220px, 1.6fr)","130px",...Array(t).fill("minmax(160px, 1fr)"),"110px"].join(" "):["minmax(200px, 1.6fr)",...Array(t).fill("minmax(130px, 1fr)"),"80px","48px"].join(" "),wD={tools:10,steps:8},xD=[],Qke={},IJ=new Set,P2=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),Rke=600,DJ=e=>typeof e=="number"?`${e}px`:e,e_e=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName);function t_e({result:e,expects:t,pending:r,compact:n=!1}){if(!e)return de.default.createElement("span",{style:{...Ur(12),fontWeight:600}},r?"\u2026":"\u2014");if(!Cl(e))return de.default.createElement("span",{style:{...Ur(12),fontWeight:600}},"\u2026");let o=_l(e),a=o?"var(--color-success)":"var(--color-error)",i=zJ(e.tool_calls,t);if(n){let s=e.fault?_h(e.fault):e.status==="errored"?"errored":null,l=O2(e),u=`${i.map(c=>c.label).join(" ")||"no tools called"}${l?` \xB7 ${l}`:""}`;return de.default.createElement("span",{title:u,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},de.default.createElement("span",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0,fontFamily:H,fontSize:12,whiteSpace:"nowrap"}},de.default.createElement("span",{style:{fontWeight:700,color:a,flexShrink:0}},o?"[+]":"[!]"),de.default.createElement("span",{style:{fontWeight:600,color:a,flexShrink:0}},aa(e.score)),s&&de.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},s)),de.default.createElement(M2,{metrics:m2(e)}))}return de.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},de.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,flexWrap:"wrap",fontFamily:H,fontSize:12}},de.default.createElement("span",{style:{fontWeight:700,color:a}},o?"[+]":"[!]"),de.default.createElement("span",{style:{fontWeight:600,color:a}},aa(e.score)),e.fault&&de.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},_h(e.fault))),de.default.createElement(HJ,{calls:i,empty:"no tools called"}),de.default.createElement(M2,{metrics:m2(e)}),O2(e)&&de.default.createElement("span",{style:{...Ur(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:UJ(e),"data-testid":"scenario-cell-cost"},O2(e)))}var r_e=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(g2(e.durationMs));let r=CI(e.inputTokens,e.outputTokens);return r!=="\u2014"&&t.push(r),t.length?t.join(" \xB7 "):null};function M2({metrics:e,testId:t="scenario-cell-metrics",title:r="time to answer \xB7 input\u2192output tokens",style:n}){let o=r_e(e);return o?de.default.createElement("span",{"data-testid":t,title:r,style:{...Ur(10.5),whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,...n}},o):null}var I2={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"}},n_e=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,o_e=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,a_e=(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&&n_e(e.costEntry,t.costEntry)&&o_e(e.tokens,t.tokens)&&e.timeMs===t.timeMs,i_e=de.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:y,tabIndex:x,onToggle:h,onFocus:g}){let v=t.key,b=s==="steps",S=bD(t,"tools"),w=t.enabled===!1,_=I2[o]||I2.none,k=`${v}${w?" \xB7 disabled":""}`,A=de.default.createElement("span",{"data-testid":"scenario-step",title:_.title,style:{...Ur(11,_.color),fontWeight:700,flexShrink:0}},_.text),C={fontFamily:H,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"};return de.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":v,"data-step":o,"data-nav":v,"data-current":a?"true":void 0,role:"button","aria-expanded":i,tabIndex:x,title:b&&!l?`${k} \xB7 ${t.prompt||""}`:void 0,onClick:()=>h(v),onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),h(v))},onFocus:E=>g(v,E),className:i?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:u,gap:wD[s]??wD.steps,padding:b?"6px 12px":"10px 12px",alignItems:b?"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:w?.5:1}},b?de.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},A,l&&de.default.createElement("span",{style:{...Ur(11),minWidth:0,maxWidth:"40%",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},k),de.default.createElement("span",{title:l?t.prompt:void 0,style:{flex:1,minWidth:0,fontSize:13,color:t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},t.prompt)):de.default.createElement(de.default.Fragment,null,de.default.createElement("div",{style:{minWidth:0}},de.default.createElement("div",{style:{...Ur(11),marginBottom:2,display:"flex",gap:6}},A,de.default.createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},k)),de.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},t.prompt)),de.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},S.map(E=>de.default.createElement("span",{key:E,style:C},E)),S.length===0&&bD(t,"contains").map(E=>de.default.createElement("span",{key:`contains-${E}`,style:C,title:"the answer must contain this"},`contains: ${E}`)))),n.map(E=>de.default.createElement(t_e,{key:E,result:r?.[E],expects:S,pending:(d||p)&&c,compact:b})),de.default.createElement(WJ,{entry:f,compact:b,testId:"scenario-row-cost",tokens:m}),b&&de.default.createElement("span",{"data-testid":"scenario-row-time",title:"the slowest answer across the models",style:{...Ur(11),textAlign:"right",whiteSpace:"nowrap"}},g2(y)))},a_e);function KJ({rows:e=xD,columns:t=xD,run:r=null,resultsByKey:n=Qke,runKeys:o=IJ,running:a=!1,loading:i=!1,stepsByKey:s=null,currentKey:l=null,bars:u=xD,detail:c="steps",showKey:d=!0,collapsedGroups:p=IJ,onToggleGroup:f,openKey:m=null,onToggleRow:y,following:x=!1,onStopFollowing:h,emptyLabel:g,maxHeight:v=null,renderDetail:b,boxRef:S=null,testId:w="scenario-matrix"}){let _=t.length===0?"tools":c,k=_==="steps",A=Jke(_,t.length),C=wD[_],E=k?_Z(t.length):CZ(t.length),I=ue=>o.has(ue.key)||!!n[ue.key],Q=ue=>r?i?I(ue)?"loading":"skipped":u2(n[ue.key],t,{inRun:I(ue),running:a}):"none",$=ue=>s?.[ue.key]??Q(ue),F=new Map(e.map(ue=>[ue.key,Xke(r,ue.key,n[ue.key])])),N=[...F.values()].some(ue=>ue?.estimated),O=new Map(e.map(ue=>[ue.key,MZ(n[ue.key],t)])),j=GI(n,t),T=e.some(ue=>ue.group),D=[];e.forEach(ue=>{let Ue=ue.group||"",Je=D.find(rt=>rt.name===Ue);Je||(Je={name:Ue,rows:[]},D.push(Je)),Je.rows.push(ue)});let M=ue=>(ue||T)&&p.has(ue),[K,V]=(0,de.useState)(null),L=[];D.forEach(ue=>{(ue.name||T)&&L.push(`group:${ue.name}`),M(ue.name)||ue.rows.forEach(Ue=>L.push(Ue.key))});let G=new Set(L),W=[K,m,l].find(ue=>ue!=null&&G.has(ue))??L[0]??null,ie=(0,de.useRef)(null),Ie=(0,de.useRef)(null),[ge,ce]=(0,de.useState)(50),[R,ee]=(0,de.useState)(0),z=(0,de.useRef)(ge),te=(0,de.useRef)({});Vs(()=>{z.current=ge,te.current={onToggleRow:y,onStopFollowing:h}});let U=(0,de.useCallback)(ue=>{ie.current=ue,S&&(S.current=ue)},[S]),P=(0,de.useCallback)(ue=>te.current.onToggleRow?.(ue),[]),Y=(0,de.useCallback)((ue,Ue)=>{V(ue);let Je=ie.current;Je&&!Je.contains(Ue.relatedTarget)&&te.current.onStopFollowing?.()},[]),B=()=>h?.();Vs(()=>{let ue=Ie.current;if(!ue)return;let Ue=()=>{let rt=ue.offsetHeight;rt&&ce(Tt=>Tt===rt?Tt:rt)};if(Ue(),typeof ResizeObserver>"u")return;let Je=new ResizeObserver(Ue);return Je.observe(ue),()=>Je.disconnect()},[]);let se=(0,de.useCallback)(ue=>{if(!ue){ee(0);return}let Ue=()=>ee(ue.offsetHeight);Ue();let Je=typeof ResizeObserver>"u"?null:new ResizeObserver(Ue);Je?.observe(ue);let rt=ie.current,Tt=ue.previousElementSibling;if(rt&&Tt?.hasAttribute("data-scenario-key")){let $t=Tt.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');rt.scrollTo({top:HZ({rowTop:Tt.offsetTop,headerHeight:z.current,groupRowHeight:$t?.offsetHeight??0}),behavior:"smooth"})}return()=>{Je?.disconnect(),ee(0)}},[]),ne=(0,de.useRef)(null),he=(0,de.useRef)(null),et=(0,de.useRef)(0);Vs(()=>{let ue=ie.current;if(!ue||!x||!l){ne.current=l;return}let Ue=ue.querySelector(`[data-scenario-key="${P2(l)}"]`);if(!Ue)return;let Je=WZ({rowTop:Ue.offsetTop,headerHeight:ge,boxHeight:ue.clientHeight});if(Math.abs(Je-ue.scrollTop)>4){let rt=Date.now(){let Ue=ie.current;if(!Ue||!ue)return;let Je=ue.hasAttribute("data-scenario-key")?ue.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,rt=z.current+(Je?.offsetHeight??0);ue.offsetTop-rtUe.scrollTop+Ue.clientHeight&&(Ue.scrollTop=ue.offsetTop+ue.offsetHeight-Ue.clientHeight)};return de.default.createElement("div",{ref:U,"data-testid":w,"data-detail":_,onWheel:B,onTouchMove:B,onKeyDown:ue=>{if(e_e(ue.target))return;let Ue=ie.current;if(Ue){if(ue.key==="ArrowDown"||ue.key==="ArrowUp"){let Je=[...Ue.querySelectorAll("[data-nav]")];if(!Je.length)return;let rt=Je.indexOf(ue.target);rt<0&&(rt=Je.findIndex($t=>$t.hasAttribute("data-scenario-key")&&$t.parentElement?.contains(ue.target)));let Tt=rt<0?Je[0]:Je[Math.min(Math.max(rt+(ue.key==="ArrowDown"?1:-1),0),Je.length-1)];ue.preventDefault(),h?.(),Tt&&Tt!==ue.target&&(Tt.focus({preventScroll:!0}),it(Tt));return}ue.key==="Escape"&&m&&(y?.(m),Ue.querySelector(`[data-scenario-key="${P2(m)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:v?R?`calc(${DJ(v)} + ${R}px)`:DJ(v):void 0}},de.default.createElement("div",{style:{minWidth:E}},de.default.createElement("div",{ref:Ie,style:{display:"grid",gridTemplateColumns:A,gap:C,padding:"8px 12px",alignItems:"end",position:"sticky",top:0,zIndex:2,backgroundColor:"var(--color-surface)",backgroundImage:"linear-gradient(var(--color-muted), var(--color-muted))"}},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},k?"Step":"Scenario"),!k&&de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(ue=>{let{short:Ue,provider:Je}=SD(r,ue),rt=u.find(Tt=>Tt.label===ue);return de.default.createElement("span",{key:ue,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:ue},de.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},Ue),de.default.createElement("span",{style:Ur(10)},Je||" "),rt&&rt.passed!=null&&rt.total!=null&&de.default.createElement(Pu,{passed:rt.passed,total:rt.total,height:4,valueWidth:48,style:{marginTop:3}}),de.default.createElement(M2,{metrics:j[ue],testId:"scenario-column-totals",title:"this model's answers' time added up, and its input\u2192output tokens, over the results in",style:{marginTop:2}}))}),de.default.createElement("span",{style:{textAlign:"right"},title:"What the scenario cost across every model, and what judging it cost; under it, its input\u2192output tokens"},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Cost")),k&&de.default.createElement("span",{style:{textAlign:"right"},title:"The slowest answer across the run's models; a group's add up"},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Time"))),D.map(ue=>{let Ue=ue.name,Je=M(Ue),rt=`group:${Ue}`,Tt=ue.rows.filter(I),$t=I2[TZ(ue.rows.map($))]||I2.none,Hr=GI(n,t,ue.rows.map(yt=>yt.key)),Po=t.map(yt=>{let Rn=Hr[yt];if(!Tt.length)return{label:yt,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:Rn};if(i)return{label:yt,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:Rn};let xs=Tt.filter(mt=>Cl(n[mt.key]?.[yt]));if(a&&!xs.length)return{label:yt,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:Rn};let bs=xs.filter(mt=>_l(n[mt.key][yt])).length,be=Tt.length,nt=be&&bs===be?"var(--color-success-text)":bs===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:yt,text:`${qn(bs,be)} passed`,color:nt,weight:600,metrics:Rn}}),vs=Zke(ue.rows.map(yt=>F.get(yt.key))),Pi=IZ(ue.rows.map(yt=>O.get(yt.key)));return de.default.createElement("div",{key:Ue||"__ungrouped","data-group":Ue},(Ue||T)&&de.default.createElement("div",{"data-testid":"scenario-group-row","data-group":Ue,"data-collapsed":Je?"true":"false","data-nav":rt,role:"button","aria-expanded":!Je,tabIndex:W===rt?0:-1,onClick:()=>f?.(Ue),onKeyDown:yt=>{(yt.key==="Enter"||yt.key===" "||yt.key==="ArrowLeft"&&!Je||yt.key==="ArrowRight"&&Je)&&(yt.preventDefault(),f?.(Ue))},onFocus:yt=>Y(rt,yt),style:{display:"grid",gridTemplateColumns:A,gap:C,padding:"7px 12px",alignItems:"center",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",cursor:"pointer",position:"sticky",top:ge,zIndex:1}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},de.default.createElement(Na,{kind:"chevron",open:!Je}),de.default.createElement("span",{"data-testid":"scenario-group-step",title:$t.title,style:{...Ur(11,$t.color),fontWeight:700,flexShrink:0}},$t.text),de.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Ue||"ungrouped"),k&&de.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"}},`\xB7 ${St(ue.rows.length,"scenario")}`)),!k&&de.default.createElement("span",{style:Ur(11)},St(ue.rows.length,"scenario")),Po.map(yt=>de.default.createElement("span",{key:yt.label,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},de.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:yt.weight,color:yt.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},yt.text),de.default.createElement(M2,{metrics:yt.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),de.default.createElement(WJ,{entry:vs,compact:k,testId:"scenario-group-cost",tokens:Pi}),k&&de.default.createElement("span",{"data-testid":"scenario-group-time",title:"the group's scenarios' times added up",style:{...Ur(11),textAlign:"right",whiteSpace:"nowrap"}},g2(DZ(ue.rows,n,t)))),!Je&&ue.rows.map(yt=>{let Rn=m===yt.key;return de.default.createElement("div",{key:yt.key},de.default.createElement(i_e,{scenario:yt,results:n[yt.key],columns:t,step:$(yt),current:yt.key===l,open:Rn,detail:_,showKey:d,grid:A,inSelection:I(yt),running:a,loading:i,costEntry:F.get(yt.key)??null,tokens:O.get(yt.key)??null,timeMs:VI(n[yt.key],t),tabIndex:W===yt.key?0:-1,onToggle:P,onFocus:Y}),Rn&&de.default.createElement("div",{ref:se},b?.(yt)))}))}),e.length===0&&de.default.createElement(en,{style:{borderTop:"1px solid var(--color-border-light)"}},g||"[+] nothing failed in this group"),N&&de.default.createElement("div",{style:{...Ur(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},al)))}function s_e(e){let t=[];e.duration_ms!=null&&t.push(zn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${Tn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=O2(e);return r&&t.push(r),t.join(" \xB7 ")}function l_e({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=SD(t,e),i=de.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},a),s=(h,g)=>de.default.createElement("div",{"data-testid":"scenario-result-detail",style:{background:"var(--color-card)",border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},i,g),de.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},h));if(!r||!Cl(r))return s(de.default.createElement("span",{style:Ur(11)},o?"waiting for this replay\u2026":"not part of this run"),de.default.createElement(Ce,{tone:"muted"},o?"pending":"no result"));let u=_l(r)?"success":"error",c=zJ(r.tool_calls,n),d=r.diagnosis||{},p=d.judge||{},f=r.fault||(r.status==="errored"?"run_error":null),m=[d.summary,d.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",y=Object.entries(r.scores||{}),x=s_e(r);return s(de.default.createElement(de.default.Fragment,null,de.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:H,fontSize:11}},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"tools"),de.default.createElement(HJ,{calls:c,empty:"none called",style:{display:"contents"}})),f&&de.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"}},de.default.createElement("span",{style:{fontFamily:H,fontWeight:700}},`[!] ${_h(f)}`),m?` \u2014 ${m}`:"",p.suggested_tool?.name&&de.default.createElement("div",{style:{marginTop:4,fontFamily:H,fontSize:11}},`suggested tool: ${p.suggested_tool.name}${p.suggested_tool.description?` \u2014 ${p.suggested_tool.description}`:""}`),p.instruction_change&&de.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${p.instruction_change}\u201D`)),r.output?de.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):de.default.createElement("div",{style:Ur(11)},"answer not retained for this run"),y.length>0&&de.default.createElement("div",{style:{...Ur(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>de.default.createElement("span",{key:h},_h(h)," ",de.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":aa(g)))))),de.default.createElement(de.default.Fragment,null,de.default.createElement(Ce,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${aa(r.score)}`),x&&de.default.createElement("span",{style:{marginLeft:"auto",...Ur(11)},title:UJ(r)},x),r.agent_run_id&&de.default.createElement(id,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:x?void 0:{marginLeft:"auto"}})))}function VJ({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=bD(e,"tools"),c=n[e.key]||{},d=r.some(f=>c[f]),p=a||d;return de.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},de.default.createElement("span",{style:Ur(11)},e.key),de.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),de.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},u.join(" or ")||"\u2014"),l&&de.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:14}},de.default.createElement("button",{type:"button",onClick:f=>{f.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:H,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),de.default.createElement(vn,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&de.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&de.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginBottom:10}},"This run used an earlier version of this question. Re-running uses the current version."),t?p?de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(f=>de.default.createElement(l_e,{key:f,label:f,run:t,result:c[f],expects:u,running:o}))):de.default.createElement("div",{style:Ur(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):de.default.createElement("div",{style:Ur(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function GJ({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}){let p=w=>d?d(w):of(w.scenario_keys||[],u),[f,m]=(0,de.useState)("all"),y=t.length>1,x=y?f:"all",h=y?pZ(e,i,w=>$u(a,w)):e,g=FI(h,x),v=y?fZ(h,t):{},b=w=>PJ({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:S2(),labelFor:_=>$u(a,_)}),S=w=>{let _=St((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let k=ud(w.models||[]);if(t.length<=1||k.length===0)return _;let C=k.length>=t.length?t.length===2?"both models":"all models":k.map(E=>On(E).short).join(", ");return`${_} \xB7 ${C}`};return de.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},y&&de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},de.default.createElement("span",{style:Ur(11)},"for"),de.default.createElement(Ln,{square:!0,mono:!0,selected:x==="all",onClick:()=>m("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>de.default.createElement(Ln,{key:w,square:!0,mono:!0,selected:x===w,onClick:()=>m(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${On(w).short} ${v[w]??0}`))),g.length===0&&de.default.createElement(en,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${On(x).short}`),de.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},g.map((w,_)=>{let k=w.kind==="instruction",A=k?"info":"error",C=[],E=new Set;(w.tools||[]).forEach(N=>{let O=typeof N=="string"?N:N?.name;!O||E.has(O)||(E.add(O),C.push({name:O,note:typeof N=="object"&&(N.note||N.server?.name)||null}))});let I=w.server,Q=I?.status==="enabled",$=r||"the agent",F=c?p(w):null;return de.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}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},de.default.createElement(Na,{kind:k?"info":"fault"}),de.default.createElement(Ce,{tone:A},`${_h(w.fault)}${w.count>1?` \xD7${w.count}`:""}`),o&&(w.scenario_keys||[]).length>0?de.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:{...Ur(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},S(w)):de.default.createElement("span",{style:Ur(11)},S(w))),w.recommendation&&de.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},w.recommendation),w.quote&&de.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"),C.length>0&&de.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},w.tools_label||"tools"),de.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},C.map(N=>de.default.createElement("span",{key:N.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:H,fontSize:11,maxWidth:"100%"}},de.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},N.name),N.note&&de.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:N.note},N.note))))),I&&de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},de.default.createElement("span",null,"served by"),de.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},I.name||I.key),de.default.createElement(Ce,{tone:Q?"success":"warning",size:10,style:{padding:"1px 6px"}},Q?`enabled for ${$}`:`${I.status||"unknown"} \xB7 not enabled for ${$}`)),w.note&&de.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},w.note),de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},w.action?.path&&de.default.createElement(pe,{size:"sm",onClick:()=>n?.(w.action.path)},w.action.label),w.action?.hint&&de.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"}},w.action.hint),F&&(F.keys.length?de.default.createElement(vn,{onClick:()=>c(w,F),title:"Replay these scenarios under the models in the picker",testId:"fix-item-rerun"},`re-run ${St(F.keys.length,"scenario")}`):de.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"},title:`${F.dropped.join(", ")} \xB7 disabled or no longer in the suite`,"data-testid":"fix-item-rerun-none"},"re-run \xB7 none enabled")),de.default.createElement(j0,{build:()=>b(w),style:{marginLeft:"auto"}}),de.default.createElement(mD,{item:w,evaluation:s,run:a})))})))}var YJ=e=>{let{results:t,fix_items:r,...n}=e;return n},u_e={keys:[],dropped:[]},_D={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:H,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},mf={border:"1px solid var(--color-border-light)",borderRadius:10},c_e=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),XJ=()=>typeof localStorage<"u"?localStorage:null,ZJ=()=>typeof document<"u"&&document.visibilityState==="hidden";function CD({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,onRunSelected:i}){let s=e.id,l=e.agent?.name||"Agent",[u,c]=(0,Se.useState)(!1),[d,p]=(0,Se.useState)(null),[f,m]=(0,Se.useState)(e.scenarios||[]),[y,x]=(0,Se.useState)(e.scenario_groups||[]),[h,g]=(0,Se.useState)(e.latest_run?[e.latest_run]:[]),[v,b]=(0,Se.useState)(null),[S,w]=(0,Se.useState)(a??e.latest_run?.id??null),[_,k]=(0,Se.useState)({}),[A,C]=(0,Se.useState)({}),[E,I]=(0,Se.useState)(null),[Q,$]=(0,Se.useState)((e.compare_models||[]).join(", ")),F=(0,Se.useMemo)(()=>t===void 0?[]:t??K1,[t]),N=vc(F),O=(0,Se.useMemo)(()=>E0(N,{providers:F}),[N,F]),[j,T]=(0,Se.useState)(null),[D,M]=(0,Se.useState)(!1),[K,V]=(0,Se.useState)([]),[L,G]=(0,Se.useState)(""),[W,ie]=(0,Se.useState)(!1),[Ie,ge]=(0,Se.useState)(""),[ce,R]=(0,Se.useState)(null),[ee,z]=(0,Se.useState)(null),[te,U]=(0,Se.useState)(!1),[P,Y]=(0,Se.useState)(null),[B,se]=(0,Se.useState)(!0),[ne,he]=(0,Se.useState)(()=>{let me=e.scenarios||[],Re=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return KI(me,new Set(A0(Re,me)))}),[et,it]=(0,Se.useState)(()=>new Map),[ve,ue]=(0,Se.useState)(()=>AZ(XJ())),[Ue,Je]=(0,Se.useState)("suite"),rt=(0,Se.useRef)(null),Tt=(0,Se.useRef)(null),$t=(0,Se.useRef)(null),Hr=(0,Se.useRef)(new Map),Po=(0,Se.useRef)(new Map),vs=(0,Se.useRef)({}),Pi=(0,Se.useRef)(_),yt=(0,Se.useRef)(S),Rn=(0,Se.useRef)(null),xs=T0(rt),bs=xs-xZ,be=xs===0||bs>=bZ,nt=xs===0?0:bs-(be?WI+HI:0),mt=ve??"steps",tr=nt===0||nt>=kZ,na=(0,Se.useCallback)(async()=>{let me=await fetch(`/api/evaluations/${s}/scenarios`);if(!me.ok)return;let Re=await me.json();m(Re.scenarios||[]),x(Re.groups||[])},[s]),Mo=(0,Se.useCallback)(async()=>{try{let me=await fetch(`/api/evaluations/${s}`);if(!me.ok)return p(`Could not load this suite (HTTP ${me.status})`),null;let Ct=(await me.json()).evaluation||{};return m(Ct.scenarios||[]),x(Ct.scenario_groups||[]),g(Ct.runs||[]),b(Number.isFinite(Ct.run_count)?Ct.run_count:null),p(null),Ct}catch(me){return p(`Could not load this suite: ${me.message}`),null}finally{c(!0)}},[s]);Vs(()=>{Pi.current=_,yt.current=S});let wn=(0,Se.useCallback)(me=>{if(!me)return Promise.resolve(null);if(Hr.current.has(me))return Hr.current.get(me);let Re=(async()=>{try{let Ct=await fetch(`/api/evaluations/${s}/runs/${me}`);if(!Ct.ok)return C(Js=>({...Js,[me]:`HTTP ${Ct.status}`})),null;let lr=(await Ct.json()).run;if(!lr)return C(Js=>({...Js,[me]:"no run in the response"})),null;C(Js=>{if(!(me in Js))return Js;let{[me]:_s,..._d}=Js;return _d});let Do=Pi.current[lr.id],{results:Ef,changed:Hu}=BZ(Do?.results,lr.results);if(!(!!Do&&!Hu&&Do.status===lr.status&&Do.completed_at===lr.completed_at&&(Do.fix_items?.length??0)===(lr.fix_items?.length??0))){let Js=YJ(lr);k(_s=>({..._s,[lr.id]:{...lr,results:Ef}})),g(_s=>_s.some(_d=>_d.id===lr.id)?_s.map(_d=>_d.id===lr.id?{..._d,...Js}:_d):_s),I(_s=>_s&&_s.id===lr.id?{..._s,...Js}:_s)}return lr}catch(Ct){return C(rr=>({...rr,[me]:Ct.message})),null}finally{Hr.current.delete(me)}})();return Hr.current.set(me,Re),Re},[s]),Oa=me=>{I(YJ(me)),w(me.id),Y(null)};(0,Se.useEffect)(()=>{let me=!1;return(async()=>{let Re=await Mo();if(me)return;let Ct=Re?.runs?.[0]?.id??null,rr=!!(a&&Re?.runs?.some(Hu=>Hu.id===a));if(a&&!rr){let Hu=await wn(a);if(me)return;if(Hu){Oa(Hu);return}}let lr=rr?a:null,Do=yt.current,Ef=lr||(Do&&Re?.runs?.some(Hu=>Hu.id===Do)?Do:Ct);w(Ef),Ef&&wn(Ef)})(),()=>{me=!0}},[Mo,wn]);let Pa=e.latest_run?.id??null;(0,Se.useEffect)(()=>{!Pa||h.some(me=>me.id===Pa)||Mo()},[Pa,h,Mo]);let ws=_[S]||h.find(me=>me.id===S)||(E?.id===S?E:null),lo=h[0]||null,Fu=cd(ws)?ws.id:cd(lo)?lo.id:null;(0,Se.useEffect)(()=>{if(!Fu)return;let me=!1,Re=()=>zZ(Pi.current[Fu]?.results?.length??0),Ct=lr=>{clearTimeout(Rn.current),Rn.current=setTimeout(async()=>{if(me||ZJ())return;let Do=null;try{Do=await wn(Fu)}catch{Do=null}if(!me){if(Do&&!cd(Do)){await Mo(),r?.();return}Ct(Re())}},lr)},rr=()=>{document.visibilityState==="visible"&&Ct(0)};return ZJ()||Ct(Re()),typeof document<"u"&&document.addEventListener("visibilitychange",rr),()=>{me=!0,clearTimeout(Rn.current),typeof document<"u"&&document.removeEventListener("visibilitychange",rr)}},[Fu,wn,Mo,r]);let Ss=(0,Se.useCallback)(async()=>{try{let me=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!me.ok)return;let Re=await me.json(),Ct=p2(Re.sandboxes);V(Ct),G(rr=>f2(rr,Ct))}catch{}},[]);(0,Se.useEffect)(()=>{Ss()},[Ss]);let Uu=sd(Q),eo=async me=>{M(!0),T(null);try{let Re=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(gZ(me,Uu,L))}),Ct=await Re.json().catch(()=>({}));if(!Re.ok)throw Ct.code==="sandbox_refused"&&Ss(),new Error((Ct.errors||[Ct.error]).filter(Boolean).join(", ")||"Run failed to start");let rr=Ct.run;g(lr=>[rr,...lr.filter(Do=>Do.id!==rr.id)]),b(lr=>lr==null?null:lr+1),k(lr=>({...lr,[rr.id]:{...rr,results:[]}})),w(rr.id),Y(null),se(!0),Je("suite"),r?.()}catch(Re){T(Re.message)}finally{M(!1)}},Tl=me=>[me,lo?.id,S].slice(0,SZ),Bh=me=>{w(me),Y(null),k(Re=>XI(Re,Tl(me))),_[me]||wn(me)},sb=me=>{Bh(me.id),i?.(me.id)};(0,Se.useEffect)(()=>{if(!a||a===S)return;if(h.some(Re=>Re.id===a)||E?.id===a){Bh(a);return}if(!u)return;let me=!1;return(async()=>{let Re=await wn(a);me||!Re||(k(Ct=>XI(Ct,Tl(Re.id))),Oa(Re))})(),()=>{me=!0}},[a]);let lb=async me=>{me.id&&(await fetch(`/api/evaluations/${s}/scenarios/${me.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:me.enabled===!1}})}),await na())},hA=async()=>{R(null);let me=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:Ie})}),Re=await me.json().catch(()=>({}));if(!me.ok){R((Re.errors||[Re.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(Re.scenarios||[]),x(Re.groups||[]),ie(!1),r?.()},Qe=ws,Ma=!!Qe&&!Array.isArray(Qe.results),Fh=Qe?A[Qe.id]:null,uo=(0,Se.useMemo)(()=>(Qe?.results||[]).filter(me=>me&&me.scenario_key),[Qe]),Uh=B0(Qe,uo,e).join("\0"),ya=(0,Se.useMemo)(()=>Uh?Uh.split("\0"):[],[Uh]),Ia=(0,Se.useMemo)(()=>FZ(uo,me=>$u(Qe,me),vs.current),[uo,Qe]);Vs(()=>{vs.current=Ia});let Cf=(0,Se.useMemo)(()=>new Set(A0(Qe,f)),[Qe,f]),Da=cd(Qe),Wh=Ch(Qe,ya,f),yd=LJ(Qe,uo,ya,f),vd=(0,Se.useCallback)(me=>Cf.has(me.key)||!!Ia[me.key],[Cf,Ia]),co=(0,Se.useMemo)(()=>YX(f,Ia,Po.current),[f,Ia]),Ol=(0,Se.useMemo)(()=>{let me={};return co.forEach(Re=>{let Ct=vd(Re);me[Re.key]=Ma?Ct?"loading":"skipped":Qe?u2(Ia[Re.key],ya,{inRun:Ct,running:Da}):"none"}),me},[co,vd,Ia,ya,Qe,Ma,Da]),ub=(0,Se.useCallback)(me=>Ol[me.key],[Ol]),Hh=(0,Se.useMemo)(()=>Da?NZ(co.map(me=>({key:me.key,step:Ol[me.key]}))):null,[Da,co,Ol]),xd=(0,Se.useCallback)(me=>ya.some(Re=>{let Ct=Ia[me.key]?.[Re];return Cl(Ct)&&!_l(Ct)}),[ya,Ia]),cb=(0,Se.useMemo)(()=>co.filter(xd).length,[co,xd]),bd=!!Qe&&Qe.status==="complete"&&!Ma,qh=(0,Se.useMemo)(()=>OZ(co.filter(me=>!ee||(me.group||"")===ee).filter(me=>!te||xd(me)),ub,bd?Ue:"suite"),[co,ee,te,xd,ub,bd,Ue]),yA=new Set(co.filter(vd).map(me=>me.group).filter(Boolean)).size,wd=uo.filter(Cl).length,db=uo.filter(me=>Cl(me)&&!_l(me)).length,vA=Wh*Math.max(ya.length,1),Kh=new Set(uo.filter(me=>Cl(me)&&!_l(me)).map(me=>me.scenario_key)).size,Af=Qe?.scores?._verdict||null,Pl=Object.prototype.hasOwnProperty.call(Qe?.scores||{},"_judge_label")?Qe.scores._judge_label||"rules":Af?.judge&&Af.judge!=="pass rate"?Af.judge:e.judge_model||"rules",Sd=(0,Se.useMemo)(()=>Qe?BJ(Qe,uo):[],[Qe,uo]),Vh=(0,Se.useMemo)(()=>Ma?u_e:yZ(uo,f),[Ma,uo,f]),Gh=Object.keys(Qe?.scores||{}).filter(me=>!me.startsWith("_")),Wu=(0,Se.useCallback)(me=>$J(me,me.id===Qe?.id?uo:(_[me.id]?.results||[]).filter(Re=>Re&&Re.scenario_key),e,f),[Qe,uo,_,e,f]),pb=(0,Se.useCallback)((me,Re,Ct)=>{if(!Re||Re.status!=="complete"||me.status!=="complete")return S0(me,Re,{olderNumber:Ct});let rr=B0(me,me.id===Qe?.id?uo:[],e),lr=B0(Re,[],e),Do=Ch(Re,lr,f)===Ch(me,rr,f)&&lr.length===rr.length;return S0(me,Re,{olderNumber:Ct,comparable:Do})},[Qe,uo,e,f]),le=(0,Se.useMemo)(()=>x2({runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,previousRun:e.previous_run,barsFor:Wu,deltaFor:pb}),[h,v,e,l,Qe?.id,Wu,pb]),De=le.find(me=>me.run.id===Qe?.id)||null,st=De?.number??(Number.isFinite(Qe?.number)?Qe.number:null),Lt=De?.bars??(Qe?Wu(Qe):[]),Sn=rf(h,v),ni=!!Qe&&lo?.id===Qe.id,Io=cd(lo)&&lo.id!==Qe?.id?lo:null,ja=u||f.length>0,ks=ja?f.length:e.scenario_count??0,kd=ja?f.filter(me=>me.enabled!==!1&&(!ee||(me.group||"")===ee)).length:ks,Zee=`Run ${St(kd,"scenario")}${Uu.length?` \xD7 ${St(Uu.length,"model")}`:""}`,Jee=`@${l} \xB7 ${St(ks,"scenario")}${y.length?` in ${St(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?h.length?St(Sn,"run"):"no runs yet":"loading\u2026"}`,xj=Qe&&Qe.status==="complete"?`/evaluations/${s}/runs/${Qe.id}/report`:null,Qee=[...new Set([...y,...co.map(me=>me.group).filter(Boolean)])],Ree=[{label:`All ${co.length||ks}`,value:null}].concat(Qee.map(me=>({label:ja?`${me} ${co.filter(Re=>Re.group===me).length}`:me,value:me}))),Yh=(0,Se.useMemo)(()=>{let me=[...new Set(co.map(Re=>Re.group||""))];return me.some(Boolean)?me:[]},[co]),ete=Yh.some(me=>!ne.has(me)),xA=co.length===0,tte=te?"[+] nothing failed in this group":"[ ] no scenarios";(0,Se.useEffect)(()=>{se(!0),it(new Map),Je("suite"),Y(null)},[Qe?.id]),(0,Se.useEffect)(()=>{he(KI(f,Cf))},[Qe?.id,u]);let bj=(0,Se.useRef)(Qe?.id??null);(0,Se.useEffect)(()=>{if(bj.current!==(Qe?.id??null)){bj.current=Qe?.id??null;return}!Da||!B||he(me=>{let Re=new Set(me);return Yh.forEach(Ct=>{if(et.has(Ct))return;let rr=co.filter(lr=>(lr.group||"")===Ct&&vd(lr));rr.length&&(rr.every(lr=>Ol[lr.key]==="passed")&&Re.add(Ct),rr.some(lr=>lr.key===Hh)&&Re.delete(Ct))}),c_e(Re,me)?me:Re})},[Qe?.id,Hh,wd,B,Da]);let rte=me=>{let Re=ne.has(me);he(Ct=>{let rr=new Set(Ct);return Re?rr.delete(me):rr.add(me),rr}),it(Ct=>new Map(Ct).set(me,Re))},wj=me=>{he(new Set(me?[]:Yh)),it(new Map(Yh.map(Re=>[Re,me])))},nte=me=>{ue(me),EZ(XJ(),me)},ote=(0,Se.useCallback)(me=>{Y(Re=>Re===me?null:me),se(!1)},[]),ate=(0,Se.useCallback)(()=>se(!1),[]),ite=(0,Se.useCallback)(me=>{let Re=Array.isArray(me)?me[0]:me;if(!Re)return;let Ct=co.find(rr=>rr.key===Re)?.group||"";z(null),U(!1),he(rr=>{if(!rr.has(Ct))return rr;let lr=new Set(rr);return lr.delete(Ct),lr}),it(rr=>new Map(rr).set(Ct,!0)),Y(Re),se(!1),requestAnimationFrame(()=>{let rr=Tt.current;rr&&(rr.scrollIntoView({behavior:"smooth",block:"start"}),rr.querySelector(`[data-scenario-key="${P2(Re)}"]`)?.focus({preventScroll:!0}))})},[co]),ste=()=>{$t.current?.scrollIntoView({behavior:"smooth",block:"start"}),$t.current?.focus({preventScroll:!0})},lte=()=>{Qe&&(C(me=>{let{[Qe.id]:Re,...Ct}=me;return Ct}),wn(Qe.id))},Sj=()=>{lo&&sb(lo)},kj=xA&&d?Se.default.createElement(en,{style:mf},"[!] suite not loaded"):xA&&!u?Se.default.createElement(en,{style:mf},"loading\u2026"):xA?Se.default.createElement(en,{style:mf},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):S!=null&&!Qe?Se.default.createElement(en,{style:mf},"loading\u2026"):Fh&&!Array.isArray(Qe.results)?Se.default.createElement(en,{style:mf},`[!] results not loaded (${Fh}) \xB7 `,Se.default.createElement(vn,{onClick:lte,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):Se.default.createElement(KJ,{rows:qh,columns:Qe?ya:[],run:Qe,resultsByKey:Ia,runKeys:Cf,running:Da,loading:Ma,stepsByKey:Ol,currentKey:Hh,bars:Lt,detail:mt,showKey:tr,collapsedGroups:ne,onToggleGroup:rte,openKey:P,onToggleRow:ote,following:B,onStopFollowing:ate,emptyLabel:tte,maxHeight:qI,boxRef:Tt,renderDetail:me=>Se.default.createElement(VJ,{scenario:me,run:Qe,columns:Qe?ya:[],resultsByKey:Ia,running:Da,inRun:vd(me),canMutate:!me.orphan,onRerun:Re=>eo({keys:[Re.key]}),onToggleEnabled:lb})}),_j={rows:le,runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,onOpen:sb,noteFor:me=>UI(me,f),linkedRun:E,linkedBars:E&&Wu(E)};return Se.default.createElement("div",{ref:rt,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":be?"rail":"strip"},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Jee),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Se.default.createElement(pe,{size:"sm",onClick:()=>{ge(iJ(f)),R(null),ie(!W)}},W?"Cancel":"Edit scenarios"),Se.default.createElement(O0,{value:Q,onChange:$,models:O,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:{..._D,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),K.length>0&&Se.default.createElement("select",{value:L,onChange:me=>G(me.target.value),style:{..._D,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"},Se.default.createElement("option",{value:""},"Run against: agent's own tools"),K.map(me=>Se.default.createElement("option",{key:me.value,value:me.value},`Run against sandbox ${me.label}`))),Se.default.createElement(pe,{variant:"primary",size:"sm",disabled:D||!u||kd===0,onClick:()=>eo(ee?{group:ee}:{}),testId:"suite-run-button"},D?"Starting\u2026":Zee))),(d||j)&&Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},d||j),W&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Se.default.createElement("textarea",{value:Ie,onChange:me=>ge(me.target.value),rows:Math.min(Math.max(f.length+4,6),24),style:{..._D,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},Se.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",Se.default.createElement("code",{style:{fontFamily:H}},"# Heading")," starts a group; ",Se.default.createElement("code",{style:{fontFamily:H}},"| tools: a, b"),", ",Se.default.createElement("code",{style:{fontFamily:H}},"| contains: x"),", ",Se.default.createElement("code",{style:{fontFamily:H}},"| not_contains: y")," set expectations. Keep a scenario's ",Se.default.createElement("code",{style:{fontFamily:H}},"key")," to keep its history."),Se.default.createElement(pe,{variant:"primary",size:"sm",onClick:hA},"Save scenarios")),ce&&Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},ce)),Qe&&Se.default.createElement(iD,{run:Qe,runNumber:st,latestNumber:Sn,isLatest:ni,runningElsewhere:Io,agentName:l,scenarioCount:Wh,groupCount:yA,columns:ya,judgedBy:Pl,bars:Lt,delta:De?.delta??null,version:De?.version??null,totals:yd,settledCount:wd,settledFailed:db,expectedResults:vA,running:Da,loading:Ma,spend:Ni(Qe),fixSummary:{items:Sd.length,faults:Math.max(yd.total-yd.passed,0),scenarios:Kh},selectionLabel:UI(Qe,f),sandboxLabel:C0(Qe),reportPath:xj,rerun:Vh,onSelectLatest:Sj,onWatchLatest:Sj,onJumpToFix:ste,onRerunFailed:()=>eo({keys:Vh.keys}),onRunAgain:()=>eo(vZ(Qe,f))}),!be&&Se.default.createElement(oD,{layout:"strip",limit:rZ,..._j}),Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(We,{style:{marginRight:4}},"Scenarios"),Ree.map(me=>Se.default.createElement(Ln,{key:me.label,selected:ee===me.value,onClick:()=>z(me.value)},me.label)),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(Ln,{square:!0,mono:!0,selected:mt==="tools",onClick:()=>nte(mt==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},mt==="tools"?"[x] tools":"[ ] tools"),Se.default.createElement(Ln,{square:!0,mono:!0,selected:te,onClick:()=>U(!te),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${te?"[x]":"[ ]"} failed only${!Ma&&cb?` \xB7 ${cb}`:""}`),Qe&&Qe.status!=="failed"&&(bd?Se.default.createElement(Ln,{square:!0,mono:!0,selected:Ue==="failed-first",onClick:()=>Je(Ue==="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"},Ue==="failed-first"?"[x] failed first":"[ ] failed first"):Se.default.createElement(Ln,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Da&&Se.default.createElement(Ln,{square:!0,mono:!0,selected:B,onClick:()=>se(me=>!me),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},B?"[x] follow":"[ ] follow"),Yh.length>1&&(ete?Se.default.createElement(vn,{onClick:()=>wj(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):Se.default.createElement(vn,{onClick:()=>wj(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),be?Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${WI}px minmax(0, 1fr)`,gap:HI,alignItems:"start"}},Se.default.createElement(oD,{layout:"rail",maxHeight:qI,..._j}),kj):kj),Qe&&Qe.status!=="failed"&&Se.default.createElement(qJ,{run:Qe,columns:ya,results:uo,scenarioCount:Wh,judgedBy:Pl,verdict:Af,evaluation:e,onJudgeChanged:r}),Qe&&Qe.status!=="failed"&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{ref:$t,tabIndex:-1,style:{display:"flex",alignItems:"baseline",gap:10,outline:"none"},"data-testid":"suite-fix-heading"},Se.default.createElement(We,null,"What to fix"),Se.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},Ma?"loading\u2026":`${St(Sd.length,"item")} \xB7 ${St(Math.max(yd.total-yd.passed,0),"fault")} across ${St(Kh,"scenario")}`)),Ma?Se.default.createElement(en,{style:{...mf,padding:"14px 12px"}},"[ ] loading\u2026"):Sd.length>0?Se.default.createElement(GJ,{items:Sd,columns:ya,agentName:l,onNavigate:lt,onOpenScenario:ite,run:Qe,results:uo,evaluation:e,runNumber:st,scenarios:f,onRerun:me=>eo({keys:of(me.scenario_keys||[],f).keys}),runnableFor:me=>of(me.scenario_keys||[],f)}):Se.default.createElement(en,{style:{...mf,padding:"14px 12px"}},Da?"[ ] scoring\u2026":"[+] nothing to fix")),Se.default.createElement(df,{evaluation:e,run:Qe,keys:Gh.length?Gh:null,spend:Ni(Qe),spendTotal:!0,reportPath:xj,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var at=Z(J());var AD=[{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}}],JJ=[{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}}],Lu={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)"},QJ={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},d_e={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function ED({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:AD.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??K1,[o]),y=vc(r&&!m.includes(r)?[...m,r]:m),x=f_e(s.agent_id),h=(0,at.useMemo)(()=>r?E0(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,at.useMemo)(()=>g?E0(y,{providers:m}):x,[y,m,g,x]),b=C=>l(E=>({...E,...C})),S=C=>l(E=>{let I=!!C.trim();if(I===!!E.scenariosText.trim())return{...E,scenariosText:C};let{models:Q,restore:$}=VZ(sd(E.compareModels),y,{providers:m,qualify:I,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:N0(Q),compareRestore:$}}),w=(C,E)=>b({criteria:E?[...s.criteria,C]:s.criteria.filter(I=>I!==C)}),_=()=>{let C=[...AD,...JJ].filter(E=>s.criteria.includes(E.key)).map(({key:E,type:I,config:Q})=>({key:E,type:I,config:Q}));return s.containsPattern.trim()&&C.push({key:"contains",type:"contains",config:{pattern:s.containsPattern.trim()}}),s.llmJudgePrompt.trim()&&C.push({key:"quality",type:"llm_judge",config:{prompt:s.llmJudgePrompt.trim()}}),C},k=async C=>{C.preventDefault(),p(!0),c(null);try{let E=await fetch("/api/evaluations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{agent_id:s.agent_id,name:s.name,sample_size:s.sample_size,judge_kind:s.judgeKind==="judge_defined"?"judge_defined":s.llmJudgePrompt.trim()?"llm":"rules",judge_model:s.judgeModel.trim()||void 0,compare_models:sd(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:_(),scenarios_text:s.scenariosText.trim()||void 0}})}),I=await E.json().catch(()=>({}));if(!E.ok)throw new Error((I.errors||[I.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${E.status})`);a?.(I.evaluation)}catch(E){c(E.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:E=>w(C.key,E.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),C.label);return at.default.createElement(ze,{testId:"new-evaluation-form"},at.default.createElement("form",{onSubmit:k,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(We,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),at.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>b({agent_id:C.target.value}),style:{...Lu,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(We,{as:"label",style:{display:"block",marginBottom:6}},"Name"),at.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>b({name:C.target.value}),placeholder:"Response Quality",style:{...Lu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(We,{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=>b({sample_size:C.target.value}),style:{...Lu,width:"100%",fontFamily:H}}))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),at.default.createElement("select",{value:s.judgeKind,onChange:C=>b({judgeKind:C.target.value}),style:{...Lu,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(We,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),at.default.createElement(Ql,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>b({judgeModel:C}),style:{...Lu,width:"100%",fontFamily:H,fontSize:12}}),r!==void 0&&at.default.createElement("p",{id:`${f}-judge-provider`,style:QJ},p_e(r,n))),at.default.createElement("div",null,at.default.createElement(We,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),at.default.createElement(O0,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>b({compareModels:C}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Lu,width:"100%",fontFamily:H,fontSize:12}}),at.default.createElement("p",{id:`${f}-compare-hint`,style:QJ},g?"Each model replays the scenarios. Any model name can be typed.":"Compares the agent's generations recorded under each model name. Add scenarios to try any model."))),at.default.createElement("div",null,at.default.createElement(We,{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=>S(C.target.value),rows:s.scenariosText?8:3,placeholder:`# Open tickets +`};var pd=e=>[...new Set(e)],ED=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},Nh=e=>String(e||"").replace(/_/g," "),Cl=e=>e?.status==="passed",Al=e=>!!e&&e.status!=="pending",fd=e=>!!e&&["pending","running"].includes(e.status);function q0(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=kZ(e);if(o.length)return o;let a=pd(t.map(s=>Lu(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function Lu(e,t){let n=(sf(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 TD(e,t){let r=e?.scores?._models?.[t],n=(sf(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return bn(t,r?.provider||n?.provider||"")}function Th(e,t=[],r=[]){let n=O0(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 WJ(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=>Lu(e,i)===t);return{passed:a.filter(Cl).length,failed:a.filter(i=>Al(i)&&!Cl(i)).length,total:n||a.length}}function HJ(e,t=[],r=null,n=[]){let o=q0(e,t,r),a=Th(e,o,n);return o.map(i=>{let s={label:i,short:bn(i).short};return e?.scores?._models?.[i]?.scenarios!=null||fd(e)||t.some(u=>Lu(e,u)===i)?{...s,...WJ(e,i,t,a)}:{...s,passed:null,failed:null,total:null}})}function qJ(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=Th(e,r,n)*Math.max(r.length,1);return{passed:t.filter(Cl).length,total:o}}function KJ(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 Rke=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},CD=e=>e?.diagnosis?.judge?.instruction_change;function VJ(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(CD);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>e_e(a,t)),o=new Set;return t.forEach(a=>{let i=CD(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>CD(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:pd(s.map(l=>l.scenario_key)),models:pd(s.map(l=>Lu(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 e_e(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=pd(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=pd(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:Rke(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=pd(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||pd(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 OD=e=>e?.cost_source==="estimated",GJ=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},$2=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Pr(e.cost,{estimated:OD(e)})];return t!=null&&r.push(`judge ${Pr(t,{estimated:GJ(e)})}`),r.join(" \xB7 ")},YJ=e=>{if(!OD(e))return;let t=e.cost_rate||null;return Cm({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},t_e=(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(Al),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=>OD(u)||GJ(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 XJ({entry:e,compact:t=!1,testId:r,tokens:n=null}){let o={display:"flex",flexDirection:"column",gap:1,minWidth:0,textAlign:"right"},a=n&&(n.input!=null||n.output!=null)?ue.default.createElement("span",{"data-testid":r?`${r}-tokens`:void 0,title:"input\u2192output tokens across the models",style:{...Ur(10.5),whiteSpace:"nowrap"}},MI(n.input,n.output)):null;if(!e)return ue.default.createElement("span",{style:o,"data-testid":r},ue.default.createElement("span",{style:Ur(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 ${Pr(e.cost,{estimated:e.estimated})}`),e.judgeCost!=null&&s.push(`judge ${Pr(e.judgeCost,{estimated:e.estimated})}`),ue.default.createElement("span",{style:o,"data-testid":r},ue.default.createElement("span",{title:s.join(" \xB7 ")||void 0,style:{fontFamily:W,fontSize:11,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap"}},Pr(i,{estimated:e.estimated})),a)}return ue.default.createElement("span",{style:{...o,fontFamily:W,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":r},ue.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Pr(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ue.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Pr(e.judgeCost,{estimated:e.estimated})}`),a)}var Ur=(e,t="var(--color-text-muted)",r={})=>({fontFamily:W,fontSize:e,color:t,...r});function ZJ({calls:e,empty:t,style:r}){return ue.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:W,fontSize:11,...r}},e.map(n=>ue.default.createElement("span",{key:n.name,style:{color:n.color,fontWeight:n.weight}},n.label)),e.length===0&&ue.default.createElement("span",{style:{color:"var(--color-text-muted)"}},t))}function JJ({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=Ni(e)?.judge?.estimated??!0;return ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"suite-models-panel"},ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},ue.default.createElement(We,null,"Models"),ue.default.createElement(vD,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"}),ue.default.createElement(kl,{url:f2(l,{part:"verdict"}),testId:"copy-verdict-markdown",title:"Copy the verdict and the model comparison as Markdown",style:{marginLeft:"auto"}})),t.length===0&&ue.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ue.default.createElement(B0,{rows:v2(e,{results:r,scenarioCount:n,columns:t,labelFor:d=>Lu(e,d)}),unit:"scenario",judgedBy:o,judgeEstimated:c}),t.length>1&&ue.default.createElement(yD,{plot:yZ(e)}),t.length>0&&ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},t.map(d=>{let{short:p,provider:f}=TD(e,d),m=u[d],{passed:y,total:x}=WJ(e,d,r,n),h=Object.entries(m?.faults||{}),g=hh(m,m?.scenarios),v=m&&h.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!m&&fd(e)?{text:"scoring\u2026"}:null;return ue.default.createElement(L0,{key:d,label:d,short:p,provider:f,winner:a?.winner===d,passed:y,total:x,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:of(m?.cost,g),estimated:g2(m,m?.scenarios),judgeCost:m?.judge_cost,judgeCalls:m?.judge_calls||0,judgeEstimated:c,unit:"scenario",badges:h.map(([b,k])=>({tone:"error",text:`${Nh(b)} \xD7${k}`})),note:v})})),a?.rationale&&ue.default.createElement(ze,{padding:"12px 16px",testId:"suite-verdict",style:{display:"flex",flexDirection:"column",gap:6}},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ue.default.createElement(We,null,"Verdict"),a.judge&&ue.default.createElement("span",{style:Ur(11)},`judged by ${a.judge}`)),ue.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},ue.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:W,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var n_e=(e,t)=>e==="tools"?["minmax(220px, 1.6fr)","130px",...Array(t).fill("minmax(160px, 1fr)"),"110px"].join(" "):["minmax(200px, 1.6fr)",...Array(t).fill("minmax(130px, 1fr)"),"80px","48px"].join(" "),ND={tools:10,steps:8},AD=[],o_e={},FJ=new Set,L2=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),a_e=600,UJ=e=>typeof e=="number"?`${e}px`:e,i_e=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName);function s_e({result:e,expects:t,pending:r,compact:n=!1}){if(!e)return ue.default.createElement("span",{style:{...Ur(12),fontWeight:600}},r?"\u2026":"\u2014");if(!Al(e))return ue.default.createElement("span",{style:{...Ur(12),fontWeight:600}},"\u2026");let o=Cl(e),a=o?"var(--color-success)":"var(--color-error)",i=KJ(e.tool_calls,t);if(n){let s=e.fault?Nh(e.fault):e.status==="errored"?"errored":null,l=$2(e),u=`${i.map(c=>c.label).join(" ")||"no tools called"}${l?` \xB7 ${l}`:""}`;return ue.default.createElement("span",{title:u,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},ue.default.createElement("span",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0,fontFamily:W,fontSize:12,whiteSpace:"nowrap"}},ue.default.createElement("span",{style:{fontWeight:700,color:a,flexShrink:0}},o?"[+]":"[!]"),ue.default.createElement("span",{style:{fontWeight:600,color:a,flexShrink:0}},aa(e.score)),s&&ue.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},s)),ue.default.createElement(z2,{metrics:w2(e)}))}return ue.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,flexWrap:"wrap",fontFamily:W,fontSize:12}},ue.default.createElement("span",{style:{fontWeight:700,color:a}},o?"[+]":"[!]"),ue.default.createElement("span",{style:{fontWeight:600,color:a}},aa(e.score)),e.fault&&ue.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},Nh(e.fault))),ue.default.createElement(ZJ,{calls:i,empty:"no tools called"}),ue.default.createElement(z2,{metrics:w2(e)}),$2(e)&&ue.default.createElement("span",{style:{...Ur(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:YJ(e),"data-testid":"scenario-cell-cost"},$2(e)))}var l_e=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(S2(e.durationMs));let r=MI(e.inputTokens,e.outputTokens);return r!=="\u2014"&&t.push(r),t.length?t.join(" \xB7 "):null};function z2({metrics:e,testId:t="scenario-cell-metrics",title:r="time to answer \xB7 input\u2192output tokens",style:n}){let o=l_e(e);return o?ue.default.createElement("span",{"data-testid":t,title:r,style:{...Ur(10.5),whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,...n}},o):null}var B2={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"}},u_e=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,c_e=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,d_e=(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&&u_e(e.costEntry,t.costEntry)&&c_e(e.tokens,t.tokens)&&e.timeMs===t.timeMs,p_e=ue.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:y,tabIndex:x,onToggle:h,onFocus:g}){let v=t.key,b=s==="steps",k=ED(t,"tools"),S=t.enabled===!1,w=B2[o]||B2.none,_=`${v}${S?" \xB7 disabled":""}`,A=ue.default.createElement("span",{"data-testid":"scenario-step",title:w.title,style:{...Ur(11,w.color),fontWeight:700,flexShrink:0}},w.text),C={fontFamily:W,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"};return ue.default.createElement("div",{"data-testid":"scenario-row","data-scenario-key":v,"data-step":o,"data-nav":v,"data-current":a?"true":void 0,role:"button","aria-expanded":i,tabIndex:x,title:b&&!l?`${_} \xB7 ${t.prompt||""}`:void 0,onClick:()=>h(v),onKeyDown:E=>{(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),h(v))},onFocus:E=>g(v,E),className:i?void 0:"hover:bg-[var(--color-hover)]",style:{display:"grid",gridTemplateColumns:u,gap:ND[s]??ND.steps,padding:b?"6px 12px":"10px 12px",alignItems:b?"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:S?.5:1}},b?ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},A,l&&ue.default.createElement("span",{style:{...Ur(11),minWidth:0,maxWidth:"40%",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},_),ue.default.createElement("span",{title:l?t.prompt:void 0,style:{flex:1,minWidth:0,fontSize:13,color:t.orphan?"var(--color-text-muted)":"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},t.prompt)):ue.default.createElement(ue.default.Fragment,null,ue.default.createElement("div",{style:{minWidth:0}},ue.default.createElement("div",{style:{...Ur(11),marginBottom:2,display:"flex",gap:6}},A,ue.default.createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},_)),ue.default.createElement("div",{style:{fontSize:13,lineHeight:"18px",color:"var(--color-text-primary)",textWrap:"pretty"}},t.prompt)),ue.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:4,alignContent:"flex-start",minWidth:0}},k.map(E=>ue.default.createElement("span",{key:E,style:C},E)),k.length===0&&ED(t,"contains").map(E=>ue.default.createElement("span",{key:`contains-${E}`,style:C,title:"the answer must contain this"},`contains: ${E}`)))),n.map(E=>ue.default.createElement(s_e,{key:E,result:r?.[E],expects:k,pending:(d||p)&&c,compact:b})),ue.default.createElement(XJ,{entry:f,compact:b,testId:"scenario-row-cost",tokens:m}),b&&ue.default.createElement("span",{"data-testid":"scenario-row-time",title:"the slowest answer across the models",style:{...Ur(11),textAlign:"right",whiteSpace:"nowrap"}},S2(y)))},d_e);function QJ({rows:e=AD,columns:t=AD,run:r=null,resultsByKey:n=o_e,runKeys:o=FJ,running:a=!1,loading:i=!1,stepsByKey:s=null,currentKey:l=null,bars:u=AD,detail:c="steps",showKey:d=!0,collapsedGroups:p=FJ,onToggleGroup:f,openKey:m=null,onToggleRow:y,following:x=!1,onStopFollowing:h,emptyLabel:g,maxHeight:v=null,renderDetail:b,boxRef:k=null,testId:S="scenario-matrix"}){let w=t.length===0?"tools":c,_=w==="steps",A=n_e(w,t.length),C=ND[w],E=_?PZ(t.length):MZ(t.length),I=ce=>o.has(ce.key)||!!n[ce.key],J=ce=>r?i?I(ce)?"loading":"skipped":h2(n[ce.key],t,{inRun:I(ce),running:a}):"none",$=ce=>s?.[ce.key]??J(ce),U=new Map(e.map(ce=>[ce.key,t_e(r,ce.key,n[ce.key])])),N=[...U.values()].some(ce=>ce?.estimated),T=new Map(e.map(ce=>[ce.key,BZ(n[ce.key],t)])),D=eD(n,t),O=e.some(ce=>ce.group),j=[];e.forEach(ce=>{let Ue=ce.group||"",Je=j.find(nt=>nt.name===Ue);Je||(Je={name:Ue,rows:[]},j.push(Je)),Je.rows.push(ce)});let M=ce=>(ce||O)&&p.has(ce),[H,G]=(0,ue.useState)(null),z=[];j.forEach(ce=>{(ce.name||O)&&z.push(`group:${ce.name}`),M(ce.name)||ce.rows.forEach(Ue=>z.push(Ue.key))});let V=new Set(z),K=[H,m,l].find(ce=>ce!=null&&V.has(ce))??z[0]??null,ie=(0,ue.useRef)(null),Ie=(0,ue.useRef)(null),[ge,de]=(0,ue.useState)(50),[R,ee]=(0,ue.useState)(0),L=(0,ue.useRef)(ge),te=(0,ue.useRef)({});Vs(()=>{L.current=ge,te.current={onToggleRow:y,onStopFollowing:h}});let F=(0,ue.useCallback)(ce=>{ie.current=ce,k&&(k.current=ce)},[k]),P=(0,ue.useCallback)(ce=>te.current.onToggleRow?.(ce),[]),Y=(0,ue.useCallback)((ce,Ue)=>{G(ce);let Je=ie.current;Je&&!Je.contains(Ue.relatedTarget)&&te.current.onStopFollowing?.()},[]),B=()=>h?.();Vs(()=>{let ce=Ie.current;if(!ce)return;let Ue=()=>{let nt=ce.offsetHeight;nt&&de(Tt=>Tt===nt?Tt:nt)};if(Ue(),typeof ResizeObserver>"u")return;let Je=new ResizeObserver(Ue);return Je.observe(ce),()=>Je.disconnect()},[]);let oe=(0,ue.useCallback)(ce=>{if(!ce){ee(0);return}let Ue=()=>ee(ce.offsetHeight);Ue();let Je=typeof ResizeObserver>"u"?null:new ResizeObserver(Ue);Je?.observe(ce);let nt=ie.current,Tt=ce.previousElementSibling;if(nt&&Tt?.hasAttribute("data-scenario-key")){let Lt=Tt.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');nt.scrollTo({top:ZZ({rowTop:Tt.offsetTop,headerHeight:L.current,groupRowHeight:Lt?.offsetHeight??0}),behavior:"smooth"})}return()=>{Je?.disconnect(),ee(0)}},[]),ne=(0,ue.useRef)(null),he=(0,ue.useRef)(null),tt=(0,ue.useRef)(0);Vs(()=>{let ce=ie.current;if(!ce||!x||!l){ne.current=l;return}let Ue=ce.querySelector(`[data-scenario-key="${L2(l)}"]`);if(!Ue)return;let Je=XZ({rowTop:Ue.offsetTop,headerHeight:ge,boxHeight:ce.clientHeight});if(Math.abs(Je-ce.scrollTop)>4){let nt=Date.now(){let Ue=ie.current;if(!Ue||!ce)return;let Je=ce.hasAttribute("data-scenario-key")?ce.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,nt=L.current+(Je?.offsetHeight??0);ce.offsetTop-ntUe.scrollTop+Ue.clientHeight&&(Ue.scrollTop=ce.offsetTop+ce.offsetHeight-Ue.clientHeight)};return ue.default.createElement("div",{ref:F,"data-testid":S,"data-detail":w,onWheel:B,onTouchMove:B,onKeyDown:ce=>{if(i_e(ce.target))return;let Ue=ie.current;if(Ue){if(ce.key==="ArrowDown"||ce.key==="ArrowUp"){let Je=[...Ue.querySelectorAll("[data-nav]")];if(!Je.length)return;let nt=Je.indexOf(ce.target);nt<0&&(nt=Je.findIndex(Lt=>Lt.hasAttribute("data-scenario-key")&&Lt.parentElement?.contains(ce.target)));let Tt=nt<0?Je[0]:Je[Math.min(Math.max(nt+(ce.key==="ArrowDown"?1:-1),0),Je.length-1)];ce.preventDefault(),h?.(),Tt&&Tt!==ce.target&&(Tt.focus({preventScroll:!0}),it(Tt));return}ce.key==="Escape"&&m&&(y?.(m),Ue.querySelector(`[data-scenario-key="${L2(m)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:v?R?`calc(${UJ(v)} + ${R}px)`:UJ(v):void 0}},ue.default.createElement("div",{style:{minWidth:E}},ue.default.createElement("div",{ref:Ie,style:{display:"grid",gridTemplateColumns:A,gap:C,padding:"8px 12px",alignItems:"end",position:"sticky",top:0,zIndex:2,backgroundColor:"var(--color-surface)",backgroundImage:"linear-gradient(var(--color-muted), var(--color-muted))"}},ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},_?"Step":"Scenario"),!_&&ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(ce=>{let{short:Ue,provider:Je}=TD(r,ce),nt=u.find(Tt=>Tt.label===ce);return ue.default.createElement("span",{key:ce,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:ce},ue.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},Ue),ue.default.createElement("span",{style:Ur(10)},Je||" "),nt&&nt.passed!=null&&nt.total!=null&&ue.default.createElement(Mu,{passed:nt.passed,total:nt.total,height:4,valueWidth:48,style:{marginTop:3}}),ue.default.createElement(z2,{metrics:D[ce],testId:"scenario-column-totals",title:"this model's answers' time added up, and its input\u2192output tokens, over the results in",style:{marginTop:2}}))}),ue.default.createElement("span",{style:{textAlign:"right"},title:"What the scenario cost across every model, and what judging it cost; under it, its input\u2192output tokens"},ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Cost")),_&&ue.default.createElement("span",{style:{textAlign:"right"},title:"The slowest answer across the run's models; a group's add up"},ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Time"))),j.map(ce=>{let Ue=ce.name,Je=M(Ue),nt=`group:${Ue}`,Tt=ce.rows.filter(I),Lt=B2[$Z(ce.rows.map($))]||B2.none,Hr=eD(n,t,ce.rows.map(yt=>yt.key)),Io=t.map(yt=>{let eo=Hr[yt];if(!Tt.length)return{label:yt,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:eo};if(i)return{label:yt,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:eo};let xs=Tt.filter(pt=>Al(n[pt.key]?.[yt]));if(a&&!xs.length)return{label:yt,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:eo};let bs=xs.filter(pt=>Cl(n[pt.key][yt])).length,be=Tt.length,rt=be&&bs===be?"var(--color-success-text)":bs===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:yt,text:`${Kn(bs,be)} passed`,color:rt,weight:600,metrics:eo}}),vs=r_e(ce.rows.map(yt=>U.get(yt.key))),Mi=FZ(ce.rows.map(yt=>T.get(yt.key)));return ue.default.createElement("div",{key:Ue||"__ungrouped","data-group":Ue},(Ue||O)&&ue.default.createElement("div",{"data-testid":"scenario-group-row","data-group":Ue,"data-collapsed":Je?"true":"false","data-nav":nt,role:"button","aria-expanded":!Je,tabIndex:K===nt?0:-1,onClick:()=>f?.(Ue),onKeyDown:yt=>{(yt.key==="Enter"||yt.key===" "||yt.key==="ArrowLeft"&&!Je||yt.key==="ArrowRight"&&Je)&&(yt.preventDefault(),f?.(Ue))},onFocus:yt=>Y(nt,yt),style:{display:"grid",gridTemplateColumns:A,gap:C,padding:"7px 12px",alignItems:"center",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",cursor:"pointer",position:"sticky",top:ge,zIndex:1}},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},ue.default.createElement(Na,{kind:"chevron",open:!Je}),ue.default.createElement("span",{"data-testid":"scenario-group-step",title:Lt.title,style:{...Ur(11,Lt.color),fontWeight:700,flexShrink:0}},Lt.text),ue.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Ue||"ungrouped"),_&&ue.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"}},`\xB7 ${St(ce.rows.length,"scenario")}`)),!_&&ue.default.createElement("span",{style:Ur(11)},St(ce.rows.length,"scenario")),Io.map(yt=>ue.default.createElement("span",{key:yt.label,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},ue.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:yt.weight,color:yt.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},yt.text),ue.default.createElement(z2,{metrics:yt.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),ue.default.createElement(XJ,{entry:vs,compact:_,testId:"scenario-group-cost",tokens:Mi}),_&&ue.default.createElement("span",{"data-testid":"scenario-group-time",title:"the group's scenarios' times added up",style:{...Ur(11),textAlign:"right",whiteSpace:"nowrap"}},S2(UZ(ce.rows,n,t)))),!Je&&ce.rows.map(yt=>{let eo=m===yt.key;return ue.default.createElement("div",{key:yt.key},ue.default.createElement(p_e,{scenario:yt,results:n[yt.key],columns:t,step:$(yt),current:yt.key===l,open:eo,detail:w,showKey:d,grid:A,inSelection:I(yt),running:a,loading:i,costEntry:U.get(yt.key)??null,tokens:T.get(yt.key)??null,timeMs:RI(n[yt.key],t),tabIndex:K===yt.key?0:-1,onToggle:P,onFocus:Y}),eo&&ue.default.createElement("div",{ref:oe},b?.(yt)))}))}),e.length===0&&ue.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)"}},g||"[+] nothing failed in this group"),N&&ue.default.createElement("div",{style:{...Ur(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},al)))}function f_e(e){let t=[];e.duration_ms!=null&&t.push(zn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${On((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=$2(e);return r&&t.push(r),t.join(" \xB7 ")}function m_e({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=TD(t,e),i=ue.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:e},a),s=(h,g)=>ue.default.createElement("div",{"data-testid":"scenario-result-detail",style:{background:"var(--color-card)",border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0}},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"8px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},i,g),ue.default.createElement("div",{style:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:10}},h));if(!r||!Al(r))return s(ue.default.createElement("span",{style:Ur(11)},o?"waiting for this replay\u2026":"not part of this run"),ue.default.createElement(Ce,{tone:"muted"},o?"pending":"no result"));let u=Cl(r)?"success":"error",c=KJ(r.tool_calls,n),d=r.diagnosis||{},p=d.judge||{},f=r.fault||(r.status==="errored"?"run_error":null),m=[d.summary,d.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",y=Object.entries(r.scores||{}),x=f_e(r);return s(ue.default.createElement(ue.default.Fragment,null,ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:W,fontSize:11}},ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"tools"),ue.default.createElement(ZJ,{calls:c,empty:"none called",style:{display:"contents"}})),f&&ue.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"}},ue.default.createElement("span",{style:{fontFamily:W,fontWeight:700}},`[!] ${Nh(f)}`),m?` \u2014 ${m}`:"",p.suggested_tool?.name&&ue.default.createElement("div",{style:{marginTop:4,fontFamily:W,fontSize:11}},`suggested tool: ${p.suggested_tool.name}${p.suggested_tool.description?` \u2014 ${p.suggested_tool.description}`:""}`),p.instruction_change&&ue.default.createElement("div",{style:{marginTop:4,fontStyle:"italic"}},`instruction change: \u201C${p.instruction_change}\u201D`)),r.output?ue.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):ue.default.createElement("div",{style:Ur(11)},"answer not retained for this run"),y.length>0&&ue.default.createElement("div",{style:{...Ur(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>ue.default.createElement("span",{key:h},Nh(h)," ",ue.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":aa(g)))))),ue.default.createElement(ue.default.Fragment,null,ue.default.createElement(Ce,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${aa(r.score)}`),x&&ue.default.createElement("span",{style:{marginLeft:"auto",...Ur(11)},title:YJ(r)},x),r.agent_run_id&&ue.default.createElement(sd,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:x?void 0:{marginLeft:"auto"}})))}function RJ({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0,markdownUrl:u=null}){let c=ED(e,"tools"),d=n[e.key]||{},p=r.some(m=>d[m]),f=a||p;return ue.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"12px 12px 14px"},"data-testid":"scenario-drilldown"},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10,flexWrap:"wrap"}},ue.default.createElement("span",{style:Ur(11)},e.key),ue.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ue.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},c.join(" or ")||"\u2014"),t&&p&&ue.default.createElement(kl,{url:f2(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&&ue.default.createElement("span",{style:{marginLeft:t&&p&&u?0:"auto",display:"flex",alignItems:"center",gap:14}},ue.default.createElement("button",{type:"button",onClick:m=>{m.stopPropagation(),s?.(e)},title:e.enabled===!1?"Enable this scenario":"Disable this scenario",style:{background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:W,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ue.default.createElement(Gr,{onClick:()=>i?.(e),title:"Run only this scenario under the selected models"},"re-run scenario"))),e.notes&&ue.default.createElement("div",{style:{fontSize:12,fontStyle:"italic",color:"var(--color-text-secondary)",marginBottom:10}},e.notes),e.catalogChanged&&ue.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginBottom:10}},"This run used an earlier version of this question. Re-running uses the current version."),t?f?ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(m=>ue.default.createElement(m_e,{key:m,label:m,run:t,result:d[m],expects:c,running:o}))):ue.default.createElement("div",{style:Ur(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ue.default.createElement("div",{style:Ur(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function eQ({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):lf(w.scenario_keys||[],u),[m,y]=(0,ue.useState)("all"),x=t.length>1,h=x?m:"all",g=x?xZ(e,i,w=>Lu(a,w)):e,v=GI(g,h),b=x?bZ(g,t):{},k=w=>zJ({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:N2(),labelFor:_=>Lu(a,_)}),S=w=>{let _=St((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let A=pd(w.models||[]);if(t.length<=1||A.length===0)return _;let E=A.length>=t.length?t.length===2?"both models":"all models":A.map(I=>bn(I).short).join(", ");return`${_} \xB7 ${E}`};return ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},ue.default.createElement(kl,{url:f2(p,{part:"fix_items",model:h}),label:h==="all"?"Copy What to fix as Markdown":`Copy What to fix for ${bn(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"}}),x&&ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ue.default.createElement("span",{style:Ur(11)},"for"),ue.default.createElement(Ln,{square:!0,mono:!0,selected:h==="all",onClick:()=>y("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>ue.default.createElement(Ln,{key:w,square:!0,mono:!0,selected:h===w,onClick:()=>y(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${bn(w).short} ${b[w]??0}`))),v.length===0&&ue.default.createElement(tn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${bn(h).short}`),ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},v.map((w,_)=>{let A=w.kind==="instruction",C=A?"info":"error",E=[],I=new Set;(w.tools||[]).forEach(T=>{let D=typeof T=="string"?T:T?.name;!D||I.has(D)||(I.add(D),E.push({name:D,note:typeof T=="object"&&(T.note||T.server?.name)||null}))});let J=w.server,$=J?.status==="enabled",U=r||"the agent",N=c?f(w):null;return ue.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}},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ue.default.createElement(Na,{kind:A?"info":"fault"}),ue.default.createElement(Ce,{tone:C},`${Nh(w.fault)}${w.count>1?` \xD7${w.count}`:""}`),o&&(w.scenario_keys||[]).length>0?ue.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:{...Ur(11),background:"none",border:0,padding:0,cursor:"pointer",color:"var(--color-text-link, var(--color-text-primary))",textDecoration:"underline",textUnderlineOffset:2}},S(w)):ue.default.createElement("span",{style:Ur(11)},S(w))),w.recommendation&&ue.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},w.recommendation),w.quote&&ue.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"),E.length>0&&ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},ue.default.createElement(We,{size:10,color:"var(--color-text-muted)"},w.tools_label||"tools"),ue.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},E.map(T=>ue.default.createElement("span",{key:T.name,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 8px",borderRadius:6,border:"1px solid var(--color-border)",fontFamily:W,fontSize:11,maxWidth:"100%"}},ue.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},T.name),T.note&&ue.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:T.note},T.note))))),J&&ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",fontSize:12,color:"var(--color-text-cell)"}},ue.default.createElement("span",null,"served by"),ue.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},J.name||J.key),ue.default.createElement(Ce,{tone:$?"success":"warning",size:10,style:{padding:"1px 6px"}},$?`enabled for ${U}`:`${J.status||"unknown"} \xB7 not enabled for ${U}`)),w.note&&ue.default.createElement("div",{style:{fontSize:12,lineHeight:"18px",color:"var(--color-text-secondary)",textWrap:"pretty"}},w.note),ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",paddingTop:2,flexWrap:"wrap"}},w.action?.path&&ue.default.createElement(pe,{size:"sm",onClick:()=>n?.(w.action.path)},w.action.label),w.action?.hint&&ue.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"}},w.action.hint),N&&(N.keys.length?ue.default.createElement(Gr,{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")}`):ue.default.createElement("span",{style:{...Ur(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")),ue.default.createElement(F0,{build:()=>k(w),style:{marginLeft:"auto"}}),ue.default.createElement(kl,{text:w.markdown,testId:"copy-fix-markdown",title:"Copy this fix as Markdown, for an issue or a pull request"}),ue.default.createElement(wD,{item:w,evaluation:s,run:a})))})))}var tQ=e=>{let{results:t,fix_items:r,...n}=e;return n},g_e={keys:[],dropped:[]},PD={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:W,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},yf={border:"1px solid var(--color-border-light)",borderRadius:10},h_e=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),rQ=()=>typeof localStorage<"u"?localStorage:null,nQ=()=>typeof document<"u"&&document.visibilityState==="hidden";function MD({evaluation:e,modelProviders:t,onChanged:r,onDelete:n,deleting:o=!1,initialRunId:a=null,onRunSelected:i}){let s=e.id,l=e.agent?.name||"Agent",[u,c]=(0,Se.useState)(!1),[d,p]=(0,Se.useState)(null),[f,m]=(0,Se.useState)(e.scenarios||[]),[y,x]=(0,Se.useState)(e.scenario_groups||[]),[h,g]=(0,Se.useState)(e.latest_run?[e.latest_run]:[]),[v,b]=(0,Se.useState)(null),[k,S]=(0,Se.useState)(a??e.latest_run?.id??null),[w,_]=(0,Se.useState)({}),[A,C]=(0,Se.useState)({}),[E,I]=(0,Se.useState)(null),[J,$]=(0,Se.useState)((e.compare_models||[]).join(", ")),U=(0,Se.useMemo)(()=>t===void 0?[]:t??J1,[t]),N=xc(U),T=(0,Se.useMemo)(()=>P0(N,{providers:U}),[N,U]),[D,O]=(0,Se.useState)(null),[j,M]=(0,Se.useState)(!1),[H,G]=(0,Se.useState)([]),[z,V]=(0,Se.useState)(""),[K,ie]=(0,Se.useState)(!1),[Ie,ge]=(0,Se.useState)(""),[de,R]=(0,Se.useState)(null),[ee,L]=(0,Se.useState)(null),[te,F]=(0,Se.useState)(!1),[P,Y]=(0,Se.useState)(null),[B,oe]=(0,Se.useState)(!0),[ne,he]=(0,Se.useState)(()=>{let me=e.scenarios||[],et=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return QI(me,new Set(O0(et,me)))}),[tt,it]=(0,Se.useState)(()=>new Map),[ve,ce]=(0,Se.useState)(()=>IZ(rQ())),[Ue,Je]=(0,Se.useState)("suite"),nt=(0,Se.useRef)(null),Tt=(0,Se.useRef)(null),Lt=(0,Se.useRef)(null),Hr=(0,Se.useRef)(new Map),Io=(0,Se.useRef)(new Map),vs=(0,Se.useRef)({}),Mi=(0,Se.useRef)(w),yt=(0,Se.useRef)(k),eo=(0,Se.useRef)(null),xs=I0(nt),bs=xs-AZ,be=xs===0||bs>=EZ,rt=xs===0?0:bs-(be?XI+ZI:0),pt=ve??"steps",Qt=rt===0||rt>=OZ,Wn=(0,Se.useCallback)(async()=>{let me=await fetch(`/api/evaluations/${s}/scenarios`);if(!me.ok)return;let et=await me.json();m(et.scenarios||[]),x(et.groups||[])},[s]),uo=(0,Se.useCallback)(async()=>{try{let me=await fetch(`/api/evaluations/${s}`);if(!me.ok)return p(`Could not load this suite (HTTP ${me.status})`),null;let Ct=(await me.json()).evaluation||{};return m(Ct.scenarios||[]),x(Ct.scenario_groups||[]),g(Ct.runs||[]),b(Number.isFinite(Ct.run_count)?Ct.run_count:null),p(null),Ct}catch(me){return p(`Could not load this suite: ${me.message}`),null}finally{c(!0)}},[s]);Vs(()=>{Mi.current=w,yt.current=k});let nn=(0,Se.useCallback)(me=>{if(!me)return Promise.resolve(null);if(Hr.current.has(me))return Hr.current.get(me);let et=(async()=>{try{let Ct=await fetch(`/api/evaluations/${s}/runs/${me}`);if(!Ct.ok)return C(Js=>({...Js,[me]:`HTTP ${Ct.status}`})),null;let lr=(await Ct.json()).run;if(!lr)return C(Js=>({...Js,[me]:"no run in the response"})),null;C(Js=>{if(!(me in Js))return Js;let{[me]:_s,...Ed}=Js;return Ed});let jo=Mi.current[lr.id],{results:Of,changed:qu}=VZ(jo?.results,lr.results);if(!(!!jo&&!qu&&jo.status===lr.status&&jo.completed_at===lr.completed_at&&(jo.fix_items?.length??0)===(lr.fix_items?.length??0))){let Js=tQ(lr);_(_s=>({..._s,[lr.id]:{...lr,results:Of}})),g(_s=>_s.some(Ed=>Ed.id===lr.id)?_s.map(Ed=>Ed.id===lr.id?{...Ed,...Js}:Ed):_s),I(_s=>_s&&_s.id===lr.id?{..._s,...Js}:_s)}return lr}catch(Ct){return C(rr=>({...rr,[me]:Ct.message})),null}finally{Hr.current.delete(me)}})();return Hr.current.set(me,et),et},[s]),Oa=me=>{I(tQ(me)),S(me.id),Y(null)};(0,Se.useEffect)(()=>{let me=!1;return(async()=>{let et=await uo();if(me)return;let Ct=et?.runs?.[0]?.id??null,rr=!!(a&&et?.runs?.some(qu=>qu.id===a));if(a&&!rr){let qu=await nn(a);if(me)return;if(qu){Oa(qu);return}}let lr=rr?a:null,jo=yt.current,Of=lr||(jo&&et?.runs?.some(qu=>qu.id===jo)?jo:Ct);S(Of),Of&&nn(Of)})(),()=>{me=!0}},[uo,nn]);let Pa=e.latest_run?.id??null;(0,Se.useEffect)(()=>{!Pa||h.some(me=>me.id===Pa)||uo()},[Pa,h,uo]);let ws=w[k]||h.find(me=>me.id===k)||(E?.id===k?E:null),co=h[0]||null,Uu=fd(ws)?ws.id:fd(co)?co.id:null;(0,Se.useEffect)(()=>{if(!Uu)return;let me=!1,et=()=>KZ(Mi.current[Uu]?.results?.length??0),Ct=lr=>{clearTimeout(eo.current),eo.current=setTimeout(async()=>{if(me||nQ())return;let jo=null;try{jo=await nn(Uu)}catch{jo=null}if(!me){if(jo&&!fd(jo)){await uo(),r?.();return}Ct(et())}},lr)},rr=()=>{document.visibilityState==="visible"&&Ct(0)};return nQ()||Ct(et()),typeof document<"u"&&document.addEventListener("visibilitychange",rr),()=>{me=!0,clearTimeout(eo.current),typeof document<"u"&&document.removeEventListener("visibilitychange",rr)}},[Uu,nn,uo,r]);let Ss=(0,Se.useCallback)(async()=>{try{let me=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!me.ok)return;let et=await me.json(),Ct=x2(et.sandboxes);G(Ct),V(rr=>b2(rr,Ct))}catch{}},[]);(0,Se.useEffect)(()=>{Ss()},[Ss]);let Wu=ud(J),to=async me=>{M(!0),O(null);try{let et=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(SZ(me,Wu,z))}),Ct=await et.json().catch(()=>({}));if(!et.ok)throw Ct.code==="sandbox_refused"&&Ss(),new Error((Ct.errors||[Ct.error]).filter(Boolean).join(", ")||"Run failed to start");let rr=Ct.run;g(lr=>[rr,...lr.filter(jo=>jo.id!==rr.id)]),b(lr=>lr==null?null:lr+1),_(lr=>({...lr,[rr.id]:{...rr,results:[]}})),S(rr.id),Y(null),oe(!0),Je("suite"),r?.()}catch(et){O(et.message)}finally{M(!1)}},Ol=me=>[me,co?.id,k].slice(0,TZ),Hh=me=>{S(me),Y(null),_(et=>rD(et,Ol(me))),w[me]||nn(me)},pb=me=>{Hh(me.id),i?.(me.id)};(0,Se.useEffect)(()=>{if(!a||a===k)return;if(h.some(et=>et.id===a)||E?.id===a){Hh(a);return}if(!u)return;let me=!1;return(async()=>{let et=await nn(a);me||!et||(_(Ct=>rD(Ct,Ol(et.id))),Oa(et))})(),()=>{me=!0}},[a]);let fb=async me=>{me.id&&(await fetch(`/api/evaluations/${s}/scenarios/${me.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:me.enabled===!1}})}),await Wn())},SA=async()=>{R(null);let me=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:Ie})}),et=await me.json().catch(()=>({}));if(!me.ok){R((et.errors||[et.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(et.scenarios||[]),x(et.groups||[]),ie(!1),r?.()},Qe=ws,Ma=!!Qe&&!Array.isArray(Qe.results),qh=Qe?A[Qe.id]:null,po=(0,Se.useMemo)(()=>(Qe?.results||[]).filter(me=>me&&me.scenario_key),[Qe]),Kh=q0(Qe,po,e).join("\0"),ya=(0,Se.useMemo)(()=>Kh?Kh.split("\0"):[],[Kh]),Ia=(0,Se.useMemo)(()=>GZ(po,me=>Lu(Qe,me),vs.current),[po,Qe]);Vs(()=>{vs.current=Ia});let Nf=(0,Se.useMemo)(()=>new Set(O0(Qe,f)),[Qe,f]),Da=fd(Qe),Vh=Th(Qe,ya,f),bd=qJ(Qe,po,ya,f),wd=(0,Se.useCallback)(me=>Nf.has(me.key)||!!Ia[me.key],[Nf,Ia]),fo=(0,Se.useMemo)(()=>eZ(f,Ia,Io.current),[f,Ia]),Pl=(0,Se.useMemo)(()=>{let me={};return fo.forEach(et=>{let Ct=wd(et);me[et.key]=Ma?Ct?"loading":"skipped":Qe?h2(Ia[et.key],ya,{inRun:Ct,running:Da}):"none"}),me},[fo,wd,Ia,ya,Qe,Ma,Da]),mb=(0,Se.useCallback)(me=>Pl[me.key],[Pl]),Gh=(0,Se.useMemo)(()=>Da?jZ(fo.map(me=>({key:me.key,step:Pl[me.key]}))):null,[Da,fo,Pl]),Sd=(0,Se.useCallback)(me=>ya.some(et=>{let Ct=Ia[me.key]?.[et];return Al(Ct)&&!Cl(Ct)}),[ya,Ia]),gb=(0,Se.useMemo)(()=>fo.filter(Sd).length,[fo,Sd]),kd=!!Qe&&Qe.status==="complete"&&!Ma,Yh=(0,Se.useMemo)(()=>LZ(fo.filter(me=>!ee||(me.group||"")===ee).filter(me=>!te||Sd(me)),mb,kd?Ue:"suite"),[fo,ee,te,Sd,mb,kd,Ue]),kA=new Set(fo.filter(wd).map(me=>me.group).filter(Boolean)).size,_d=po.filter(Al).length,hb=po.filter(me=>Al(me)&&!Cl(me)).length,_A=Vh*Math.max(ya.length,1),Xh=new Set(po.filter(me=>Al(me)&&!Cl(me)).map(me=>me.scenario_key)).size,Tf=Qe?.scores?._verdict||null,Ml=Object.prototype.hasOwnProperty.call(Qe?.scores||{},"_judge_label")?Qe.scores._judge_label||"rules":Tf?.judge&&Tf.judge!=="pass rate"?Tf.judge:e.judge_model||"rules",Cd=(0,Se.useMemo)(()=>Qe?VJ(Qe,po):[],[Qe,po]),Zh=(0,Se.useMemo)(()=>Ma?g_e:_Z(po,f),[Ma,po,f]),Jh=Object.keys(Qe?.scores||{}).filter(me=>!me.startsWith("_")),Hu=(0,Se.useCallback)(me=>HJ(me,me.id===Qe?.id?po:(w[me.id]?.results||[]).filter(et=>et&&et.scenario_key),e,f),[Qe,po,w,e,f]),yb=(0,Se.useCallback)((me,et,Ct)=>{if(!et||et.status!=="complete"||me.status!=="complete")return A0(me,et,{olderNumber:Ct});let rr=q0(me,me.id===Qe?.id?po:[],e),lr=q0(et,[],e),jo=Th(et,lr,f)===Th(me,rr,f)&&lr.length===rr.length;return A0(me,et,{olderNumber:Ct,comparable:jo})},[Qe,po,e,f]),le=(0,Se.useMemo)(()=>A2({runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,previousRun:e.previous_run,barsFor:Hu,deltaFor:yb}),[h,v,e,l,Qe?.id,Hu,yb]),De=le.find(me=>me.run.id===Qe?.id)||null,st=De?.number??(Number.isFinite(Qe?.number)?Qe.number:null),zt=De?.bars??(Qe?Hu(Qe):[]),kn=af(h,v),ni=!!Qe&&co?.id===Qe.id,Do=fd(co)&&co.id!==Qe?.id?co:null,ja=u||f.length>0,ks=ja?f.length:e.scenario_count??0,Ad=ja?f.filter(me=>me.enabled!==!1&&(!ee||(me.group||"")===ee)).length:ks,nte=`Run ${St(Ad,"scenario")}${Wu.length?` \xD7 ${St(Wu.length,"model")}`:""}`,ote=`@${l} \xB7 ${St(ks,"scenario")}${y.length?` in ${St(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?h.length?St(kn,"run"):"no runs yet":"loading\u2026"}`,vb=Qe&&Qe.status==="complete"?`/evaluations/${s}/runs/${Qe.id}/report`:null,CA=vb?Re(mh(vb).markdown):null,ate=[...new Set([...y,...fo.map(me=>me.group).filter(Boolean)])],ite=[{label:`All ${fo.length||ks}`,value:null}].concat(ate.map(me=>({label:ja?`${me} ${fo.filter(et=>et.group===me).length}`:me,value:me}))),Qh=(0,Se.useMemo)(()=>{let me=[...new Set(fo.map(et=>et.group||""))];return me.some(Boolean)?me:[]},[fo]),ste=Qh.some(me=>!ne.has(me)),AA=fo.length===0,lte=te?"[+] nothing failed in this group":"[ ] no scenarios";(0,Se.useEffect)(()=>{oe(!0),it(new Map),Je("suite"),Y(null)},[Qe?.id]),(0,Se.useEffect)(()=>{he(QI(f,Nf))},[Qe?.id,u]);let Aj=(0,Se.useRef)(Qe?.id??null);(0,Se.useEffect)(()=>{if(Aj.current!==(Qe?.id??null)){Aj.current=Qe?.id??null;return}!Da||!B||he(me=>{let et=new Set(me);return Qh.forEach(Ct=>{if(tt.has(Ct))return;let rr=fo.filter(lr=>(lr.group||"")===Ct&&wd(lr));rr.length&&(rr.every(lr=>Pl[lr.key]==="passed")&&et.add(Ct),rr.some(lr=>lr.key===Gh)&&et.delete(Ct))}),h_e(et,me)?me:et})},[Qe?.id,Gh,_d,B,Da]);let ute=me=>{let et=ne.has(me);he(Ct=>{let rr=new Set(Ct);return et?rr.delete(me):rr.add(me),rr}),it(Ct=>new Map(Ct).set(me,et))},Ej=me=>{he(new Set(me?[]:Qh)),it(new Map(Qh.map(et=>[et,me])))},cte=me=>{ce(me),DZ(rQ(),me)},dte=(0,Se.useCallback)(me=>{Y(et=>et===me?null:me),oe(!1)},[]),pte=(0,Se.useCallback)(()=>oe(!1),[]),fte=(0,Se.useCallback)(me=>{let et=Array.isArray(me)?me[0]:me;if(!et)return;let Ct=fo.find(rr=>rr.key===et)?.group||"";L(null),F(!1),he(rr=>{if(!rr.has(Ct))return rr;let lr=new Set(rr);return lr.delete(Ct),lr}),it(rr=>new Map(rr).set(Ct,!0)),Y(et),oe(!1),requestAnimationFrame(()=>{let rr=Tt.current;rr&&(rr.scrollIntoView({behavior:"smooth",block:"start"}),rr.querySelector(`[data-scenario-key="${L2(et)}"]`)?.focus({preventScroll:!0}))})},[fo]),mte=()=>{Lt.current?.scrollIntoView({behavior:"smooth",block:"start"}),Lt.current?.focus({preventScroll:!0})},gte=()=>{Qe&&(C(me=>{let{[Qe.id]:et,...Ct}=me;return Ct}),nn(Qe.id))},Nj=()=>{co&&pb(co)},Tj=AA&&d?Se.default.createElement(tn,{style:yf},"[!] suite not loaded"):AA&&!u?Se.default.createElement(tn,{style:yf},"loading\u2026"):AA?Se.default.createElement(tn,{style:yf},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):k!=null&&!Qe?Se.default.createElement(tn,{style:yf},"loading\u2026"):qh&&!Array.isArray(Qe.results)?Se.default.createElement(tn,{style:yf},`[!] results not loaded (${qh}) \xB7 `,Se.default.createElement(Gr,{onClick:gte,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):Se.default.createElement(QJ,{rows:Yh,columns:Qe?ya:[],run:Qe,resultsByKey:Ia,runKeys:Nf,running:Da,loading:Ma,stepsByKey:Pl,currentKey:Gh,bars:zt,detail:pt,showKey:Qt,collapsedGroups:ne,onToggleGroup:ute,openKey:P,onToggleRow:dte,following:B,onStopFollowing:pte,emptyLabel:lte,maxHeight:JI,boxRef:Tt,renderDetail:me=>Se.default.createElement(RJ,{scenario:me,run:Qe,columns:Qe?ya:[],resultsByKey:Ia,running:Da,inRun:wd(me),canMutate:!me.orphan,onRerun:et=>to({keys:[et.key]}),onToggleEnabled:fb,markdownUrl:CA})}),Oj={rows:le,runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,onOpen:pb,noteFor:me=>YI(me,f),linkedRun:E,linkedBars:E&&Hu(E)};return Se.default.createElement("div",{ref:nt,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":be?"rail":"strip"},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Se.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},ote),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Se.default.createElement(pe,{size:"sm",onClick:()=>{ge(fJ(f)),R(null),ie(!K)}},K?"Cancel":"Edit scenarios"),Se.default.createElement(D0,{value:J,onChange:$,models:T,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:{...PD,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),H.length>0&&Se.default.createElement("select",{value:z,onChange:me=>V(me.target.value),style:{...PD,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"},Se.default.createElement("option",{value:""},"Run against: agent's own tools"),H.map(me=>Se.default.createElement("option",{key:me.value,value:me.value},`Run against sandbox ${me.label}`))),Se.default.createElement(pe,{variant:"primary",size:"sm",disabled:j||!u||Ad===0,onClick:()=>to(ee?{group:ee}:{}),testId:"suite-run-button"},j?"Starting\u2026":nte))),(d||D)&&Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},d||D),K&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},Se.default.createElement("textarea",{value:Ie,onChange:me=>ge(me.target.value),rows:Math.min(Math.max(f.length+4,6),24),style:{...PD,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},Se.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",Se.default.createElement("code",{style:{fontFamily:W}},"# Heading")," starts a group; ",Se.default.createElement("code",{style:{fontFamily:W}},"| tools: a, b"),", ",Se.default.createElement("code",{style:{fontFamily:W}},"| contains: x"),", ",Se.default.createElement("code",{style:{fontFamily:W}},"| not_contains: y")," set expectations. Keep a scenario's ",Se.default.createElement("code",{style:{fontFamily:W}},"key")," to keep its history."),Se.default.createElement(pe,{variant:"primary",size:"sm",onClick:SA},"Save scenarios")),de&&Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},de)),Qe&&Se.default.createElement(fD,{run:Qe,runNumber:st,latestNumber:kn,isLatest:ni,runningElsewhere:Do,agentName:l,scenarioCount:Vh,groupCount:kA,columns:ya,judgedBy:Ml,bars:zt,delta:De?.delta??null,version:De?.version??null,totals:bd,settledCount:_d,settledFailed:hb,expectedResults:_A,running:Da,loading:Ma,spend:Ni(Qe),fixSummary:{items:Cd.length,faults:Math.max(bd.total-bd.passed,0),scenarios:Xh},selectionLabel:YI(Qe,f),sandboxLabel:T0(Qe),reportPath:vb,rerun:Zh,onSelectLatest:Nj,onWatchLatest:Nj,onJumpToFix:mte,onRerunFailed:()=>to({keys:Zh.keys}),onRunAgain:()=>to(CZ(Qe,f))}),!be&&Se.default.createElement(dD,{layout:"strip",limit:uZ,...Oj}),Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(We,{style:{marginRight:4}},"Scenarios"),ite.map(me=>Se.default.createElement(Ln,{key:me.label,selected:ee===me.value,onClick:()=>L(me.value)},me.label)),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(Ln,{square:!0,mono:!0,selected:pt==="tools",onClick:()=>cte(pt==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},pt==="tools"?"[x] tools":"[ ] tools"),Se.default.createElement(Ln,{square:!0,mono:!0,selected:te,onClick:()=>F(!te),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${te?"[x]":"[ ]"} failed only${!Ma&&gb?` \xB7 ${gb}`:""}`),Qe&&Qe.status!=="failed"&&(kd?Se.default.createElement(Ln,{square:!0,mono:!0,selected:Ue==="failed-first",onClick:()=>Je(Ue==="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"},Ue==="failed-first"?"[x] failed first":"[ ] failed first"):Se.default.createElement(Ln,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Da&&Se.default.createElement(Ln,{square:!0,mono:!0,selected:B,onClick:()=>oe(me=>!me),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},B?"[x] follow":"[ ] follow"),Qh.length>1&&(ste?Se.default.createElement(Gr,{onClick:()=>Ej(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):Se.default.createElement(Gr,{onClick:()=>Ej(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),be?Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${XI}px minmax(0, 1fr)`,gap:ZI,alignItems:"start"}},Se.default.createElement(dD,{layout:"rail",maxHeight:JI,...Oj}),Tj):Tj),Qe&&Qe.status!=="failed"&&Se.default.createElement(JJ,{run:Qe,columns:ya,results:po,scenarioCount:Vh,judgedBy:Ml,verdict:Tf,evaluation:e,onJudgeChanged:r,markdownUrl:CA}),Qe&&Qe.status!=="failed"&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{ref:Lt,tabIndex:-1,style:{display:"flex",alignItems:"baseline",gap:10,outline:"none"},"data-testid":"suite-fix-heading"},Se.default.createElement(We,null,"What to fix"),Se.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},Ma?"loading\u2026":`${St(Cd.length,"item")} \xB7 ${St(Math.max(bd.total-bd.passed,0),"fault")} across ${St(Xh,"scenario")}`)),Ma?Se.default.createElement(tn,{style:{...yf,padding:"14px 12px"}},"[ ] loading\u2026"):Cd.length>0?Se.default.createElement(eQ,{items:Cd,columns:ya,agentName:l,onNavigate:lt,onOpenScenario:fte,run:Qe,results:po,evaluation:e,runNumber:st,scenarios:f,onRerun:me=>to({keys:lf(me.scenario_keys||[],f).keys}),runnableFor:me=>lf(me.scenario_keys||[],f),markdownUrl:CA}):Se.default.createElement(tn,{style:{...yf,padding:"14px 12px"}},Da?"[ ] scoring\u2026":"[+] nothing to fix")),Se.default.createElement(mf,{evaluation:e,run:Qe,keys:Jh.length?Jh:null,spend:Ni(Qe),spendTotal:!0,reportPath:vb,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var at=Z(Q());var ID=[{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}}],oQ=[{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)"},aQ={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},y_e={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function DD({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:ID.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??J1,[o]),y=xc(r&&!m.includes(r)?[...m,r]:m),x=x_e(s.agent_id),h=(0,at.useMemo)(()=>r?P0(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,at.useMemo)(()=>g?P0(y,{providers:m}):x,[y,m,g,x]),b=C=>l(E=>({...E,...C})),k=C=>l(E=>{let I=!!C.trim();if(I===!!E.scenariosText.trim())return{...E,scenariosText:C};let{models:J,restore:$}=RZ(ud(E.compareModels),y,{providers:m,qualify:I,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:M0(J),compareRestore:$}}),S=(C,E)=>b({criteria:E?[...s.criteria,C]:s.criteria.filter(I=>I!==C)}),w=()=>{let C=[...ID,...oQ].filter(E=>s.criteria.includes(E.key)).map(({key:E,type:I,config:J})=>({key:E,type:I,config:J}));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 E=await fetch("/api/evaluations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{agent_id:s.agent_id,name:s.name,sample_size:s.sample_size,judge_kind:s.judgeKind==="judge_defined"?"judge_defined":s.llmJudgePrompt.trim()?"llm":"rules",judge_model:s.judgeModel.trim()||void 0,compare_models:ud(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:w(),scenarios_text:s.scenariosText.trim()||void 0}})}),I=await E.json().catch(()=>({}));if(!E.ok)throw new Error((I.errors||[I.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${E.status})`);a?.(I.evaluation)}catch(E){c(E.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:E=>S(C.key,E.target.checked),style:{accentColor:"var(--color-accent-ui)"}}),C.label);return at.default.createElement(ze,{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(We,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),at.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>b({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(We,{as:"label",style:{display:"block",marginBottom:6}},"Name"),at.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>b({name:C.target.value}),placeholder:"Response Quality",style:{...zu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(We,{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=>b({sample_size:C.target.value}),style:{...zu,width:"100%",fontFamily:W}}))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),at.default.createElement("select",{value:s.judgeKind,onChange:C=>b({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(We,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),at.default.createElement(Rl,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>b({judgeModel:C}),style:{...zu,width:"100%",fontFamily:W,fontSize:12}}),r!==void 0&&at.default.createElement("p",{id:`${f}-judge-provider`,style:aQ},v_e(r,n))),at.default.createElement("div",null,at.default.createElement(We,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),at.default.createElement(D0,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>b({compareModels:C}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...zu,width:"100%",fontFamily:W,fontSize:12}}),at.default.createElement("p",{id:`${f}-compare-hint`,style:aQ},g?"Each model replays the scenarios. Any model name can be typed.":"Compares the agent's generations recorded under each model name. Add scenarios to try any model."))),at.default.createElement("div",null,at.default.createElement(We,{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:{...Lu,width:"100%",fontFamily:H,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:H}},"# Heading")," lines group related tasks so they can be run together; ",at.default.createElement("code",{style:{fontFamily:H}},"| 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(We,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},AD.map(A))),at.default.createElement("div",null,at.default.createElement(We,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},JJ.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(We,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),at.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>b({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Lu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(We,{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=>b({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Lu,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(pe,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&at.default.createElement(pe,{onClick:i},"Cancel"))))}function p_e(e,t){return e?`The judge runs on ${d_e[e]||e}.`:t?"Provider credentials could not be read, so the judge's provider is unknown. Check the provider API keys in Settings.":"No provider has credentials for a judge. Add a provider API key in Settings."}function f_e(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=Z(J());var m_e={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:H,fontSize:12,color:"var(--color-info)"},bo=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:H,fontSize:e,color:t,...r});function g_e({stats:e}){if(!e)return Ae.default.createElement("span",{style:bo()},"\u2014");if(e.skipped)return Ae.default.createElement("div",null,Ae.default.createElement("span",{style:bo(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Ae.default.createElement("div",{style:{...bo(),marginTop:2,textWrap:"pretty"},title:e.reason},v0(e.reason,90)));let t=Number(e.score),r=vo[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${qn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${aa(e.min)} \xB7 max ${aa(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:bo(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",aa(t)),e.source==="telemetry"&&Ae.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:bo(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Ae.default.createElement("div",{style:{...bo(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function h_e({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>MJ({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:S2()});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(Na,{kind:"fault"}),Ae.default.createElement(Ce,{tone:"error"},e.label),Ae.default.createElement("span",{style:bo()},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(We,{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:H,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:bo(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(pe,{size:"sm",onClick:()=>lt(e.action.path)},e.action.label),e.action?.hint&&Ae.default.createElement("span",{style:{...bo(),whiteSpace:"nowrap"}},e.action.hint),Ae.default.createElement(j0,{build:o,style:{marginLeft:"auto"}})))}function ND({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,y]=(0,Ae.useState)(!1),x=(L,G)=>Ae.default.createElement("button",{type:"button",onClick:G,style:m_e},L),h=t.findIndex(L=>L.id===n),g=h>=0?t[h]:t[0],v=g?yh(g,Math.max(h,0),t,r):null,b=Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},x("Evaluations",l),Ae.default.createElement("span",{style:bo(12)},"/"),x(e?.name||"Evaluation",u),Ae.default.createElement("span",{style:bo(12)},"/"),Ae.default.createElement("span",{style:bo(12,"var(--color-text-primary)",{fontWeight:700})},g?`Run #${v}`:"Runs"));if(!e)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Ae.default.createElement("div",null,x("Evaluations",l)),Ae.default.createElement(ze,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!g)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},b,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(ze,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let S=b0(g),w=S.length?S:[null],_=hh(g),k=L=>_.find(G=>G.label===L)||(L==null?_[0]:null),A=g.scores?._verdict,C=Array.isArray(g.scores?._missing_models)?g.scores._missing_models:[],E=gh(g).map(([L,G])=>({key:L,value:G,criterion:x0(e,L)})),I=L=>E.filter(G=>Sl(G.criterion)===L).length,Q=$I.filter(L=>I(L.id)>0),$=L=>w.some(G=>{let W=ef(L.value,G);return W&&(W.skipped||W.score!=null&&W.score<.7)}),F=E.filter(L=>(p==="all"||Sl(L.criterion)===p)&&(!m||$(L))),N=$I.map(L=>({...L,rows:F.filter(G=>Sl(G.criterion)===L.id)})).filter(L=>L.rows.length),O=c2(e,{...g,number:v}),j=Ni(g),T=xo(g.completed_at||g.created_at),D=g.status==="complete"&&g.samples_evaluated?` \xB7 ${qn(g.samples_passed||0,g.samples_evaluated)} passed`:"",M={fontFamily:H,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},K={padding:"10px 12px",verticalAlign:"top"},V={padding:"7px 12px",verticalAlign:"middle"};return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},b,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 #${v}`),Ae.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${T} \xB7 @${e.agent?.name||"agent"} \xB7 ${Rp(e,g)}${D}`)),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((L,G)=>Ae.default.createElement(Ln,{key:L.id,square:!0,mono:!0,selected:L.id===g.id,onClick:()=>i?.(L),title:`${L.status} \xB7 ${xo(L.completed_at||L.created_at)}`},`#${yh(L,G,t,r)}`)),Ae.default.createElement(pe,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ae.default.createElement(RI,{spend:j,judgedBy:mh(e,g)}),g.status==="failed"?Ae.default.createElement(ze,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Ae.default.createElement("span",{style:bo(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},g.error_message)):g.status!=="complete"?Ae.default.createElement(ze,{"data-testid":"run-pending",padding:"14px 16px"},Ae.default.createElement("span",{style:bo(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${g.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,S.length>1&&Ae.default.createElement(D0,{rows:d2(g,{columns:S}),unit:"interaction",judgedBy:A?.judge||null,judgeEstimated:j?.judge?.estimated??!0}),Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},w.map(L=>{let G=eZ(g,L),W=k(L),ie=W?.samples??(L==null?g.samples_evaluated:null),Ie=W?.passed??(L==null?g.samples_passed:null),ge=[];return G.below>0&&ge.push({tone:"error",text:`below pass mark \xD7${G.below}`}),G.skipped>0&&ge.push({tone:"warning",text:`skipped \xD7${G.skipped}`}),Ae.default.createElement(M0,{key:L||"all",label:L,short:L?On(L).short:"all samples",provider:W?.provider||(L?On(L).provider:null)||null,winner:!!A?.winner&&A.winner===L,passed:Ie,total:ie,avgScore:G.avg,criteria:{cleared:G.cleared,scored:G.scored},latencyMs:W?.avg_duration_ms,inputTokens:W?.input_tokens,outputTokens:W?.output_tokens,cost:W?.cost,perInteraction:tf(W?.cost,W?.priced),estimated:W?.estimated??!1,unit:"interaction",badges:ge})}))),(A||C.length>0)&&Ae.default.createElement(ze,{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(We,null,"Verdict"),A.judge&&Ae.default.createElement("span",{style:bo()},`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:H,fontSize:12}},A.winner),A.rationale?` \xB7 ${A.rationale}`:"")),C.length>0&&Ae.default.createElement("span",{style:bo(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Ae.default.createElement(ze,{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(We,{style:{marginRight:4}},"Criteria"),Ae.default.createElement(Ln,{selected:p==="all",onClick:()=>f("all")},`All ${E.length}`),Q.map(L=>Ae.default.createElement(Ln,{key:L.id,selected:p===L.id,onClick:()=>f(L.id)},`${L.label} ${I(L.id)}`)),Ae.default.createElement(Ln,{square:!0,mono:!0,selected:m,onClick:()=>y(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:{...M,width:"34%"}},"Criterion"),Ae.default.createElement("th",{style:M},"Expects"),w.map(L=>Ae.default.createElement("th",{key:L||"score",style:M},L?Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},On(L).short),(k(L)?.provider||On(L).provider)&&Ae.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},k(L)?.provider||On(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:V},Ae.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},L.label)),Ae.default.createElement("td",{style:V},Ae.default.createElement("span",{style:bo()},`${L.rows.length} ${L.rows.length===1?"criterion":"criteria"}`)),w.map(G=>{let W=L.rows.filter(ge=>{let ce=ef(ge.value,G);return ce&&ce.score!=null}),ie=W.filter(ge=>ef(ge.value,G).score>=.7).length,Ie=W.length&&ie===W.length?"var(--color-success-text)":ie===0&&W.length?"var(--color-error-text)":"var(--color-text-cell)";return Ae.default.createElement("td",{key:G||"score",style:V},Ae.default.createElement("span",{style:bo(11,Ie,{fontWeight:600})},W.length?`${qn(ie,W.length)} passed`:"\u2014"))})),L.rows.map(G=>Ae.default.createElement("tr",{key:G.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:K},Ae.default.createElement("div",{style:bo()},G.key),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},s2(G.criterion))),Ae.default.createElement("td",{style:K},Ae.default.createElement("span",{style:{fontFamily:H,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:fh(G.criterion)},v0(fh(G.criterion),40))),w.map(W=>Ae.default.createElement("td",{key:W||"score",style:K},Ae.default.createElement(g_e,{stats:ef(G.value,W)}))))))),N.length===0&&Ae.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{colSpan:2+w.length,style:{padding:"16px 14px",fontSize:13,color:"var(--color-text-muted)"}},E.length?"Nothing failed under this filter.":"This run recorded no criterion scores.")))))),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(We,null,"What to fix"),Ae.default.createElement("span",{style:bo()},O.length?St(O.length,"item"):"nothing")),O.length?Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},O.map(L=>Ae.default.createElement(h_e,{key:L.kind,item:L,evaluation:e,run:g,number:v}))):Ae.default.createElement(en,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${q1(.7)}) and nothing was skipped.`)),Ae.default.createElement(df,{evaluation:e,run:g,spend:j,onDelete:c,deleting:d}))}var Pn=Z(J());var PD={fontFamily:H,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},MD={padding:"8px 12px",verticalAlign:"middle",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},TD={...MD,fontFamily:H,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},OD={...PD,textAlign:"right"};function ID({rows:e=[],columns:t=[],testId:r="model-leaderboard"}){if(e.length<2)return null;let n=t.length>1?t.filter(o=>e.some(a=>a.byEvaluation?.[o.id]?.total>0)):[];return Pn.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:r},Pn.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},Pn.default.createElement(We,null,"Model leaderboard"),Pn.default.createElement("span",{style:{fontFamily:H,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`)),Pn.default.createElement("div",{style:{overflowX:"auto"}},Pn.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Pn.default.createElement("thead",null,Pn.default.createElement("tr",{style:{background:"var(--color-muted)"}},Pn.default.createElement("th",{style:{...OD,width:28}},"#"),Pn.default.createElement("th",{style:PD},"Model"),Pn.default.createElement("th",{style:{...PD,minWidth:160}},"Passed"),Pn.default.createElement("th",{style:OD},"Rate"),n.map(o=>Pn.default.createElement("th",{key:o.id,style:{...OD,maxWidth:140,overflow:"hidden",textOverflow:"ellipsis"},title:o.name},o.name)))),Pn.default.createElement("tbody",null,e.map(o=>{let{short:a,provider:i}=On(o.label);return Pn.default.createElement("tr",{key:o.label,"data-testid":"model-leaderboard-row",title:`${o.label}: at least ${Ts(o.lower)} at 95% confidence`},Pn.default.createElement("td",{style:{...TD,color:"var(--color-text-muted)"}},o.rank),Pn.default.createElement("td",{style:MD},Pn.default.createElement("div",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap"}},a),i&&Pn.default.createElement("div",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)),Pn.default.createElement("td",{style:MD},Pn.default.createElement(Pu,{passed:o.passed,total:o.total,color:I0(o.ratio),valueWidth:56})),Pn.default.createElement("td",{style:{...TD,fontWeight:700,color:I0(o.ratio)}},Ts(o.ratio)),n.map(s=>{let l=o.byEvaluation?.[s.id],u=l?.total?l.passed/l.total:null;return Pn.default.createElement("td",{key:s.id,style:{...TD,color:I0(u)},title:l?.total?`${s.name}: ${qn(l.passed,l.total)}`:`${s.name}: not run on this model`},Ts(u))}))})))))}var dd=null,DD=new Set,RJ=()=>DD.forEach(e=>e(dd));function y_e(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 Wr(e){return dd&&dd.resolve(!1),new Promise(t=>{dd={...y_e(e),resolve:t},RJ()})}function eQ(e){if(!dd)return;let{resolve:t}=dd;dd=null,RJ(),t(!!e)}function tQ(){return dd}function rQ(e){return DD.add(e),()=>DD.delete(e)}function nQ(e,t){return e?.requireText?t===e.requireText:!0}var oQ=()=>{let e=Jn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=PI(window.location.search);return t?.runId?t:null},j2=()=>{let e=Jn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},aQ=()=>PI(window.location.search)?.evaluationId||(j2()?String(j2().evaluationId):null),D2=(e=11,t="var(--color-text-muted)")=>({fontFamily:H,fontSize:e,color:t}),v_e=e=>{let t=vh(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:c2(e,t).length+r:r},x_e={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 F0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Pe.useState)(()=>e?null:oQ()),a=(0,Pe.useRef)(null),[i,s]=(0,Pe.useState)(0),[l,u]=(0,Pe.useState)(null);(0,Pe.useEffect)(()=>{let be=a.current?.contentDocument?.body;if(!be)return;let nt=()=>u(be.scrollHeight);if(nt(),typeof ResizeObserver>"u")return window.addEventListener("resize",nt),()=>window.removeEventListener("resize",nt);let mt=new ResizeObserver(nt);return mt.observe(be),()=>mt.disconnect()},[i,n]),(0,Pe.useEffect)(()=>u(null),[n]);let[c,d]=(0,Pe.useState)([]),[p,f]=(0,Pe.useState)([]),[m,y]=(0,Pe.useState)(void 0),[x,h]=(0,Pe.useState)(!1),[g,v]=(0,Pe.useState)(void 0),[b,S]=(0,Pe.useState)(!0),[w,_]=(0,Pe.useState)(null),[k,A]=(0,Pe.useState)(null),[C,E]=(0,Pe.useState)(()=>{if(e)return null;let be=j2();return be?.runId?be:null}),[I,Q]=(0,Pe.useState)(()=>e?null:aQ()),[$,F]=(0,Pe.useState)({}),[N,O]=(0,Pe.useState)(!1),[j,T]=(0,Pe.useState)(null),[D,M]=(0,Pe.useState)(null),[K,V]=(0,Pe.useState)(null),[L,G]=(0,Pe.useState)(!1),[W,ie]=(0,Pe.useState)(!1),[Ie,ge]=(0,Pe.useState)(0);(0,Pe.useEffect)(()=>{if(e)return;let be=()=>{o(oQ());let nt=j2();E(nt?.runId?nt:null);let mt=aQ();Q(mt),mt&&A(tr=>new Set([...tr||[],Number(mt)]))};return window.addEventListener("popstate",be),window.addEventListener("dashboard:navigate",be),()=>{window.removeEventListener("popstate",be),window.removeEventListener("dashboard:navigate",be)}},[e]);let ce=(0,Pe.useCallback)(async()=>{try{let be=new URLSearchParams;t&&be.set("agent_id",t),L&&be.set("archived","1");let nt=be.toString(),mt=await fetch(`/api/evaluations${nt?`?${nt}`:""}`);if(!mt.ok)throw new Error(`Request failed (${mt.status})`);let tr=await mt.json();ge(Number(tr.archived_count)||0),y(tr.judge_provider??null),h(tr.judge_provider_error===!0),v(Array.isArray(tr.model_providers)?tr.model_providers:null);let na=tr.evaluations||[],Mo=null;try{na=await XX(na,I,fetch)}catch(wn){Mo=wn.message}d(na),A(wn=>{if(wn)return wn;let Oa=I?na.find(Pa=>String(Pa.id)===I):na.find(Pa=>Pa.scenario_suite)||na[0];return new Set(Oa?[Oa.id]:[])}),_(Mo)}catch(be){_(be.message),v(nt=>nt===void 0?null:nt)}finally{S(!1)}},[t,I,L]),R=(0,Pe.useCallback)(async be=>{try{let nt=await fetch(`/api/evaluations/${be}`);if(!nt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${nt.status})`);let mt=await nt.json();F(tr=>({...tr,[be]:{runs:mt.evaluation?.runs||[],runCount:mt.evaluation?.run_count??null}}))}catch(nt){F(mt=>({...mt,[be]:{runs:null,runCount:null,error:nt.message}})),_(nt.message)}},[]);(0,Pe.useEffect)(()=>{ce(),fetch("/api/agents").then(be=>be.ok?be.json():{agents:[]}).then(be=>f(be.agents||[])).catch(()=>f([]))},[ce]),(0,Pe.useEffect)(()=>{new Set([...k||[],...C?[C.evaluationId]:[]]).forEach(nt=>{let mt=c.find(tr=>tr.id===nt);mt&&!mt.scenario_suite&&!$[nt]&&R(nt)})},[k,C,c,$,R]);let ee=be=>{!e&&Jn()!==be&&od(be)},z=be=>!!k?.has(be),te=be=>{let nt=!z(be.id);A(mt=>{let tr=new Set(mt||[]);return nt?tr.add(be.id):tr.delete(be.id),tr}),ee(nt?`/evaluations/${be.id}`:"/evaluations")},U=(be,nt)=>{A(mt=>new Set([...mt||[],be.id])),E({evaluationId:be.id,runId:nt.id}),ee(`/evaluations/${be.id}/runs/${nt.id}`)},P=be=>{E(null),ee(be?`/evaluations/${be}`:"/evaluations")},Y=async be=>{T(be.id),_(null);try{let nt=await fetch(`/api/evaluations/${be.id}/run`,{method:"POST"}),mt=await nt.json().catch(()=>({}));if(!nt.ok){_((mt.errors||[mt.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${nt.status})`);return}await Promise.all([ce(),R(be.id)]),mt.run&&C?.evaluationId===be.id&&U(be,mt.run)}finally{T(null)}},B=async(be,nt)=>{V(be.id),_(null);try{let mt=await fetch(`/api/evaluations/${be.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:nt}})}),tr=await mt.json().catch(()=>({}));if(!mt.ok){_((tr.errors||[tr.error]).filter(Boolean).join(", ")||`${nt?"Archive":"Unarchive"} failed (HTTP ${mt.status})`);return}await ce()}finally{V(null)}},se=async be=>{if(await Wr({title:`Delete ${be.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:be.name})){M(be.id),_(null);try{let nt=await fetch(`/api/evaluations/${be.id}`,{method:"DELETE"});nt.ok||nt.status===404?(d(mt=>mt.filter(tr=>tr.id!==be.id)),A(mt=>{let tr=new Set(mt||[]);return tr.delete(be.id),tr}),C?.evaluationId===be.id&&P(null)):_(`Delete failed (HTTP ${nt.status})`)}finally{M(null)}}};if(b)return Pe.default.createElement("div",{className:"flex items-center justify-center h-64"},Pe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let ne=t?c.filter(be=>String(be.agent?.id)===String(t)):c,he=be=>{let nt=$[be.id];return nt?.runs?{runs:nt.runs,runCount:be.run_count??nt.runCount??null,loaded:!0}:{runs:be.latest_run?[be.latest_run]:[],runCount:be.run_count??null,loaded:!1}};if(n){let be=tt(`/api/evaluations/${n.evaluationId}/runs/${n.runId}/report`),nt=`${be}?theme=${r?"dark":"light"}`;return Pe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Pe.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Pe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Pe.default.createElement(pe,{size:"sm",onClick:()=>{od("/evaluations"),o(null)}},Pe.default.createElement("span",{style:{fontFamily:H}},"<-")," Evaluations"),Pe.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),Pe.default.createElement("span",{style:D2(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),Pe.default.createElement("a",{href:be,target:"_blank",rel:"noopener noreferrer",title:"The report is one self-contained page \u2014 save it to export",style:{padding:"6px 12px",borderRadius:8,fontSize:13,fontWeight:500,color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)",textDecoration:"none"}},"Open standalone ",Pe.default.createElement("span",{style:{fontFamily:H}},"->"))),Pe.default.createElement("iframe",{ref:a,src:nt,title:"Evaluation run report",onLoad:()=>s(mt=>mt+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 be=ne.find(nt=>nt.id===C.evaluationId);if(!be||!be.scenario_suite){let{runs:nt,runCount:mt,loaded:tr}=be?he(be):{runs:[],runCount:null,loaded:!0};return Pe.default.createElement(ND,{evaluation:be,runs:nt,runCount:mt,runId:C.runId,loading:!tr,running:j===C.evaluationId,onSelectRun:na=>U(be,na),onRun:()=>Y(be),onBack:()=>P(null),onOpenEvaluation:()=>P(C.evaluationId),onDelete:be?()=>se(be):void 0,deleting:D===C.evaluationId})}}let et=sZ(ne,{focusId:I}),{samplesScored:it,samplesPassed:ve,passRatio:ue,spend:Ue}=et,Je=uZ(et),rt=[...new Set(ne.map(be=>be.agent?.name).filter(Boolean))],Tt=ne.reduce((be,nt)=>Math.max(be,LI(nt,vh(nt)||nt.latest_run)),0),$t=ne.map(v_e),Hr=$t.reduce((be,nt)=>be+nt,0),Po=$t.filter(Boolean).length,vs=ne.length?[`${St(rt.length,"agent")} \xB7 ${Tt>1?`${Tt} models compared`:"no model comparisons"}`,Je].filter(Boolean).join(" \xB7 "):"none defined yet",Pi=et.focused?"headline run of this evaluation":`headline run of ${St(et.counted,"current evaluation")}${Je?` \xB7 ${Je}`:""}`,yt=lZ(et),Rn=yt.length>1?yt[0]:null,xs=Ue.agentCost!=null&&Ue.estimated||Ue.judgeCost!=null&&Ue.judgeEstimated,bs=Ue.agentCost!=null?Pe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:4}},Pe.default.createElement("span",{"data-testid":"stat-agent-cost-scope"},`over ${St(Ue.interactions,"interaction")}`),Pe.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},Pe.default.createElement("span",null,"agent"),Pe.default.createElement("span",{"data-testid":"stat-agent-cost-agent",style:{color:"var(--color-text-cell)"}},Pr(Ue.agentCost,{estimated:Ue.estimated})),Pe.default.createElement("span",null,"judge"),Pe.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"},Ue.judgeCost!=null?`${Pr(Ue.judgeCost,{estimated:Ue.judgeEstimated})} \xB7 offline`:"none")),xs&&Pe.default.createElement("span",{title:al,style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"~ estimated")):"no priced runs yet";return Pe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},Pe.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&Pe.default.createElement("div",{style:{flex:1,minWidth:260}},Pe.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),Pe.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.")),Pe.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(Ie>0||L)&&Pe.default.createElement(pe,{size:"sm",onClick:()=>G(be=>!be),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},L?"Hide archived":`Show archived (${Ie})`),Pe.default.createElement(pe,{variant:"primary",onClick:()=>O(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),w&&Pe.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},"Failed to load evaluations: ",w),N&&Pe.default.createElement(ED,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:x,modelProviders:g,onCancel:()=>O(!1),onCreated:async be=>{O(!1),await ce(),be?.id!=null&&(A(nt=>new Set([...nt||[],be.id])),ee(`/evaluations/${be.id}`))}}),Pe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},Pe.default.createElement(ih,{label:"Evaluations",value:ne.length,sub:vs,testId:"stat-evaluations"}),Pe.default.createElement(ih,{label:"Samples scored",value:it,sub:Pi,testId:"stat-samples-scored"}),Pe.default.createElement(ih,{label:"Pass rate",value:Ts(ue),valueColor:ue==null?"var(--color-text-muted)":vo[Ou(ue)].strong,sub:ue==null?Je||"no completed runs yet":Pe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},Pe.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${ve}/${it} passed`),Rn&&Pe.default.createElement(Pe.default.Fragment,null,Pe.default.createElement("span",{"data-testid":"stat-pass-rate-leader",title:`${Rn.label} ${qn(Rn.passed,Rn.total)}: best of ${yt.length} models by the low end of its pass rate`,style:{display:"flex",gap:6,minWidth:0,fontFamily:H,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Pe.default.createElement("span",null,"best"),Pe.default.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",minWidth:0,color:"var(--color-text-cell)"}},On(Rn.label).short),Pe.default.createElement("span",{style:{flexShrink:0}},Ts(Rn.ratio))),Pe.default.createElement("button",{type:"button",onClick:()=>ie(be=>!be),"aria-expanded":W,"data-testid":"stat-pass-rate-leaderboard-toggle",style:{alignSelf:"flex-start",background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:H,fontSize:11,color:"var(--color-text-secondary)"}},Pe.default.createElement(Na,{kind:"chevron",open:W})," ",`${W?"hide":"compare"} ${yt.length} models`))),testId:"stat-pass-rate"}),Pe.default.createElement(ih,{label:"To fix",value:Hr,valueColor:Hr?"var(--color-error)":void 0,sub:Hr?`across ${St(Po,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Pe.default.createElement(ih,{label:"Cost / interaction",value:ju(Ue.perInteraction,Ue.estimated),valueColor:Ue.perInteraction==null?"var(--color-text-muted)":void 0,sub:bs,testId:"stat-agent-cost"})),W&&Pe.default.createElement(ID,{rows:yt,columns:et.columns}),Pe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},ne.map((be,nt)=>{let mt=be.latest_run,tr=vh(be),na=mt&&tr&&mt.id!==tr.id?mt:null,Mo=BI(be),wn=x_e[Mo],Oa=Mo==="archived",Pa=z(be.id),ws=!!be.scenario_suite,lo=$t[nt],Fu=(be.criteria||[]).some(eo=>Sl(eo)==="telemetry"),{runs:Ss,runCount:Uu}=he(be);return Pe.default.createElement(ze,{key:be.id,padding:0,testId:"evaluation-card","data-telemetry":Fu?"true":"false","data-kind":ws?"suite":"sampling","data-open":Pa?"true":"false","data-standing":Mo,style:{overflow:"hidden",opacity:Oa?.75:1}},Pe.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Pa,onClick:()=>te(be),onKeyDown:eo=>{(eo.key==="Enter"||eo.key===" ")&&(eo.preventDefault(),te(be))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},Pe.default.createElement(Na,{kind:"chevron",open:Pa}),Pe.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:H,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:ws?"scenario suite":"sampling evaluation"},ws?"=":"~"),Pe.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},be.name),Pe.default.createElement("span",{style:D2(11)},`@${be.agent?.name||"agent"} \xB7 ${Rp(be)}`),Pe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},Pe.default.createElement("span",{style:D2(11)},xo(mt?.completed_at||mt?.created_at||be.created_at)),lo>0&&Pe.default.createElement("span",{style:D2(11,"var(--color-error)")},`${lo} to fix`),wn&&Pe.default.createElement(Ce,{tone:wn.tone,size:10,style:{padding:"1px 6px"},title:wn.title,testId:"evaluation-standing"},wn.text),na&&Pe.default.createElement(uf,{run:na,testId:"evaluation-newer-run-badge"}),Pe.default.createElement(uf,{run:tr||mt,testId:ws?"suite-pass-badge":"evaluation-pass-badge"}),Pe.default.createElement("button",{type:"button",onClick:eo=>{eo.stopPropagation(),B(be,!Oa)},disabled:K===be.id,title:Oa?"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:K===be.id?"not-allowed":"pointer",fontFamily:H,fontSize:11,color:"var(--color-text-muted)",opacity:K===be.id?.5:1}},K===be.id?"\u2026":Oa?"unarchive":"archive"))),Pa&&Pe.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},ws?Pe.default.createElement(CD,{evaluation:be,modelProviders:g,onChanged:ce,onDelete:()=>se(be),deleting:D===be.id,initialRunId:C?.evaluationId===be.id?C.runId:null,onRunSelected:eo=>ee(`/evaluations/${be.id}/runs/${eo}`)}):Pe.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},Pe.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Pe.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Ss.length?rJ(Ss,Uu):`@${be.agent?.name||"agent"} \xB7 no runs yet`),Pe.default.createElement(pe,{variant:"primary",size:"sm",disabled:j===be.id,onClick:eo=>{eo.stopPropagation(),Y(be)},testId:"evaluation-run-button"},j===be.id?"Running\u2026":`Run ${Rp(be)}`)),Pe.default.createElement(nD,{runs:Ss,runCount:Uu,evaluation:be,agentName:be.agent?.name,previousRun:be.previous_run,onOpen:eo=>U(be,eo),testId:"evaluation-runs-panel"}),Pe.default.createElement(df,{evaluation:be,run:mt,spend:Ni(mt),onDelete:()=>se(be),deleting:D===be.id}))))})),ne.length===0&&!N&&Pe.default.createElement(ze,{style:{textAlign:"center",padding:"48px 20px"}},Pe.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),Pe.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 He=Z(J());var b_e=e=>new Date(`${e}T00:00:00`),w_e=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function jD({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=Hi(n),[a,i]=(0,He.useState)(null),[s,l]=(0,He.useState)(!0),{timeWindow:u,days:c}=vl(),[d,p]=(0,He.useState)("overview");(0,He.useEffect)(()=>{f()},[e?.id,c]);let f=async()=>{if(e?.id){l(!0);try{let b=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(b)}catch(v){console.error("Failed to load analytics:",v)}finally{l(!1)}}},m=v=>v?v<1e3?`${v}ms`:`${(v/1e3).toFixed(2)}s`:"-",y=v=>v?v>=1e6?`${(v/1e6).toFixed(1)}M`:v>=1e3?`${(v/1e3).toFixed(1)}K`:v.toString():"0",x=v=>{switch(v){case"complete":return"bg-green-500";case"failed":return"bg-red-500";case"running":return"bg-blue-500";case"pending":return"bg-yellow-500";case"cancelled":return"bg-gray-500";default:return"bg-gray-400"}};if(s&&!a)return 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"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return He.default.createElement("div",{className:"space-y-6"},r?He.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&He.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),He.default.createElement(xl,null)):He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",{className:"flex items-center space-x-4"},He.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},He.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),He.default.createElement("div",null,He.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),He.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&He.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),He.default.createElement(xl,null))),!r&&He.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},w_e.map(v=>He.default.createElement("button",{key:v.id,onClick:()=>p(v.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===v.id?"shadow":""}`,style:d===v.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},v.label))),g==="traces"&&He.default.createElement(Gp,{agentId:e.id,embedded:!0}),g==="interactions"&&He.default.createElement(Du,{agentId:e.id,embedded:!0}),g==="overview"&&He.default.createElement(He.default.Fragment,null,He.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},He.default.createElement($2,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),He.default.createElement($2,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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}),He.default.createElement($2,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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}),He.default.createElement($2,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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})),He.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},He.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?He.default.createElement("div",{className:"h-48"},He.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,b)=>He.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},He.default.createElement("div",{className:"relative w-full"},He.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),He.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(b===0||b===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&He.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},b_e(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):He.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),He.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?He.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([v,b])=>{let S=a?.summary?.total_runs||1,w=(b/S*100).toFixed(1);return He.default.createElement("div",{key:v},He.default.createElement("div",{className:"flex justify-between text-sm mb-1"},He.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),He.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},b," (",w,"%)")),He.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},He.default.createElement("div",{className:`h-full ${x(v)} rounded-full transition-all`,style:{width:`${w}%`}})))})):He.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&He.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),He.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>He.default.createElement("div",{key:v.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},He.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"},He.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"})),He.default.createElement("div",{className:"flex-1 min-w-0"},He.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),He.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),He.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var iQ={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 $2({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=iQ[n]||iQ.rose;return He.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",null,He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),He.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),He.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var fe=Z(J());var S_e={active:"success",configured:"info",available:"warning",idle:"muted"},k_e={agent_defined:"success",dashboard:"success",mcp:"info"},sQ="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",lQ="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",__e=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],uQ={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:H,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},Al={fontFamily:H,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},L2={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function pQ({on:e,onClick:t,title:r}){return fe.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"}},fe.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 cQ({on:e,dim:t=!1}){return fe.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:H,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 C_e({tool:e,state:t,onToggle:r}){if(!t)return fe.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.`),fe.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"}},fe.default.createElement(pQ,{on:n,title:o,onClick:()=>r(e)}))}function z2({children:e,onClick:t,disabled:r,title:n}){return fe.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:H,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 dQ({children:e}){return fe.default.createElement("div",{style:{overflowX:"auto"}},fe.default.createElement("div",{style:{minWidth:800}},e))}function $D({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,fe.useState)(null),[l,u]=(0,fe.useState)(null),[c,d]=(0,fe.useState)("7d"),[p,f]=(0,fe.useState)(""),[m,y]=(0,fe.useState)(null),[x,h]=(0,fe.useState)(null),[g,v]=(0,fe.useState)(!1),[b,S]=(0,fe.useState)(null),[w,_]=(0,fe.useState)({}),k=(Y1.find(U=>U.value===c)||Y1[1]).hours;(0,fe.useEffect)(()=>{let U=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${k}`).then(P=>{if(!P.ok)throw new Error(`Request failed (${P.status})`);return P.json()}).then(P=>{U||s(P)}).catch(P=>{U||u(P.message)}),()=>{U=!0}},[e.id,k]);let A=(0,fe.useMemo)(()=>({services:[],tools:[]}),[]),C=i||A,E=(0,fe.useMemo)(()=>t.tools||[],[t.tools]),I=(0,fe.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),Q=(0,fe.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),$=(0,fe.useMemo)(()=>G1(C,I),[C,I]),F=(0,fe.useMemo)(()=>_6(C,$,{query:p,filter:m}),[C,$,p,m]),N=(0,fe.useMemo)(()=>A6(C,$,E,{query:p,source:x,enabledOnly:g}),[C,$,E,p,x,g]),O=(0,fe.useMemo)(()=>E6(C,$,E,{range:c}),[C,$,E,c]),j=(0,fe.useMemo)(()=>O6(C,{tools:E,mcpServers:I,approvalRequiredTools:Q},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,E,I,Q,e]),T=C.usage_available!==!1,D=U=>T?U:"\u2014",M=(0,fe.useCallback)(U=>{r("mcp_servers",P6(C,U,I))},[C,I,r]),K=(0,fe.useCallback)(U=>{let P=$[U.key];M({...$,[U.key]:{...P,on:!P.on}})},[$,M]),V=(0,fe.useCallback)((U,P)=>{let Y=$[U.key];Y.on&&M({...$,[U.key]:{...Y,tools:{...Y.tools,[P.name]:!Y.tools[P.name]}}})},[$,M]),L=(0,fe.useCallback)((U,P)=>{let Y=$[U.key],B=Object.fromEntries((U.tools||[]).map(se=>[se.name,P]));M({...$,[U.key]:{on:P||Y.on,tools:B}})},[$,M]),G=(0,fe.useCallback)(U=>{r("tools",M6(C,U));let P=Cm(U.filter(Y=>!E.includes(Y)));P.length>0&&r("approval_required_tools",pT(Q,P,!0))},[C,E,Q,r]),W=(0,fe.useCallback)(U=>{U.editable&&G(U.on?E.filter(P=>P!==U.key):[...E,U.key])},[E,G]),ie=(0,fe.useCallback)((U,P)=>{U.editable&&G(P?[...E,...U.keys.filter(Y=>!E.includes(Y))]:E.filter(Y=>!U.keys.includes(Y)))},[E,G]),Ie=(0,fe.useCallback)(U=>{r("approval_required_tools",T6(Q,U,e.approval_required_tools||[]))},[Q,e,r]),ge=(0,fe.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),ce=(C.services||[]).filter(U=>$[U.key]?.on),R=N.find(U=>U.source==="mcp"),z=N.filter(U=>U.source!=="mcp").reduce((U,P)=>U+P.enabledCount,0)+(R?R.total:0),te=N.reduce((U,P)=>U+P.total,0);return l?fe.default.createElement(ze,null,fe.default.createElement(We,null,"Tools & MCP services"),fe.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},fe.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},fe.default.createElement("div",{style:{flex:1,minWidth:260}},fe.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),fe.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.")),fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.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)"}},fe.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-text-muted)"}},"?"),fe.default.createElement("input",{value:p,onChange:U=>f(U.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}})),fe.default.createElement(ds,{options:Y1,value:c,onChange:d}))),fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},O.map(U=>fe.default.createElement(ze,{key:U.key,padding:"14px 16px",testId:`roster-stat-${U.key}`},fe.default.createElement(We,{size:11,spacing:"0.05em"},U.label),fe.default.createElement("div",{style:{marginTop:6,fontFamily:H,fontSize:26,fontWeight:700,lineHeight:1.1,color:U.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},U.value),fe.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},U.sub)))),fe.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},fe.default.createElement(We,null,"MCP services"),fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},ce.length," of ",(C.services||[]).length," enabled \xB7 ",R?R.total:0," tools offered"),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},fe.default.createElement(Ln,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),__e.map(U=>fe.default.createElement(Ln,{key:U.value,selected:m===U.value,onClick:()=>y(m===U.value?null:U.value)},U.label,U.value==="enabled"?` ${ce.length}`:"")),fe.default.createElement(vn,{href:tt("/mcp"),onClick:()=>lt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),fe.default.createElement(dQ,null,fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:sQ,...uQ}},fe.default.createElement("span",null,"On"),fe.default.createElement("span",null,"Service"),fe.default.createElement("span",null,"Status"),fe.default.createElement("span",{style:{textAlign:"right"}},"Tools"),fe.default.createElement("span",{style:{textAlign:"right"}},"Calls"),fe.default.createElement("span",{style:{textAlign:"right"}},"Errors"),fe.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),fe.default.createElement("span",null)),F.map(U=>{let P=b===U.key;return fe.default.createElement("div",{key:U.key},fe.default.createElement("div",{className:"aa-roster-row","data-on":U.on?"true":"false","data-testid":`service-row-${U.key}`,style:{display:"grid",gridTemplateColumns:sQ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},fe.default.createElement(pQ,{on:U.on,onClick:()=>K(U),title:`${U.on?"Disable":"Enable"} ${U.name} for this agent`}),fe.default.createElement("div",{onClick:()=>S(P?null:U.key),style:{minWidth:0,cursor:"pointer"}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},U.name),U.first_party&&fe.default.createElement(Ce,{tone:"accent",size:10},"first-party"),Vd(U)&&fe.default.createElement(Ce,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Ry(U)&&fe.default.createElement(Ce,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),X1(U)&&fe.default.createElement(Ce,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),U.partial&&fe.default.createElement(Ce,{tone:"warning",size:10},U.partialLabel)),fe.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...L2}},U.description)),fe.default.createElement("span",null,fe.default.createElement(Ce,{tone:S_e[U.status]||"muted"},U.status)),fe.default.createElement("span",{style:{...Al,color:U.on?"var(--color-text-primary)":"var(--color-text-muted)"}},U.toolsLabel),fe.default.createElement("span",{style:Al},D(U.calls)),fe.default.createElement("span",{style:{...Al,color:U.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},D(U.errors)),fe.default.createElement("span",{style:{...Al,color:"var(--color-text-muted)"}},D(Qy(U.last_seen))),fe.default.createElement("span",{onClick:()=>S(P?null:U.key),style:{cursor:"pointer",textAlign:"center"}},fe.default.createElement(Na,{kind:"chevron",open:P}))),P&&fe.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},fe.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Tools offered"),fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},U.transport),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},fe.default.createElement(z2,{onClick:()=>L(U,!0),title:`Offer every tool ${U.name} serves`},"all"),fe.default.createElement(z2,{onClick:()=>L(U,!1),disabled:!U.on,title:`Offer none of ${U.name}'s tools`},"none"))),U.tools.length===0?fe.default.createElement(en,{style:{padding:"10px 0"}},S6(U)):fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},U.tools.map(Y=>fe.default.createElement("div",{key:Y.name,className:"aa-roster-row",onClick:()=>V(U,Y),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:U.on?"pointer":"default",opacity:U.on?1:.55}},fe.default.createElement(cQ,{on:Y.on,dim:!U.on}),fe.default.createElement("span",{style:{minWidth:0}},fe.default.createElement("span",{style:{display:"block",fontFamily:H,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)",...L2}},Y.name),fe.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...L2}},Y.description)),fe.default.createElement("span",{style:{...Al,color:"var(--color-text-secondary)"}},D(Y.calls)),fe.default.createElement("span",{style:{...Al,color:Y.errors?"var(--color-error-text)":"var(--color-text-muted)"}},D(Y.errors?`${Y.errors} err`:cT(Y.avg_duration_ms)))))),!U.on&&fe.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",U.name," on offers these ",U.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),F.length===0&&fe.default.createElement(en,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),fe.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},fe.default.createElement(We,null,"Tools"),fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},z," enabled of ",te," available"),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},fe.default.createElement(Ln,{selected:!x,onClick:()=>h(null)},"All ",te),N.map(U=>fe.default.createElement(Ln,{key:U.source,selected:x===U.source,onClick:()=>h(x===U.source?null:U.source)},U.name," ",U.total)),fe.default.createElement(Ln,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),fe.default.createElement(dQ,null,fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:lQ,...uQ}},fe.default.createElement("span",null),fe.default.createElement("span",null,"Tool"),fe.default.createElement("span",null,"Source"),fe.default.createElement("span",{style:{textAlign:"right"}},"Calls"),fe.default.createElement("span",{style:{textAlign:"right"}},"Errors"),fe.default.createElement("span",{style:{textAlign:"right"}},"Avg"),fe.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),fe.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(U=>{let P=w[U.source]!==!0;return fe.default.createElement("div",{key:U.source},fe.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"}},fe.default.createElement("span",{onClick:()=>_({...w,[U.source]:P}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},fe.default.createElement(Na,{kind:"chevron",open:P}),fe.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},U.name)),fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},U.meta),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-cell)"}},U.countLabel),U.editable&&fe.default.createElement(fe.default.Fragment,null,fe.default.createElement(z2,{onClick:()=>ie(U,!0)},"all"),fe.default.createElement(z2,{onClick:()=>ie(U,!1)},"none")))),P&&U.rows.map(Y=>fe.default.createElement("div",{key:Y.key,className:"aa-roster-row","data-on":Y.on?"true":"false","data-testid":`tool-row-${Y.key}`,onClick:()=>W(Y),style:{display:"grid",gridTemplateColumns:lQ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:Y.editable?"pointer":"default",opacity:Y.editable?1:.75}},fe.default.createElement(cQ,{on:Y.on,dim:!Y.editable}),fe.default.createElement("div",{style:{minWidth:0}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},Y.name),Y.source==="mcp"&&fe.default.createElement(Ce,{size:10},"via ",Y.server),Y.source==="agent_defined"&&(Y.editable?fe.default.createElement(Ce,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):fe.default.createElement(Ce,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),T&&Y.on&&!Y.calls&&fe.default.createElement(Ce,{size:10},"unused")),fe.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...L2}},Y.description)),fe.default.createElement("span",null,fe.default.createElement(Ce,{tone:k_e[Y.source]||"muted"},uT[Y.source])),fe.default.createElement("span",{style:Al},D(Y.calls)),fe.default.createElement("span",{style:{...Al,color:Y.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},D(Y.errors)),fe.default.createElement("span",{style:{...Al,color:"var(--color-text-secondary)"}},D(cT(Y.avg_duration_ms))),fe.default.createElement("span",{style:{...Al,color:"var(--color-text-muted)"}},D(Qy(Y.last_seen))),fe.default.createElement(C_e,{tool:Y,state:dT(Y,Q),onToggle:Ie}))))}),N.every(U=>U.rows.length===0)&&fe.default.createElement(en,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),fe.default.createElement(ze,{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"},fe.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},fe.default.createElement(We,{size:11,spacing:"0.05em"},z," tools \xB7 ",ce.length," services"),fe.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.")),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},j>0&&fe.default.createElement(fe.default.Fragment,null,fe.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-warning-text)"}},j," change",j===1?"":"s"," pending"),fe.default.createElement(pe,{variant:"secondary",onClick:ge},"Discard")),fe.default.createElement(pe,{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")))):fe.default.createElement(ze,null,fe.default.createElement(en,null,"loading the roster\u2026"))}var Jt=Z(J());function LD({agentId:e,colors:t}){let[r,n]=(0,Jt.useState)(""),[o,a]=(0,Jt.useState)(""),[i,s]=(0,Jt.useState)(""),[l,u]=(0,Jt.useState)(1),[c,d]=(0,Jt.useState)(null),[p,f]=(0,Jt.useState)(null),[m,y]=(0,Jt.useState)(0);(0,Jt.useEffect)(()=>{let h=new AbortController;d(null),f(null);let g=new URLSearchParams({agent_id:e,rating:r,from:o,to:i,page:l});return fetch(tt(`/api/feedback?${g}`),{signal:h.signal}).then(async v=>{if(!v.ok)throw new Error("Could not load feedback.");return v.json()}).then(d).catch(v=>{v.name!=="AbortError"&&f(v.message)}),()=>h.abort()},[e,r,o,i,l,m]);let x=h=>g=>{h(g.target.value),u(1)};return Jt.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},Jt.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},Jt.default.createElement("label",null,"Rating ",Jt.default.createElement("select",{value:r,onChange:x(n),style:{color:t.textPrimary,background:t.cardBg}},Jt.default.createElement("option",{value:""},"All ratings"),Jt.default.createElement("option",{value:"positive"},"Thumbs up"),Jt.default.createElement("option",{value:"negative"},"Thumbs down"))),Jt.default.createElement("label",null,"From ",Jt.default.createElement("input",{type:"date",value:o,onChange:x(a),style:{color:t.textPrimary,background:t.cardBg}})),Jt.default.createElement("label",null,"To ",Jt.default.createElement("input",{type:"date",value:i,onChange:x(s),style:{color:t.textPrimary,background:t.cardBg}})),Jt.default.createElement("button",{type:"button",onClick:()=>y(h=>h+1)},"Refresh")),p&&Jt.default.createElement("p",{role:"alert"},p),!c&&!p&&Jt.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&Jt.default.createElement(Jt.default.Fragment,null,Jt.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&&Jt.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),Jt.default.createElement("ul",null,c.feedback.map(h=>Jt.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},Jt.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),Jt.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&Jt.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&Jt.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),Jt.default.createElement("a",{className:"underline",href:tt(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&Jt.default.createElement("p",null,"Response span: ",Jt.default.createElement("code",null,h.span_id))))),Jt.default.createElement("div",{className:"flex gap-4 mt-4"},Jt.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),Jt.default.createElement("span",null,"Page ",l),Jt.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var A_e=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],gQ=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],E_e=gQ.map(e=>e.id),fQ={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"]}},N_e={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function pd({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(fQ[e]||fQ.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?Pt.mono:void 0,whiteSpace:"nowrap"}},n)}function fa({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:Jo,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 mQ({tabs:e,active:t,onChange:r,colors:n}){return _e.default.createElement("div",{style:{display:"flex",alignItems:"center"}},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?Jo:"transparent"}`,color:a?Jo:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function B2({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=Hi(c),[p,f]=(0,_e.useState)(u||"config"),[m,y]=(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"}),[x,h]=(0,_e.useState)([]),[g,v]=(0,_e.useState)(!1),[b,S]=(0,_e.useState)(""),w=vc([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"});v($)},[m,e]),(0,_e.useEffect)(()=>{p==="versions"?_():p==="code"&&k()},[p]);let _=async()=>{try{let F=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(F.versions)}catch($){console.error("Failed to load versions:",$)}},k=async()=>{try{let F=await(await fetch(`/api/agents/${e.id}/export`)).json();S(F.code)}catch($){console.error("Failed to load code preview:",$)}},A=($,F)=>{y(N=>({...N,[$]:F}))},C=($,F)=>{y(N=>{let O=N[$]||[],j=O.includes(F)?O.filter(T=>T!==F):[...O,F];return{...N,[$]:j}})},E=()=>{r(m)},I=E_e.includes(p),Q=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"}},_e.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:Pt.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),_e.default.createElement(In,{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(pd,{tone:N_e[m.status]||"neutral",darkMode:c},m.status),g&&_e.default.createElement(pd,{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",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&_e.default.createElement(fa,{variant:"secondary",colors:d,onClick:a},"Duplicate"),_e.default.createElement(fa,{variant:"primary",colors:d,onClick:o},"Run Agent"))),_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto"}},_e.default.createElement(mQ,{tabs:A_e,active:p,onChange:f,colors:d}),_e.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),_e.default.createElement(mQ,{tabs:gQ,active:p,onChange:f,colors:d})),Q?_e.default.createElement($D,{agent:e,formData:m,updateField:A,onSave:E,hasChanges:g,isLoading:l}):I?_e.default.createElement("div",null,p==="traces"&&_e.default.createElement(Gp,{agentId:e.id,embedded:!0}),p==="metrics"&&_e.default.createElement(jD,{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:Pt.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),_e.default.createElement(Du,{agentId:e.id,embedded:!0})),p==="evals"&&_e.default.createElement(F0,{embedded:!0,agentId:e.id}),p==="feedback"&&_e.default.createElement(LD,{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(O_e,{formData:m,updateField:A,providerModels:w,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&_e.default.createElement(P_e,{formData:m,updateField:A,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&_e.default.createElement(M_e,{versions:x,agentId:e.id,onRestore:_,colors:d,darkMode:c}),p==="code"&&_e.default.createElement(I_e,{code:b,colors:d})),g&&!Q&&_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(fa,{variant:"primary",size:"sm",colors:d,onClick:E,disabled:l},l?"Saving\u2026":"Save Changes"))))}var El=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),zu=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),T_e=e=>({fontFamily:Pt.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function O_e({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",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:El(n)},"Agent Name"),_e.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:zu(n)})),_e.default.createElement("div",null,_e.default.createElement("label",{style:El(n)},"Preset Type"),_e.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:zu(n)},Object.keys(bm).map(i=>_e.default.createElement("option",{key:i,value:i},i))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:El(n)},"Description"),_e.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...zu(n),resize:"vertical"}})),_e.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:El(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:zu(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:El(n)},"Model"),_e.default.createElement(Ql,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...zu(n),fontFamily:Pt.mono}}))),_e.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:El(n)},"Temperature"," ",_e.default.createElement("span",{style:{fontFamily:Pt.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:Jo}})),_e.default.createElement("div",null,_e.default.createElement("label",{style:El(n)},"Status"),_e.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:zu(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:T_e(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(fa,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function P_e({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:El(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:{...zu(o),fontFamily:Pt.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:{...El(o),marginBottom:0}},"Action Prompts"),_e.default.createElement(fa,{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:Pt.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:Pt.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:{...zu(o),flex:1,padding:"6px 10px",fontFamily:Pt.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:Jo}}),"Expose as tool"),_e.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:Pt.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:{...zu(o),fontFamily:Pt.mono,resize:"vertical"}}))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:El(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?Jo:o.inputBorder}`,background:c?Jo:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function M_e({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await Wr({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?Jo: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:Pt.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&_e.default.createElement(pd,{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:Pt.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&_e.default.createElement(fa,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):_e.default.createElement(D_e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function I_e({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(fa,{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:Pt.mono,fontSize:"12px",lineHeight:1.6,margin:0}},_e.default.createElement("code",null,e||"Loading...")))}function D_e({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:Pt.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 X=Z(J());async function Ah(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var F2=Z(J());var j_e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var yQ=Object.freeze({events:500,chars:262144}),$_e=16*1024,L_e=3;function z_e(e){return{emit:e,maskAllInputs:!0,blockSelector:j_e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function B_e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function F_e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function U_e(e,t=yQ){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 hQ(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function vQ({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=yQ,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=null,m=null,y=null,x=!1,h=!1,g=null,v=0;function b(F){d!==F&&(d=F,i(F))}function S(){u.length=0,c=0}function w(){f&&f(),f=null,m=null,y!==null&&o.clearInterval(y),y=null,a?.removeEventListener?.("pagehide",I)}function _(F){h=!0,S(),w(),b(F)}function k(F){if(x||h)return;let N=B_e(F);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function A(F,N){let O=F_e(F,n());try{let j=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:O,keepalive:N&&O.length<=$_e});return hQ(j.status)}catch{return"retry"}}async function C(F){for(;u.length>0&&!h;){let N=u.splice(0,U_e(u,s)),O=N.reduce((T,D)=>T+D.length+1,0);c-=O;let j=await A(N,F);if(j==="sent"){v=0;continue}if(j!=="retry"){_(j);return}if(v+=1,F||v>=L_e){v=0,S(),m&&m();return}u.unshift(...N),c+=O;return}}function E({final:F=!1}={}){return p===null||h?Promise.resolve():(g||(g=C(F).finally(()=>{g=null})),g)}function I(){E({final:!0})}async function Q(){if(d!=="idle"||x)return;b("starting");let F;try{F=await r("/api/session_recordings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_context_id:e})})}catch{x||_("failed");return}if(x)return;if(!F.ok){_(hQ(F.status)==="off"?"off":"failed");return}let N=await F.json().catch(()=>null);if(x)return;if(p=N?.recording?.id??null,p===null){_("failed");return}let O;try{({record:O}=await t())}catch{x||_("failed");return}if(x)return;let j=null;try{j=typeof O=="function"?O(z_e(k)):null}catch{j=null}if(typeof j!="function"){_("failed");return}f=j,m=()=>O.takeFullSnapshot?.(),y=o.setInterval(()=>E(),l),a?.addEventListener?.("pagehide",I),b("recording")}async function $(){x||(x=!0,w(),!h&&(b("stopped"),g&&await g,await E({final:!0})))}return{start:Q,stop:$,flush:E,get state(){return d}}}function zD(e,t){let[r,n]=(0,F2.useState)("idle");return(0,F2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=vQ({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 W_e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},H_e=(e,t)=>{let r=W_e[e]||{role:e,label:e};return{...jn(r.role,t),label:r.label}},BD={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},q_e=["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"],K_e=["user","assistant","tool"],V_e=1200,G_e=600*1e3,U2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",xQ=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},FD=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()]},hs=e=>e?.context_id??e?.output_metadata?.context_id??null,U0=e=>e.json().catch(()=>({})),wQ=({open:e,color:t})=>X.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}},X.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})),Y_e=e=>typeof e=="string"?e:e?.name||e?.key||"?";function bQ({label:e,names:t,colors:r}){return X.default.createElement("div",{className:"flex justify-between gap-3"},X.default.createElement("dt",{className:"shrink-0",style:{color:r.textSecondary}},e),X.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 X_e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=FD(e),i=jC(t);return X.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=H_e(s.kind,t);return X.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},X.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)"}:{}},X.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),X.default.createElement("div",{className:"min-w-0 flex-1"},X.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&X.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),X.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"?X.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?X.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):X.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${U2(s.duration_ms)}`),s.at&&X.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&X.default.createElement(wQ,{open:l,color:r.textMuted})),l&&X.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&&X.default.createElement("div",null,X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),X.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},xQ(s.input))),s.output&&X.default.createElement("div",null,X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),X.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"}:{}}},xQ(s.output)))))}))}function Z_e({run:e,darkMode:t,colors:r}){return e?X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},X.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},X.default.createElement(pd,{tone:BD[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&X.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?X.default.createElement("span",null,U2(e.duration_ms)):null,e.total_tokens?X.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&X.default.createElement("a",{href:tt(`/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 UD({agent:e,onBack:t,recorderUrl:r=null,freshConversation:n=!1}){let{darkMode:o}=ut(),a=Hi(o),i=e.action_prompts||e.actionPrompts||[],s=["ask",...i.map(le=>le.name).filter(Boolean)],[l,u]=(0,X.useState)("ask"),[c,d]=(0,X.useState)(""),[p,f]=(0,X.useState)([]),[m,y]=(0,X.useState)(!1),[x,h]=(0,X.useState)([]),[g,v]=(0,X.useState)(null),[b,S]=(0,X.useState)(null),[w,_]=(0,X.useState)(null),[k,A]=(0,X.useState)([]),[C,E]=(0,X.useState)(!1),[I,Q]=(0,X.useState)(null),[$,F]=(0,X.useState)(null),[N,O]=(0,X.useState)(null),[j,T]=(0,X.useState)(null),[D,M]=(0,X.useState)({}),[K,V]=(0,X.useState)([]),[L,G]=(0,X.useState)([]),[W,ie]=(0,X.useState)(""),Ie=(0,X.useCallback)(async()=>{try{let le=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!le.ok)return;let De=await le.json(),st=p2(De.sandboxes);G(st),ie(Lt=>f2(Lt,st)||(st.length===1?st[0].value:""))}catch{}},[]);(0,X.useEffect)(()=>{Ie()},[Ie]);let ge=Z1(e.tools||[]),[ce,R]=(0,X.useState)(null),[ee,z]=(0,X.useState)(!1),[te,U]=(0,X.useState)(null),[P,Y]=(0,X.useState)(!1),[B,se]=(0,X.useState)(!1),[ne,he]=(0,X.useState)(null),[et,it]=(0,X.useState)(""),[ve,ue]=(0,X.useState)(!1),[Ue,Je]=(0,X.useState)(null),rt=(0,X.useRef)(null),Tt=(0,X.useRef)(!n),$t=(0,X.useRef)(null),Hr=(0,X.useRef)(0),Po=(0,X.useRef)(null),vs=(0,X.useRef)(!1),Pi=(0,X.useRef)(!0),yt=(0,X.useRef)(null),Rn=(0,X.useRef)([]),xs=(0,X.useRef)(null),bs=(0,X.useRef)(null),be=(0,X.useRef)(null),nt=(0,X.useRef)(null),mt=zD(g,r),tr=(b?.messages||[]).filter(le=>K_e.includes(le.role));(0,X.useEffect)(()=>{yt.current=$},[$]),(0,X.useEffect)(()=>{Rn.current=p},[p]),(0,X.useEffect)(()=>{Pi.current=!0,na();let le=bY(window.location.search);return le&&Cf(le),()=>{Pi.current=!1,Hr.current+=1,Tl(yt.current),Tl({attachments:Rn.current}),F(null),f([])}},[e.id]),(0,X.useEffect)(()=>{Mo(l)},[e.id,l]),(0,X.useEffect)(()=>{$t.current=g,g?wn(g):(S(null),_(null))},[g]),(0,X.useEffect)(()=>{let le=bs.current;le&&(le.scrollTop=le.scrollHeight)},[tr.length,$,I?.logs?.length,I?.input_requests?.length,ne,N]),(0,X.useEffect)(()=>{if(!B)return;let le=De=>{nt.current&&!nt.current.contains(De.target)&&se(!1)};return document.addEventListener("mousedown",le),()=>document.removeEventListener("mousedown",le)},[B]);let na=async()=>{try{let De=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();A(De.runs||[])}catch(le){console.error("Failed to load runs:",le)}},Mo=async le=>{try{let De=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(le)}`);if(!De.ok)throw new Error(`HTTP ${De.status}`);let Lt=(await De.json()).conversations||[];h(Lt),v(Sn=>Sn&&(rt.current===Sn||Lt.some(ni=>ni.id===Sn))?Sn:Tt.current?Lt[0]?.id??null:null)}catch(De){console.error("Failed to load conversations:",De),h([])}},wn=async le=>{try{let De=await fetch(`/api/interactions/${le}`);if(!De.ok)throw new Error(De.status===404?"Conversation not found":`HTTP ${De.status}`);let st=await De.json();if($t.current!==le)return;S(st.interaction),_(null)}catch(De){if($t.current!==le)return;S(null),_(De.message)}},Oa=async()=>{let le=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:l})}),De=await U0(le);if(!le.ok||!De.conversation)throw new Error(De.error||`Could not start a conversation (HTTP ${le.status})`);let st=De.conversation;return h(Lt=>[st,...Lt.filter(Sn=>Sn.id!==st.id)]),rt.current=st.id,v(st.id),st.id},Pa=()=>$t.current?Promise.resolve($t.current):Oa(),ws=le=>{rt.current=null,u(le)},lo=le=>{vs.current=le,E(le)},Fu=()=>{Po.current?.waiting&&(Po.current=null,lo(!1))},Ss=()=>{Fu(),Q(null),T(null),M({}),V([])},Uu=le=>{let De=le?Number(le):null;De!==$t.current&&Ss(),rt.current=De,v(De),O(null)},eo=async()=>{if(!C)try{await Oa(),_(null),O(null),Ss(),Tl(yt.current),F(null),he(null)}catch(le){_(le.message)}},Tl=le=>{(le?.attachments||[]).forEach(De=>{De.url&&De.url.startsWith("blob:")&&URL.revokeObjectURL(De.url)})},Bh=le=>{let De=Array.from(le||[]).filter(Boolean);De.length!==0&&f(st=>[...st,...De.map(Lt=>({file:Lt,filename:Lt.name,content_type:Lt.type||"application/octet-stream",byte_size:Lt.size,kind:DG(Lt),url:Lt.type&&Lt.type.startsWith("image/")?URL.createObjectURL(Lt):null}))])},sb=le=>{f(De=>{let st=De[le];return st?.url&&URL.revokeObjectURL(st.url),De.filter((Lt,Sn)=>Sn!==le)})},lb=(le,De)=>{Tl(yt.current),F(null),na();let st=hs(le)??De;st&&(st!==$t.current?(rt.current=st,v(st)):wn(st),Mo(l))},hA=(le,De)=>{Po.current=null,lo(!1),V([]),lb(le,De)},Qe=(le,De)=>{Po.current={id:le.id,contextId:hs(le)??De,waiting:!0},lb(le,De),qC()},Ma=(le,De)=>{if(!Pi.current)return;let st=++Hr.current,Lt=Date.now(),Sn=async()=>{if(Hr.current===st){try{let ni=await fetch(`/api/runs/${le}`);if(ni.ok){let Io=await ni.json();if(Hr.current!==st)return;Q(Io.run);let ja=sI(Io.run);if(ja==="finished"){hA(Io.run,De);return}if(ja==="awaiting"){Qe(Io.run,De);return}}}catch{}Date.now()-Ltni&&{...ni,status:"failed",error_message:"Timed out waiting for the run to finish."}),T("Timed out waiting for the run to finish."))}};Sn()},Fh=async({text:le,files:De,fromComposer:st=!1})=>{let Lt=(le||"").trim();if(!Lt&&De.length===0||C)return;T(null),O(null),he(null),lo(!0),M({}),V([]),Q({status:"pending",input_prompt:Lt,output:"",logs:[],started_at:new Date().toISOString()}),Tl(yt.current),F({content:Lt||"(see attached files)",attachments:De.map(({file:Io,...ja})=>ja)}),st&&(d(""),f([]));let Sn=$t.current;if(!Sn)try{Sn=await Oa()}catch(Io){T(`${Io.message} \u2014 running without a pinned conversation.`)}let ni=()=>{st&&(d(Lt),f(De)),F(null)};try{let Io=new FormData;Io.append("prompt",Lt),Io.append("action_name",l),Sn&&Io.append("params[context_id]",String(Sn)),W&&Io.append("sandbox_id",W),De.forEach(({file:kd})=>Io.append("attachments[]",kd,kd.name));let ja=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:Io}),ks=await U0(ja);if(ks.code==="sandbox_refused"&&Ie(),ja.status===402&&ks.upgrade_required){R(ks.usage),Q(kd=>({...kd,status:"failed",error_message:ks.message||"Plan limit reached"})),lo(!1),ni();return}if(!ja.ok)throw new Error(ks.error||"Run failed");Ma(ks.run.id,hs(ks.run)??Sn)}catch(Io){Q(ja=>({...ja,status:"failed",error_message:Io.message})),lo(!1),ni()}},uo=()=>Fh({text:c,files:p,fromComposer:!0}),Uh=(le,De)=>{let st=Po.current;!st||String(st.id)!==String(le.run_id)||(V(Lt=>[...Lt.filter(Sn=>Sn.request.id!==le.id),{request:le,outcome:De}]),Po.current={...st,waiting:!1},Ma(st.id,st.contextId))},ya=le=>{let De=sI(le);De==="finished"||vs.current||(T(null),M({}),V([]),Q(le),lo(!0),De==="awaiting"?Qe(le,hs(le)):Ma(le.id,hs(le)))},Ia=(le,De)=>{rt.current=le,De&&s.includes(De)&&De!==l&&u(De),v(le)},Cf=async le=>{try{let De=await fetch(`/api/runs/${le}`);if(!De.ok)return;let st=await De.json();if(!Pi.current||!st.run||String(st.agent?.id)!==String(e.id))return;let Lt=hs(st.run);Lt&&Ia(Lt,st.run.action_name),ya(st.run)}catch(De){console.error("Failed to open the linked run:",De)}},Da=le=>{!le||!le.text||Fh({text:le.text,files:[]})},Wh=le=>{le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&(le.preventDefault(),uo())},yd=async(le,De)=>{let st=$t.current,Lt=await fetch(`/api/interactions/${st}/messages/${le.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:De})}),Sn=await U0(Lt);if(!Lt.ok)throw new Error(Sn.error||`Could not save the message (HTTP ${Lt.status})`);await wn(st)},vd=async le=>{let De=$t.current;try{let st=await fetch(`/api/interactions/${De}/messages/${le.id}`,{method:"DELETE"});if(!st.ok){let Lt=await U0(st);throw new Error(Lt.error||`Could not delete the message (HTTP ${st.status})`)}_(null),await wn(De),Mo(l)}catch(st){_(st.message)}},co=le=>{se(!1),he(le),it(""),Je(null)},Ol=async()=>{let le=et.trim();if(!(!le||ve)){ue(!0),Je(null);try{let De=await Pa(),st=await fetch(`/api/interactions/${De}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:ne,content:le})}),Lt=await U0(st);if(!st.ok)throw new Error(Lt.error||`Could not add the message (HTTP ${st.status})`);it(""),he(null),await wn(De),Mo(l)}catch(De){Je(De.message)}finally{ue(!1)}}},ub=async le=>{let De=le;if(hs(le)==null||le.status==="awaiting_input")try{let Lt=await fetch(`/api/runs/${le.id}`);Lt.ok&&(De=(await Lt.json()).run)}catch(Lt){console.error("Failed to load run details:",Lt)}let st=hs(De);st?(O(null),st!==$t.current&&Ss(),Ia(st,De.action_name||le.action_name),ya(De)):O({...De,output:De.output??De.output_preview,error_message:De.error_message??De.error}),xs.current?.scrollIntoView({behavior:"smooth",block:"start"})},Hh=async()=>{z(!0),U(null);try{await Ah({planSlug:"pro"})}catch(le){U(le.message),z(!1)}},xd=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,cb=i.find(le=>le.name===l)?.prompt,bd=[e.instructions,l==="ask"?null:cb].map(le=>(le||"").trim()).filter(Boolean).join(` +Who changed the shipping policy last week?`,style:{...zu,width:"100%",fontFamily:W,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:W}},"# Heading")," lines group related tasks so they can be run together; ",at.default.createElement("code",{style:{fontFamily:W}},"| 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(We,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},ID.map(A))),at.default.createElement("div",null,at.default.createElement(We,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},oQ.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(We,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),at.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>b({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...zu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(We,{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=>b({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(pe,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&at.default.createElement(pe,{onClick:i},"Cancel"))))}function v_e(e,t){return e?`The judge runs on ${y_e[e]||e}.`:t?"Provider credentials could not be read, so the judge's provider is unknown. Check the provider API keys in Settings.":"No provider has credentials for a judge. Add a provider API key in Settings."}function x_e(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=Z(Q());var b_e={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:W,fontSize:12,color:"var(--color-info)"},So=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:W,fontSize:e,color:t,...r});function w_e({stats:e}){if(!e)return Ae.default.createElement("span",{style:So()},"\u2014");if(e.skipped)return Ae.default.createElement("div",null,Ae.default.createElement("span",{style:So(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Ae.default.createElement("div",{style:{...So(),marginTop:2,textWrap:"pretty"},title:e.reason},S0(e.reason,90)));let t=Number(e.score),r=bo[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${Kn(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${aa(e.min)} \xB7 max ${aa(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:So(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",aa(t)),e.source==="telemetry"&&Ae.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:So(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Ae.default.createElement("div",{style:{...So(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function S_e({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>BJ({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:N2()});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(Na,{kind:"fault"}),Ae.default.createElement(Ce,{tone:"error"},e.label),Ae.default.createElement("span",{style:So()},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(We,{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:W,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:So(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(pe,{size:"sm",onClick:()=>lt(e.action.path)},e.action.label),e.action?.hint&&Ae.default.createElement("span",{style:{...So(),whiteSpace:"nowrap"}},e.action.hint),Ae.default.createElement(F0,{build:o,style:{marginLeft:"auto"}})))}function jD({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,y]=(0,Ae.useState)(!1),x=(z,V)=>Ae.default.createElement("button",{type:"button",onClick:V,style:b_e},z),h=t.findIndex(z=>z.id===n),g=h>=0?t[h]:t[0],v=g?wh(g,Math.max(h,0),t,r):null,b=Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},x("Evaluations",l),Ae.default.createElement("span",{style:So(12)},"/"),x(e?.name||"Evaluation",u),Ae.default.createElement("span",{style:So(12)},"/"),Ae.default.createElement("span",{style:So(12,"var(--color-text-primary)",{fontWeight:700})},g?`Run #${v}`:"Runs"));if(!e)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Ae.default.createElement("div",null,x("Evaluations",l)),Ae.default.createElement(ze,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!g)return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},b,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(ze,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let k=_0(g),S=k.length?k:[null],w=bh(g),_=z=>w.find(V=>V.label===z)||(z==null?w[0]:null),A=g.scores?._verdict,C=Array.isArray(g.scores?._missing_models)?g.scores._missing_models:[],E=xh(g).map(([z,V])=>({key:z,value:V,criterion:k0(e,z)})),I=z=>E.filter(V=>Sl(V.criterion)===z).length,J=HI.filter(z=>I(z.id)>0),$=z=>S.some(V=>{let K=nf(z.value,V);return K&&(K.skipped||K.score!=null&&K.score<.7)}),U=E.filter(z=>(p==="all"||Sl(z.criterion)===p)&&(!m||$(z))),N=HI.map(z=>({...z,rows:U.filter(V=>Sl(V.criterion)===z.id)})).filter(z=>z.rows.length),T=y2(e,{...g,number:v}),D=Ni(g),O=wo(g.completed_at||g.created_at),j=g.status==="complete"&&g.samples_evaluated?` \xB7 ${Kn(g.samples_passed||0,g.samples_evaluated)} passed`:"",M={fontFamily:W,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},H={padding:"10px 12px",verticalAlign:"top"},G={padding:"7px 12px",verticalAlign:"middle"};return Ae.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},b,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 #${v}`),Ae.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)",textWrap:"pretty"}},`${e.name} \xB7 ${O} \xB7 @${e.agent?.name||"agent"} \xB7 ${rf(e,g)}${j}`)),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((z,V)=>Ae.default.createElement(Ln,{key:z.id,square:!0,mono:!0,selected:z.id===g.id,onClick:()=>i?.(z),title:`${z.status} \xB7 ${wo(z.completed_at||z.created_at)}`},`#${wh(z,V,t,r)}`)),Ae.default.createElement(pe,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ae.default.createElement(iD,{spend:D,judgedBy:vh(e,g)}),g.status==="failed"?Ae.default.createElement(ze,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Ae.default.createElement("span",{style:So(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},g.error_message)):g.status!=="complete"?Ae.default.createElement(ze,{"data-testid":"run-pending",padding:"14px 16px"},Ae.default.createElement("span",{style:So(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${g.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(B0,{rows:v2(g,{columns:k}),unit:"interaction",judgedBy:A?.judge||null,judgeEstimated:D?.judge?.estimated??!0}),Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},S.map(z=>{let V=sZ(g,z),K=_(z),ie=K?.samples??(z==null?g.samples_evaluated:null),Ie=K?.passed??(z==null?g.samples_passed:null),ge=[];return V.below>0&&ge.push({tone:"error",text:`below pass mark \xD7${V.below}`}),V.skipped>0&&ge.push({tone:"warning",text:`skipped \xD7${V.skipped}`}),Ae.default.createElement(L0,{key:z||"all",label:z,short:z?bn(z).short:"all samples",provider:K?.provider||(z?bn(z).provider:null)||null,winner:!!A?.winner&&A.winner===z,passed:Ie,total:ie,avgScore:V.avg,criteria:{cleared:V.cleared,scored:V.scored},latencyMs:K?.avg_duration_ms,inputTokens:K?.input_tokens,outputTokens:K?.output_tokens,cost:K?.cost,perInteraction:of(K?.cost,K?.priced),estimated:K?.estimated??!1,unit:"interaction",badges:ge})}))),(A||C.length>0)&&Ae.default.createElement(ze,{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(We,null,"Verdict"),A.judge&&Ae.default.createElement("span",{style:So()},`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:W,fontSize:12}},A.winner),A.rationale?` \xB7 ${A.rationale}`:"")),C.length>0&&Ae.default.createElement("span",{style:So(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Ae.default.createElement(ze,{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(We,{style:{marginRight:4}},"Criteria"),Ae.default.createElement(Ln,{selected:p==="all",onClick:()=>f("all")},`All ${E.length}`),J.map(z=>Ae.default.createElement(Ln,{key:z.id,selected:p===z.id,onClick:()=>f(z.id)},`${z.label} ${I(z.id)}`)),Ae.default.createElement(Ln,{square:!0,mono:!0,selected:m,onClick:()=>y(z=>!z),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:{...M,width:"34%"}},"Criterion"),Ae.default.createElement("th",{style:M},"Expects"),S.map(z=>Ae.default.createElement("th",{key:z||"score",style:M},z?Ae.default.createElement(Ae.default.Fragment,null,Ae.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},bn(z).short),(_(z)?.provider||bn(z).provider)&&Ae.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},_(z)?.provider||bn(z).provider)):"Score")))),Ae.default.createElement("tbody",null,N.map(z=>Ae.default.createElement(Ae.default.Fragment,{key:z.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)"}},z.label)),Ae.default.createElement("td",{style:G},Ae.default.createElement("span",{style:So()},`${z.rows.length} ${z.rows.length===1?"criterion":"criteria"}`)),S.map(V=>{let K=z.rows.filter(ge=>{let de=nf(ge.value,V);return de&&de.score!=null}),ie=K.filter(ge=>nf(ge.value,V).score>=.7).length,Ie=K.length&&ie===K.length?"var(--color-success-text)":ie===0&&K.length?"var(--color-error-text)":"var(--color-text-cell)";return Ae.default.createElement("td",{key:V||"score",style:G},Ae.default.createElement("span",{style:So(11,Ie,{fontWeight:600})},K.length?`${Kn(ie,K.length)} passed`:"\u2014"))})),z.rows.map(V=>Ae.default.createElement("tr",{key:V.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Ae.default.createElement("td",{style:H},Ae.default.createElement("div",{style:So()},V.key),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},m2(V.criterion))),Ae.default.createElement("td",{style:H},Ae.default.createElement("span",{style:{fontFamily:W,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:yh(V.criterion)},S0(yh(V.criterion),40))),S.map(K=>Ae.default.createElement("td",{key:K||"score",style:H},Ae.default.createElement(w_e,{stats:nf(V.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)"}},E.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(We,null,"What to fix"),Ae.default.createElement("span",{style:So()},T.length?St(T.length,"item"):"nothing")),T.length?Ae.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},T.map(z=>Ae.default.createElement(S_e,{key:z.kind,item:z,evaluation:e,run:g,number:v}))):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 (${Z1(.7)}) and nothing was skipped.`)),Ae.default.createElement(mf,{evaluation:e,run:g,spend:D,onDelete:c,deleting:d}))}var Pn=Z(Q());var zD={fontFamily:W,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},BD={padding:"8px 12px",verticalAlign:"middle",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},$D={...BD,fontFamily:W,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},LD={...zD,textAlign:"right"};function FD({rows:e=[],columns:t=[],testId:r="model-leaderboard"}){if(e.length<2)return null;let n=t.length>1?t.filter(o=>e.some(a=>a.byEvaluation?.[o.id]?.total>0)):[];return Pn.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:r},Pn.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},Pn.default.createElement(We,null,"Model leaderboard"),Pn.default.createElement("span",{style:{fontFamily:W,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`)),Pn.default.createElement("div",{style:{overflowX:"auto"}},Pn.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Pn.default.createElement("thead",null,Pn.default.createElement("tr",{style:{background:"var(--color-muted)"}},Pn.default.createElement("th",{style:{...LD,width:28}},"#"),Pn.default.createElement("th",{style:zD},"Model"),Pn.default.createElement("th",{style:{...zD,minWidth:160}},"Passed"),Pn.default.createElement("th",{style:LD},"Rate"),n.map(o=>Pn.default.createElement("th",{key:o.id,style:{...LD,maxWidth:140,overflow:"hidden",textOverflow:"ellipsis"},title:o.name},o.name)))),Pn.default.createElement("tbody",null,e.map(o=>{let{short:a,provider:i}=bn(o.label);return Pn.default.createElement("tr",{key:o.label,"data-testid":"model-leaderboard-row",title:`${o.label}: at least ${Ts(o.lower)} at 95% confidence`},Pn.default.createElement("td",{style:{...$D,color:"var(--color-text-muted)"}},o.rank),Pn.default.createElement("td",{style:BD},Pn.default.createElement("div",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap"}},a),i&&Pn.default.createElement("div",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)),Pn.default.createElement("td",{style:BD},Pn.default.createElement(Mu,{passed:o.passed,total:o.total,color:z0(o.ratio),valueWidth:56})),Pn.default.createElement("td",{style:{...$D,fontWeight:700,color:z0(o.ratio)}},Ts(o.ratio)),n.map(s=>{let l=o.byEvaluation?.[s.id],u=l?.total?l.passed/l.total:null;return Pn.default.createElement("td",{key:s.id,style:{...$D,color:z0(u)},title:l?.total?`${s.name}: ${Kn(l.passed,l.total)}`:`${s.name}: not run on this model`},Ts(u))}))})))))}var md=null,UD=new Set,iQ=()=>UD.forEach(e=>e(md));function k_e(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 Wr(e){return md&&md.resolve(!1),new Promise(t=>{md={...k_e(e),resolve:t},iQ()})}function sQ(e){if(!md)return;let{resolve:t}=md;md=null,iQ(),t(!!e)}function lQ(){return md}function uQ(e){return UD.add(e),()=>UD.delete(e)}function cQ(e,t){return e?.requireText?t===e.requireText:!0}var dQ=()=>{let e=Qn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=zI(window.location.search);return t?.runId?t:null},U2=()=>{let e=Qn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},pQ=()=>zI(window.location.search)?.evaluationId||(U2()?String(U2().evaluationId):null),F2=(e=11,t="var(--color-text-muted)")=>({fontFamily:W,fontSize:e,color:t}),__e=e=>{let t=Sh(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:y2(e,t).length+r:r},C_e={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 K0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Te.useState)(()=>e?null:dQ()),a=(0,Te.useRef)(null),[i,s]=(0,Te.useState)(0),[l,u]=(0,Te.useState)(null);(0,Te.useEffect)(()=>{let be=a.current?.contentDocument?.body;if(!be)return;let rt=()=>u(be.scrollHeight);if(rt(),typeof ResizeObserver>"u")return window.addEventListener("resize",rt),()=>window.removeEventListener("resize",rt);let pt=new ResizeObserver(rt);return pt.observe(be),()=>pt.disconnect()},[i,n]),(0,Te.useEffect)(()=>u(null),[n]);let[c,d]=(0,Te.useState)([]),[p,f]=(0,Te.useState)([]),[m,y]=(0,Te.useState)(void 0),[x,h]=(0,Te.useState)(!1),[g,v]=(0,Te.useState)(void 0),[b,k]=(0,Te.useState)(!0),[S,w]=(0,Te.useState)(null),[_,A]=(0,Te.useState)(null),[C,E]=(0,Te.useState)(()=>{if(e)return null;let be=U2();return be?.runId?be:null}),[I,J]=(0,Te.useState)(()=>e?null:pQ()),[$,U]=(0,Te.useState)({}),[N,T]=(0,Te.useState)(!1),[D,O]=(0,Te.useState)(null),[j,M]=(0,Te.useState)(null),[H,G]=(0,Te.useState)(null),[z,V]=(0,Te.useState)(!1),[K,ie]=(0,Te.useState)(!1),[Ie,ge]=(0,Te.useState)(0);(0,Te.useEffect)(()=>{if(e)return;let be=()=>{o(dQ());let rt=U2();E(rt?.runId?rt:null);let pt=pQ();J(pt),pt&&A(Qt=>new Set([...Qt||[],Number(pt)]))};return window.addEventListener("popstate",be),window.addEventListener("dashboard:navigate",be),()=>{window.removeEventListener("popstate",be),window.removeEventListener("dashboard:navigate",be)}},[e]);let de=(0,Te.useCallback)(async()=>{try{let be=new URLSearchParams;t&&be.set("agent_id",t),z&&be.set("archived","1");let rt=be.toString(),pt=await fetch(`/api/evaluations${rt?`?${rt}`:""}`);if(!pt.ok)throw new Error(`Request failed (${pt.status})`);let Qt=await pt.json();ge(Number(Qt.archived_count)||0),y(Qt.judge_provider??null),h(Qt.judge_provider_error===!0),v(Array.isArray(Qt.model_providers)?Qt.model_providers:null);let Wn=Qt.evaluations||[],uo=null;try{Wn=await tZ(Wn,I,fetch)}catch(nn){uo=nn.message}d(Wn),A(nn=>{if(nn)return nn;let Oa=I?Wn.find(Pa=>String(Pa.id)===I):Wn.find(Pa=>Pa.scenario_suite)||Wn[0];return new Set(Oa?[Oa.id]:[])}),w(uo)}catch(be){w(be.message),v(rt=>rt===void 0?null:rt)}finally{k(!1)}},[t,I,z]),R=(0,Te.useCallback)(async be=>{try{let rt=await fetch(`/api/evaluations/${be}`);if(!rt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${rt.status})`);let pt=await rt.json();U(Qt=>({...Qt,[be]:{runs:pt.evaluation?.runs||[],runCount:pt.evaluation?.run_count??null}}))}catch(rt){U(pt=>({...pt,[be]:{runs:null,runCount:null,error:rt.message}})),w(rt.message)}},[]);(0,Te.useEffect)(()=>{de(),fetch("/api/agents").then(be=>be.ok?be.json():{agents:[]}).then(be=>f(be.agents||[])).catch(()=>f([]))},[de]),(0,Te.useEffect)(()=>{new Set([..._||[],...C?[C.evaluationId]:[]]).forEach(rt=>{let pt=c.find(Qt=>Qt.id===rt);pt&&!pt.scenario_suite&&!$[rt]&&R(rt)})},[_,C,c,$,R]);let ee=be=>{!e&&Qn()!==be&&ad(be)},L=be=>!!_?.has(be),te=be=>{let rt=!L(be.id);A(pt=>{let Qt=new Set(pt||[]);return rt?Qt.add(be.id):Qt.delete(be.id),Qt}),ee(rt?`/evaluations/${be.id}`:"/evaluations")},F=(be,rt)=>{A(pt=>new Set([...pt||[],be.id])),E({evaluationId:be.id,runId:rt.id}),ee(`/evaluations/${be.id}/runs/${rt.id}`)},P=be=>{E(null),ee(be?`/evaluations/${be}`:"/evaluations")},Y=async be=>{O(be.id),w(null);try{let rt=await fetch(`/api/evaluations/${be.id}/run`,{method:"POST"}),pt=await rt.json().catch(()=>({}));if(!rt.ok){w((pt.errors||[pt.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${rt.status})`);return}await Promise.all([de(),R(be.id)]),pt.run&&C?.evaluationId===be.id&&F(be,pt.run)}finally{O(null)}},B=async(be,rt)=>{G(be.id),w(null);try{let pt=await fetch(`/api/evaluations/${be.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:rt}})}),Qt=await pt.json().catch(()=>({}));if(!pt.ok){w((Qt.errors||[Qt.error]).filter(Boolean).join(", ")||`${rt?"Archive":"Unarchive"} failed (HTTP ${pt.status})`);return}await de()}finally{G(null)}},oe=async be=>{if(await Wr({title:`Delete ${be.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:be.name})){M(be.id),w(null);try{let rt=await fetch(`/api/evaluations/${be.id}`,{method:"DELETE"});rt.ok||rt.status===404?(d(pt=>pt.filter(Qt=>Qt.id!==be.id)),A(pt=>{let Qt=new Set(pt||[]);return Qt.delete(be.id),Qt}),C?.evaluationId===be.id&&P(null)):w(`Delete failed (HTTP ${rt.status})`)}finally{M(null)}}};if(b)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 ne=t?c.filter(be=>String(be.agent?.id)===String(t)):c,he=be=>{let rt=$[be.id];return rt?.runs?{runs:rt.runs,runCount:be.run_count??rt.runCount??null,loaded:!0}:{runs:be.latest_run?[be.latest_run]:[],runCount:be.run_count??null,loaded:!1}};if(n){let be=mh(`/evaluations/${n.evaluationId}/runs/${n.runId}/report`),rt=Re(be.report),pt={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"},Qt=`${rt}?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(pe,{size:"sm",onClick:()=>{ad("/evaluations"),o(null)}},Te.default.createElement("span",{style:{fontFamily:W}},"<-")," 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:F2(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(kl,{url:Re(be.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(([Wn,uo,nn])=>Te.default.createElement("a",{key:Wn,href:Re(be[Wn]),download:!0,title:nn,"data-testid":`run-report-download-${Wn}`,style:pt},uo)),Te.default.createElement("a",{href:rt,target:"_blank",rel:"noopener noreferrer",title:"The report as one self-contained page, outside the dashboard",style:pt},"Open standalone ",Te.default.createElement("span",{style:{fontFamily:W}},"->")))),Te.default.createElement("iframe",{ref:a,src:Qt,title:"Evaluation run report",allow:"clipboard-write",onLoad:()=>s(Wn=>Wn+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 be=ne.find(rt=>rt.id===C.evaluationId);if(!be||!be.scenario_suite){let{runs:rt,runCount:pt,loaded:Qt}=be?he(be):{runs:[],runCount:null,loaded:!0};return Te.default.createElement(jD,{evaluation:be,runs:rt,runCount:pt,runId:C.runId,loading:!Qt,running:D===C.evaluationId,onSelectRun:Wn=>F(be,Wn),onRun:()=>Y(be),onBack:()=>P(null),onOpenEvaluation:()=>P(C.evaluationId),onDelete:be?()=>oe(be):void 0,deleting:j===C.evaluationId})}}let tt=mZ(ne,{focusId:I}),{samplesScored:it,samplesPassed:ve,passRatio:ce,spend:Ue}=tt,Je=hZ(tt),nt=[...new Set(ne.map(be=>be.agent?.name).filter(Boolean))],Tt=ne.reduce((be,rt)=>Math.max(be,qI(rt,Sh(rt)||rt.latest_run)),0),Lt=ne.map(__e),Hr=Lt.reduce((be,rt)=>be+rt,0),Io=Lt.filter(Boolean).length,vs=ne.length?[`${St(nt.length,"agent")} \xB7 ${Tt>1?`${Tt} models compared`:"no model comparisons"}`,Je].filter(Boolean).join(" \xB7 "):"none defined yet",Mi=tt.focused?"headline run of this evaluation":`headline run of ${St(tt.counted,"current evaluation")}${Je?` \xB7 ${Je}`:""}`,yt=gZ(tt),eo=yt.length>1?yt[0]:null,xs=Ue.agentCost!=null&&Ue.estimated||Ue.judgeCost!=null&&Ue.judgeEstimated,bs=Ue.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(Ue.interactions,"interaction")}`),Te.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:W,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)"}},Pr(Ue.agentCost,{estimated:Ue.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"},Ue.judgeCost!=null?`${Pr(Ue.judgeCost,{estimated:Ue.judgeEstimated})} \xB7 offline`:"none")),xs&&Te.default.createElement("span",{title:al,style:{fontFamily:W,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}},(Ie>0||z)&&Te.default.createElement(pe,{size:"sm",onClick:()=>V(be=>!be),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},z?"Hide archived":`Show archived (${Ie})`),Te.default.createElement(pe,{variant:"primary",onClick:()=>T(!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(DD,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:x,modelProviders:g,onCancel:()=>T(!1),onCreated:async be=>{T(!1),await de(),be?.id!=null&&(A(rt=>new Set([...rt||[],be.id])),ee(`/evaluations/${be.id}`))}}),Te.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},Te.default.createElement(uh,{label:"Evaluations",value:ne.length,sub:vs,testId:"stat-evaluations"}),Te.default.createElement(uh,{label:"Samples scored",value:it,sub:Mi,testId:"stat-samples-scored"}),Te.default.createElement(uh,{label:"Pass rate",value:Ts(ce),valueColor:ce==null?"var(--color-text-muted)":bo[Pu(ce)].strong,sub:ce==null?Je||"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"},`${ve}/${it} passed`),eo&&Te.default.createElement(Te.default.Fragment,null,Te.default.createElement("span",{"data-testid":"stat-pass-rate-leader",title:`${eo.label} ${Kn(eo.passed,eo.total)}: best of ${yt.length} models by the low end of its pass rate`,style:{display:"flex",gap:6,minWidth:0,fontFamily:W,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)"}},bn(eo.label).short),Te.default.createElement("span",{style:{flexShrink:0}},Ts(eo.ratio))),Te.default.createElement("button",{type:"button",onClick:()=>ie(be=>!be),"aria-expanded":K,"data-testid":"stat-pass-rate-leaderboard-toggle",style:{alignSelf:"flex-start",background:"transparent",border:"none",padding:0,cursor:"pointer",fontFamily:W,fontSize:11,color:"var(--color-text-secondary)"}},Te.default.createElement(Na,{kind:"chevron",open:K})," ",`${K?"hide":"compare"} ${yt.length} models`))),testId:"stat-pass-rate"}),Te.default.createElement(uh,{label:"To fix",value:Hr,valueColor:Hr?"var(--color-error)":void 0,sub:Hr?`across ${St(Io,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),Te.default.createElement(uh,{label:"Cost / interaction",value:$u(Ue.perInteraction,Ue.estimated),valueColor:Ue.perInteraction==null?"var(--color-text-muted)":void 0,sub:bs,testId:"stat-agent-cost"})),K&&Te.default.createElement(FD,{rows:yt,columns:tt.columns}),Te.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},ne.map((be,rt)=>{let pt=be.latest_run,Qt=Sh(be),Wn=pt&&Qt&&pt.id!==Qt.id?pt:null,uo=VI(be),nn=C_e[uo],Oa=uo==="archived",Pa=L(be.id),ws=!!be.scenario_suite,co=Lt[rt],Uu=(be.criteria||[]).some(to=>Sl(to)==="telemetry"),{runs:Ss,runCount:Wu}=he(be);return Te.default.createElement(ze,{key:be.id,padding:0,testId:"evaluation-card","data-telemetry":Uu?"true":"false","data-kind":ws?"suite":"sampling","data-open":Pa?"true":"false","data-standing":uo,style:{overflow:"hidden",opacity:Oa?.75:1}},Te.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Pa,onClick:()=>te(be),onKeyDown:to=>{(to.key==="Enter"||to.key===" ")&&(to.preventDefault(),te(be))},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(Na,{kind:"chevron",open:Pa}),Te.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:W,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:ws?"scenario suite":"sampling evaluation"},ws?"=":"~"),Te.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},be.name),Te.default.createElement("span",{style:F2(11)},`@${be.agent?.name||"agent"} \xB7 ${rf(be)}`),Te.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},Te.default.createElement("span",{style:F2(11)},wo(pt?.completed_at||pt?.created_at||be.created_at)),co>0&&Te.default.createElement("span",{style:F2(11,"var(--color-error)")},`${co} to fix`),nn&&Te.default.createElement(Ce,{tone:nn.tone,size:10,style:{padding:"1px 6px"},title:nn.title,testId:"evaluation-standing"},nn.text),Wn&&Te.default.createElement(pf,{run:Wn,testId:"evaluation-newer-run-badge"}),Te.default.createElement(pf,{run:Qt||pt,testId:ws?"suite-pass-badge":"evaluation-pass-badge"}),Te.default.createElement("button",{type:"button",onClick:to=>{to.stopPropagation(),B(be,!Oa)},disabled:H===be.id,title:Oa?"Bring this evaluation back into the list and the tiles":"Archive: keep its runs, leave it out of the list and the tiles","data-testid":"evaluation-archive-toggle",style:{background:"transparent",border:"none",padding:0,cursor:H===be.id?"not-allowed":"pointer",fontFamily:W,fontSize:11,color:"var(--color-text-muted)",opacity:H===be.id?.5:1}},H===be.id?"\u2026":Oa?"unarchive":"archive"))),Pa&&Te.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},ws?Te.default.createElement(MD,{evaluation:be,modelProviders:g,onChanged:de,onDelete:()=>oe(be),deleting:j===be.id,initialRunId:C?.evaluationId===be.id?C.runId:null,onRunSelected:to=>ee(`/evaluations/${be.id}/runs/${to}`)}):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)"}},Ss.length?uJ(Ss,Wu):`@${be.agent?.name||"agent"} \xB7 no runs yet`),Te.default.createElement(pe,{variant:"primary",size:"sm",disabled:D===be.id,onClick:to=>{to.stopPropagation(),Y(be)},testId:"evaluation-run-button"},D===be.id?"Running\u2026":`Run ${rf(be)}`)),Te.default.createElement(cD,{runs:Ss,runCount:Wu,evaluation:be,agentName:be.agent?.name,previousRun:be.previous_run,onOpen:to=>F(be,to),testId:"evaluation-runs-panel"}),Te.default.createElement(mf,{evaluation:be,run:pt,spend:Ni(pt),onDelete:()=>oe(be),deleting:j===be.id}))))})),ne.length===0&&!N&&Te.default.createElement(ze,{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 He=Z(Q());var A_e=e=>new Date(`${e}T00:00:00`),E_e=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function WD({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=qi(n),[a,i]=(0,He.useState)(null),[s,l]=(0,He.useState)(!0),{timeWindow:u,days:c}=vl(),[d,p]=(0,He.useState)("overview");(0,He.useEffect)(()=>{f()},[e?.id,c]);let f=async()=>{if(e?.id){l(!0);try{let b=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(b)}catch(v){console.error("Failed to load analytics:",v)}finally{l(!1)}}},m=v=>v?v<1e3?`${v}ms`:`${(v/1e3).toFixed(2)}s`:"-",y=v=>v?v>=1e6?`${(v/1e6).toFixed(1)}M`:v>=1e3?`${(v/1e3).toFixed(1)}K`:v.toString():"0",x=v=>{switch(v){case"complete":return"bg-green-500";case"failed":return"bg-red-500";case"running":return"bg-blue-500";case"pending":return"bg-yellow-500";case"cancelled":return"bg-gray-500";default:return"bg-gray-400"}};if(s&&!a)return 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"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return He.default.createElement("div",{className:"space-y-6"},r?He.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&He.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),He.default.createElement(xl,null)):He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",{className:"flex items-center space-x-4"},He.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},He.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),He.default.createElement("div",null,He.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),He.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&He.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),He.default.createElement(xl,null))),!r&&He.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},E_e.map(v=>He.default.createElement("button",{key:v.id,onClick:()=>p(v.id),className:`px-4 py-1.5 text-sm rounded-md transition-colors ${d===v.id?"shadow":""}`,style:d===v.id?{background:o.cardBg,color:o.textPrimary}:{color:o.textSecondary}},v.label))),g==="traces"&&He.default.createElement(Zp,{agentId:e.id,embedded:!0}),g==="interactions"&&He.default.createElement(ju,{agentId:e.id,embedded:!0}),g==="overview"&&He.default.createElement(He.default.Fragment,null,He.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},He.default.createElement(W2,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),He.default.createElement(W2,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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}),He.default.createElement(W2,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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}),He.default.createElement(W2,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:He.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},He.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})),He.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},He.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?He.default.createElement("div",{className:"h-48"},He.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,b)=>He.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},He.default.createElement("div",{className:"relative w-full"},He.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),He.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(b===0||b===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&He.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},A_e(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):He.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),He.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?He.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([v,b])=>{let k=a?.summary?.total_runs||1,S=(b/k*100).toFixed(1);return He.default.createElement("div",{key:v},He.default.createElement("div",{className:"flex justify-between text-sm mb-1"},He.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),He.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},b," (",S,"%)")),He.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},He.default.createElement("div",{className:`h-full ${x(v)} rounded-full transition-all`,style:{width:`${S}%`}})))})):He.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&He.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),He.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>He.default.createElement("div",{key:v.id,className:"flex items-start space-x-3 p-3 rounded-lg",style:{background:n?"rgba(220,38,38,0.12)":"#fef2f2"}},He.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"},He.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"})),He.default.createElement("div",{className:"flex-1 min-w-0"},He.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),He.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),He.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),He.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),He.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var fQ={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 W2({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=fQ[n]||fQ.rose;return He.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",null,He.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),He.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),He.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var fe=Z(Q());var N_e={active:"success",configured:"info",available:"warning",idle:"muted"},T_e={agent_defined:"success",dashboard:"success",mcp:"info"},mQ="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",gQ="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",O_e=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],hQ={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:W,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},El={fontFamily:W,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},H2={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function xQ({on:e,onClick:t,title:r}){return fe.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"}},fe.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 yQ({on:e,dim:t=!1}){return fe.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:W,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 P_e({tool:e,state:t,onToggle:r}){if(!t)return fe.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.`),fe.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"}},fe.default.createElement(xQ,{on:n,title:o,onClick:()=>r(e)}))}function q2({children:e,onClick:t,disabled:r,title:n}){return fe.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:W,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 vQ({children:e}){return fe.default.createElement("div",{style:{overflowX:"auto"}},fe.default.createElement("div",{style:{minWidth:800}},e))}function HD({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,fe.useState)(null),[l,u]=(0,fe.useState)(null),[c,d]=(0,fe.useState)("7d"),[p,f]=(0,fe.useState)(""),[m,y]=(0,fe.useState)(null),[x,h]=(0,fe.useState)(null),[g,v]=(0,fe.useState)(!1),[b,k]=(0,fe.useState)(null),[S,w]=(0,fe.useState)({}),_=(ew.find(F=>F.value===c)||ew[1]).hours;(0,fe.useEffect)(()=>{let F=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${_}`).then(P=>{if(!P.ok)throw new Error(`Request failed (${P.status})`);return P.json()}).then(P=>{F||s(P)}).catch(P=>{F||u(P.message)}),()=>{F=!0}},[e.id,_]);let A=(0,fe.useMemo)(()=>({services:[],tools:[]}),[]),C=i||A,E=(0,fe.useMemo)(()=>t.tools||[],[t.tools]),I=(0,fe.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),J=(0,fe.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),$=(0,fe.useMemo)(()=>R1(C,I),[C,I]),U=(0,fe.useMemo)(()=>O6(C,$,{query:p,filter:m}),[C,$,p,m]),N=(0,fe.useMemo)(()=>M6(C,$,E,{query:p,source:x,enabledOnly:g}),[C,$,E,p,x,g]),T=(0,fe.useMemo)(()=>I6(C,$,E,{range:c}),[C,$,E,c]),D=(0,fe.useMemo)(()=>$6(C,{tools:E,mcpServers:I,approvalRequiredTools:J},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,E,I,J,e]),O=C.usage_available!==!1,j=F=>O?F:"\u2014",M=(0,fe.useCallback)(F=>{r("mcp_servers",L6(C,F,I))},[C,I,r]),H=(0,fe.useCallback)(F=>{let P=$[F.key];M({...$,[F.key]:{...P,on:!P.on}})},[$,M]),G=(0,fe.useCallback)((F,P)=>{let Y=$[F.key];Y.on&&M({...$,[F.key]:{...Y,tools:{...Y.tools,[P.name]:!Y.tools[P.name]}}})},[$,M]),z=(0,fe.useCallback)((F,P)=>{let Y=$[F.key],B=Object.fromEntries((F.tools||[]).map(oe=>[oe.name,P]));M({...$,[F.key]:{on:P||Y.on,tools:B}})},[$,M]),V=(0,fe.useCallback)(F=>{r("tools",z6(C,F));let P=Nm(F.filter(Y=>!E.includes(Y)));P.length>0&&r("approval_required_tools",xT(J,P,!0))},[C,E,J,r]),K=(0,fe.useCallback)(F=>{F.editable&&V(F.on?E.filter(P=>P!==F.key):[...E,F.key])},[E,V]),ie=(0,fe.useCallback)((F,P)=>{F.editable&&V(P?[...E,...F.keys.filter(Y=>!E.includes(Y))]:E.filter(Y=>!F.keys.includes(Y)))},[E,V]),Ie=(0,fe.useCallback)(F=>{r("approval_required_tools",j6(J,F,e.approval_required_tools||[]))},[J,e,r]),ge=(0,fe.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),de=(C.services||[]).filter(F=>$[F.key]?.on),R=N.find(F=>F.source==="mcp"),L=N.filter(F=>F.source!=="mcp").reduce((F,P)=>F+P.enabledCount,0)+(R?R.total:0),te=N.reduce((F,P)=>F+P.total,0);return l?fe.default.createElement(ze,null,fe.default.createElement(We,null,"Tools & MCP services"),fe.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?fe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},fe.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},fe.default.createElement("div",{style:{flex:1,minWidth:260}},fe.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),fe.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.")),fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.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)"}},fe.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-text-muted)"}},"?"),fe.default.createElement("input",{value:p,onChange:F=>f(F.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}})),fe.default.createElement(ps,{options:ew,value:c,onChange:d}))),fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},T.map(F=>fe.default.createElement(ze,{key:F.key,padding:"14px 16px",testId:`roster-stat-${F.key}`},fe.default.createElement(We,{size:11,spacing:"0.05em"},F.label),fe.default.createElement("div",{style:{marginTop:6,fontFamily:W,fontSize:26,fontWeight:700,lineHeight:1.1,color:F.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},F.value),fe.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},F.sub)))),fe.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},fe.default.createElement(We,null,"MCP services"),fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},de.length," of ",(C.services||[]).length," enabled \xB7 ",R?R.total:0," tools offered"),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},fe.default.createElement(Ln,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),O_e.map(F=>fe.default.createElement(Ln,{key:F.value,selected:m===F.value,onClick:()=>y(m===F.value?null:F.value)},F.label,F.value==="enabled"?` ${de.length}`:"")),fe.default.createElement(Gr,{href:Re("/mcp"),onClick:()=>lt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),fe.default.createElement(vQ,null,fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:mQ,...hQ}},fe.default.createElement("span",null,"On"),fe.default.createElement("span",null,"Service"),fe.default.createElement("span",null,"Status"),fe.default.createElement("span",{style:{textAlign:"right"}},"Tools"),fe.default.createElement("span",{style:{textAlign:"right"}},"Calls"),fe.default.createElement("span",{style:{textAlign:"right"}},"Errors"),fe.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),fe.default.createElement("span",null)),U.map(F=>{let P=b===F.key;return fe.default.createElement("div",{key:F.key},fe.default.createElement("div",{className:"aa-roster-row","data-on":F.on?"true":"false","data-testid":`service-row-${F.key}`,style:{display:"grid",gridTemplateColumns:mQ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},fe.default.createElement(xQ,{on:F.on,onClick:()=>H(F),title:`${F.on?"Disable":"Enable"} ${F.name} for this agent`}),fe.default.createElement("div",{onClick:()=>k(P?null:F.key),style:{minWidth:0,cursor:"pointer"}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},F.name),F.first_party&&fe.default.createElement(Ce,{tone:"accent",size:10},"first-party"),Xd(F)&&fe.default.createElement(Ce,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),nv(F)&&fe.default.createElement(Ce,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),tw(F)&&fe.default.createElement(Ce,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),F.partial&&fe.default.createElement(Ce,{tone:"warning",size:10},F.partialLabel)),fe.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...H2}},F.description)),fe.default.createElement("span",null,fe.default.createElement(Ce,{tone:N_e[F.status]||"muted"},F.status)),fe.default.createElement("span",{style:{...El,color:F.on?"var(--color-text-primary)":"var(--color-text-muted)"}},F.toolsLabel),fe.default.createElement("span",{style:El},j(F.calls)),fe.default.createElement("span",{style:{...El,color:F.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},j(F.errors)),fe.default.createElement("span",{style:{...El,color:"var(--color-text-muted)"}},j(rv(F.last_seen))),fe.default.createElement("span",{onClick:()=>k(P?null:F.key),style:{cursor:"pointer",textAlign:"center"}},fe.default.createElement(Na,{kind:"chevron",open:P}))),P&&fe.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},fe.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Tools offered"),fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},F.transport),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},fe.default.createElement(q2,{onClick:()=>z(F,!0),title:`Offer every tool ${F.name} serves`},"all"),fe.default.createElement(q2,{onClick:()=>z(F,!1),disabled:!F.on,title:`Offer none of ${F.name}'s tools`},"none"))),F.tools.length===0?fe.default.createElement(tn,{style:{padding:"10px 0"}},N6(F)):fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},F.tools.map(Y=>fe.default.createElement("div",{key:Y.name,className:"aa-roster-row",onClick:()=>G(F,Y),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:F.on?"pointer":"default",opacity:F.on?1:.55}},fe.default.createElement(yQ,{on:Y.on,dim:!F.on}),fe.default.createElement("span",{style:{minWidth:0}},fe.default.createElement("span",{style:{display:"block",fontFamily:W,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)",...H2}},Y.name),fe.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...H2}},Y.description)),fe.default.createElement("span",{style:{...El,color:"var(--color-text-secondary)"}},j(Y.calls)),fe.default.createElement("span",{style:{...El,color:Y.errors?"var(--color-error-text)":"var(--color-text-muted)"}},j(Y.errors?`${Y.errors} err`:yT(Y.avg_duration_ms)))))),!F.on&&fe.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",F.name," on offers these ",F.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),U.length===0&&fe.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),fe.default.createElement(ze,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},fe.default.createElement(We,null,"Tools"),fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},L," enabled of ",te," available"),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},fe.default.createElement(Ln,{selected:!x,onClick:()=>h(null)},"All ",te),N.map(F=>fe.default.createElement(Ln,{key:F.source,selected:x===F.source,onClick:()=>h(x===F.source?null:F.source)},F.name," ",F.total)),fe.default.createElement(Ln,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),fe.default.createElement(vQ,null,fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:gQ,...hQ}},fe.default.createElement("span",null),fe.default.createElement("span",null,"Tool"),fe.default.createElement("span",null,"Source"),fe.default.createElement("span",{style:{textAlign:"right"}},"Calls"),fe.default.createElement("span",{style:{textAlign:"right"}},"Errors"),fe.default.createElement("span",{style:{textAlign:"right"}},"Avg"),fe.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),fe.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(F=>{let P=S[F.source]!==!0;return fe.default.createElement("div",{key:F.source},fe.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"}},fe.default.createElement("span",{onClick:()=>w({...S,[F.source]:P}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},fe.default.createElement(Na,{kind:"chevron",open:P}),fe.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},F.name)),fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},F.meta),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-cell)"}},F.countLabel),F.editable&&fe.default.createElement(fe.default.Fragment,null,fe.default.createElement(q2,{onClick:()=>ie(F,!0)},"all"),fe.default.createElement(q2,{onClick:()=>ie(F,!1)},"none")))),P&&F.rows.map(Y=>fe.default.createElement("div",{key:Y.key,className:"aa-roster-row","data-on":Y.on?"true":"false","data-testid":`tool-row-${Y.key}`,onClick:()=>K(Y),style:{display:"grid",gridTemplateColumns:gQ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:Y.editable?"pointer":"default",opacity:Y.editable?1:.75}},fe.default.createElement(yQ,{on:Y.on,dim:!Y.editable}),fe.default.createElement("div",{style:{minWidth:0}},fe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},fe.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},Y.name),Y.source==="mcp"&&fe.default.createElement(Ce,{size:10},"via ",Y.server),Y.source==="agent_defined"&&(Y.editable?fe.default.createElement(Ce,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):fe.default.createElement(Ce,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),O&&Y.on&&!Y.calls&&fe.default.createElement(Ce,{size:10},"unused")),fe.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...H2}},Y.description)),fe.default.createElement("span",null,fe.default.createElement(Ce,{tone:T_e[Y.source]||"muted"},hT[Y.source])),fe.default.createElement("span",{style:El},j(Y.calls)),fe.default.createElement("span",{style:{...El,color:Y.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},j(Y.errors)),fe.default.createElement("span",{style:{...El,color:"var(--color-text-secondary)"}},j(yT(Y.avg_duration_ms))),fe.default.createElement("span",{style:{...El,color:"var(--color-text-muted)"}},j(rv(Y.last_seen))),fe.default.createElement(P_e,{tool:Y,state:vT(Y,J),onToggle:Ie}))))}),N.every(F=>F.rows.length===0)&&fe.default.createElement(tn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),fe.default.createElement(ze,{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"},fe.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},fe.default.createElement(We,{size:11,spacing:"0.05em"},L," tools \xB7 ",de.length," services"),fe.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.")),fe.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},D>0&&fe.default.createElement(fe.default.Fragment,null,fe.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-warning-text)"}},D," change",D===1?"":"s"," pending"),fe.default.createElement(pe,{variant:"secondary",onClick:ge},"Discard")),fe.default.createElement(pe,{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")))):fe.default.createElement(ze,null,fe.default.createElement(tn,null,"loading the roster\u2026"))}var Jt=Z(Q());function qD({agentId:e,colors:t}){let[r,n]=(0,Jt.useState)(""),[o,a]=(0,Jt.useState)(""),[i,s]=(0,Jt.useState)(""),[l,u]=(0,Jt.useState)(1),[c,d]=(0,Jt.useState)(null),[p,f]=(0,Jt.useState)(null),[m,y]=(0,Jt.useState)(0);(0,Jt.useEffect)(()=>{let h=new AbortController;d(null),f(null);let g=new URLSearchParams({agent_id:e,rating:r,from:o,to:i,page:l});return fetch(Re(`/api/feedback?${g}`),{signal:h.signal}).then(async v=>{if(!v.ok)throw new Error("Could not load feedback.");return v.json()}).then(d).catch(v=>{v.name!=="AbortError"&&f(v.message)}),()=>h.abort()},[e,r,o,i,l,m]);let x=h=>g=>{h(g.target.value),u(1)};return Jt.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},Jt.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},Jt.default.createElement("label",null,"Rating ",Jt.default.createElement("select",{value:r,onChange:x(n),style:{color:t.textPrimary,background:t.cardBg}},Jt.default.createElement("option",{value:""},"All ratings"),Jt.default.createElement("option",{value:"positive"},"Thumbs up"),Jt.default.createElement("option",{value:"negative"},"Thumbs down"))),Jt.default.createElement("label",null,"From ",Jt.default.createElement("input",{type:"date",value:o,onChange:x(a),style:{color:t.textPrimary,background:t.cardBg}})),Jt.default.createElement("label",null,"To ",Jt.default.createElement("input",{type:"date",value:i,onChange:x(s),style:{color:t.textPrimary,background:t.cardBg}})),Jt.default.createElement("button",{type:"button",onClick:()=>y(h=>h+1)},"Refresh")),p&&Jt.default.createElement("p",{role:"alert"},p),!c&&!p&&Jt.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&Jt.default.createElement(Jt.default.Fragment,null,Jt.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&&Jt.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),Jt.default.createElement("ul",null,c.feedback.map(h=>Jt.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},Jt.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),Jt.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&Jt.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&Jt.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),Jt.default.createElement("a",{className:"underline",href:Re(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&Jt.default.createElement("p",null,"Response span: ",Jt.default.createElement("code",null,h.span_id))))),Jt.default.createElement("div",{className:"flex gap-4 mt-4"},Jt.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),Jt.default.createElement("span",null,"Page ",l),Jt.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var M_e=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],SQ=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],I_e=SQ.map(e=>e.id),bQ={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"]}},D_e={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function gd({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(bQ[e]||bQ.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?Pt.mono:void 0,whiteSpace:"nowrap"}},n)}function fa({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:Qo,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 wQ({tabs:e,active:t,onChange:r,colors:n}){return _e.default.createElement("div",{style:{display:"flex",alignItems:"center"}},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?Qo:"transparent"}`,color:a?Qo:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function K2({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=qi(c),[p,f]=(0,_e.useState)(u||"config"),[m,y]=(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"}),[x,h]=(0,_e.useState)([]),[g,v]=(0,_e.useState)(!1),[b,k]=(0,_e.useState)(""),S=xc([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"});v($)},[m,e]),(0,_e.useEffect)(()=>{p==="versions"?w():p==="code"&&_()},[p]);let w=async()=>{try{let U=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(U.versions)}catch($){console.error("Failed to load versions:",$)}},_=async()=>{try{let U=await(await fetch(`/api/agents/${e.id}/export`)).json();k(U.code)}catch($){console.error("Failed to load code preview:",$)}},A=($,U)=>{y(N=>({...N,[$]:U}))},C=($,U)=>{y(N=>{let T=N[$]||[],D=T.includes(U)?T.filter(O=>O!==U):[...T,U];return{...N,[$]:D}})},E=()=>{r(m)},I=I_e.includes(p),J=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"}},_e.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:Pt.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),_e.default.createElement(In,{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(gd,{tone:D_e[m.status]||"neutral",darkMode:c},m.status),g&&_e.default.createElement(gd,{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",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&_e.default.createElement(fa,{variant:"secondary",colors:d,onClick:a},"Duplicate"),_e.default.createElement(fa,{variant:"primary",colors:d,onClick:o},"Run Agent"))),_e.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto"}},_e.default.createElement(wQ,{tabs:M_e,active:p,onChange:f,colors:d}),_e.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),_e.default.createElement(wQ,{tabs:SQ,active:p,onChange:f,colors:d})),J?_e.default.createElement(HD,{agent:e,formData:m,updateField:A,onSave:E,hasChanges:g,isLoading:l}):I?_e.default.createElement("div",null,p==="traces"&&_e.default.createElement(Zp,{agentId:e.id,embedded:!0}),p==="metrics"&&_e.default.createElement(WD,{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:Pt.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),_e.default.createElement(ju,{agentId:e.id,embedded:!0})),p==="evals"&&_e.default.createElement(K0,{embedded:!0,agentId:e.id}),p==="feedback"&&_e.default.createElement(qD,{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($_e,{formData:m,updateField:A,providerModels:S,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&_e.default.createElement(L_e,{formData:m,updateField:A,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&_e.default.createElement(z_e,{versions:x,agentId:e.id,onRestore:w,colors:d,darkMode:c}),p==="code"&&_e.default.createElement(B_e,{code:b,colors:d})),g&&!J&&_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(fa,{variant:"primary",size:"sm",colors:d,onClick:E,disabled:l},l?"Saving\u2026":"Save Changes"))))}var Nl=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Bu=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),j_e=e=>({fontFamily:Pt.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function $_e({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",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(n)},"Agent Name"),_e.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Bu(n)})),_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(n)},"Preset Type"),_e.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Bu(n)},Object.keys(km).map(i=>_e.default.createElement("option",{key:i,value:i},i))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(n)},"Description"),_e.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Bu(n),resize:"vertical"}})),_e.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(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:Bu(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:Nl(n)},"Model"),_e.default.createElement(Rl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Bu(n),fontFamily:Pt.mono}}))),_e.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(n)},"Temperature"," ",_e.default.createElement("span",{style:{fontFamily:Pt.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:Qo}})),_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(n)},"Status"),_e.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Bu(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:j_e(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(fa,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function L_e({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:Nl(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:{...Bu(o),fontFamily:Pt.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:{...Nl(o),marginBottom:0}},"Action Prompts"),_e.default.createElement(fa,{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:Pt.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:Pt.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:{...Bu(o),flex:1,padding:"6px 10px",fontFamily:Pt.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:Qo}}),"Expose as tool"),_e.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:Pt.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:{...Bu(o),fontFamily:Pt.mono,resize:"vertical"}}))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:Nl(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?Qo:o.inputBorder}`,background:c?Qo:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function z_e({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await Wr({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?Qo: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:Pt.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&_e.default.createElement(gd,{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:Pt.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&_e.default.createElement(fa,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):_e.default.createElement(F_e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function B_e({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(fa,{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:Pt.mono,fontSize:"12px",lineHeight:1.6,margin:0}},_e.default.createElement("code",null,e||"Loading...")))}function F_e({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:Pt.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 X=Z(Q());async function Oh(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var V2=Z(Q());var U_e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var _Q=Object.freeze({events:500,chars:262144}),W_e=16*1024,H_e=3;function q_e(e){return{emit:e,maskAllInputs:!0,blockSelector:U_e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function K_e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function V_e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function G_e(e,t=_Q){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 kQ(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function CQ({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=_Q,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=null,m=null,y=null,x=!1,h=!1,g=null,v=0;function b(U){d!==U&&(d=U,i(U))}function k(){u.length=0,c=0}function S(){f&&f(),f=null,m=null,y!==null&&o.clearInterval(y),y=null,a?.removeEventListener?.("pagehide",I)}function w(U){h=!0,k(),S(),b(U)}function _(U){if(x||h)return;let N=K_e(U);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function A(U,N){let T=V_e(U,n());try{let D=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:T,keepalive:N&&T.length<=W_e});return kQ(D.status)}catch{return"retry"}}async function C(U){for(;u.length>0&&!h;){let N=u.splice(0,G_e(u,s)),T=N.reduce((O,j)=>O+j.length+1,0);c-=T;let D=await A(N,U);if(D==="sent"){v=0;continue}if(D!=="retry"){w(D);return}if(v+=1,U||v>=H_e){v=0,k(),m&&m();return}u.unshift(...N),c+=T;return}}function E({final:U=!1}={}){return p===null||h?Promise.resolve():(g||(g=C(U).finally(()=>{g=null})),g)}function I(){E({final:!0})}async function J(){if(d!=="idle"||x)return;b("starting");let U;try{U=await r("/api/session_recordings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent_context_id:e})})}catch{x||w("failed");return}if(x)return;if(!U.ok){w(kQ(U.status)==="off"?"off":"failed");return}let N=await U.json().catch(()=>null);if(x)return;if(p=N?.recording?.id??null,p===null){w("failed");return}let T;try{({record:T}=await t())}catch{x||w("failed");return}if(x)return;let D=null;try{D=typeof T=="function"?T(q_e(_)):null}catch{D=null}if(typeof D!="function"){w("failed");return}f=D,m=()=>T.takeFullSnapshot?.(),y=o.setInterval(()=>E(),l),a?.addEventListener?.("pagehide",I),b("recording")}async function $(){x||(x=!0,S(),!h&&(b("stopped"),g&&await g,await E({final:!0})))}return{start:J,stop:$,flush:E,get state(){return d}}}function KD(e,t){let[r,n]=(0,V2.useState)("idle");return(0,V2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=CQ({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 Y_e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},X_e=(e,t)=>{let r=Y_e[e]||{role:e,label:e};return{...jn(r.role,t),label:r.label}},VD={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},Z_e=["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"],J_e=["user","assistant","tool"],Q_e=1200,R_e=600*1e3,G2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",AQ=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},GD=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()]},hs=e=>e?.context_id??e?.output_metadata?.context_id??null,V0=e=>e.json().catch(()=>({})),NQ=({open:e,color:t})=>X.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}},X.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})),eCe=e=>typeof e=="string"?e:e?.name||e?.key||"?";function EQ({label:e,names:t,colors:r}){return X.default.createElement("div",{className:"flex justify-between gap-3"},X.default.createElement("dt",{className:"shrink-0",style:{color:r.textSecondary}},e),X.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 tCe({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=GD(e),i=UC(t);return X.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=X_e(s.kind,t);return X.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},X.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)"}:{}},X.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),X.default.createElement("div",{className:"min-w-0 flex-1"},X.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&X.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),X.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"?X.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?X.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):X.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${G2(s.duration_ms)}`),s.at&&X.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&X.default.createElement(NQ,{open:l,color:r.textMuted})),l&&X.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&&X.default.createElement("div",null,X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),X.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},AQ(s.input))),s.output&&X.default.createElement("div",null,X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),X.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"}:{}}},AQ(s.output)))))}))}function rCe({run:e,darkMode:t,colors:r}){return e?X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},X.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},X.default.createElement(gd,{tone:VD[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&X.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?X.default.createElement("span",null,G2(e.duration_ms)):null,e.total_tokens?X.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&X.default.createElement("a",{href:Re(`/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 YD({agent:e,onBack:t,recorderUrl:r=null,freshConversation:n=!1}){let{darkMode:o}=ut(),a=qi(o),i=e.action_prompts||e.actionPrompts||[],s=["ask",...i.map(le=>le.name).filter(Boolean)],[l,u]=(0,X.useState)("ask"),[c,d]=(0,X.useState)(""),[p,f]=(0,X.useState)([]),[m,y]=(0,X.useState)(!1),[x,h]=(0,X.useState)([]),[g,v]=(0,X.useState)(null),[b,k]=(0,X.useState)(null),[S,w]=(0,X.useState)(null),[_,A]=(0,X.useState)([]),[C,E]=(0,X.useState)(!1),[I,J]=(0,X.useState)(null),[$,U]=(0,X.useState)(null),[N,T]=(0,X.useState)(null),[D,O]=(0,X.useState)(null),[j,M]=(0,X.useState)({}),[H,G]=(0,X.useState)([]),[z,V]=(0,X.useState)([]),[K,ie]=(0,X.useState)(""),Ie=(0,X.useCallback)(async()=>{try{let le=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!le.ok)return;let De=await le.json(),st=x2(De.sandboxes);V(st),ie(zt=>b2(zt,st)||(st.length===1?st[0].value:""))}catch{}},[]);(0,X.useEffect)(()=>{Ie()},[Ie]);let ge=rw(e.tools||[]),[de,R]=(0,X.useState)(null),[ee,L]=(0,X.useState)(!1),[te,F]=(0,X.useState)(null),[P,Y]=(0,X.useState)(!1),[B,oe]=(0,X.useState)(!1),[ne,he]=(0,X.useState)(null),[tt,it]=(0,X.useState)(""),[ve,ce]=(0,X.useState)(!1),[Ue,Je]=(0,X.useState)(null),nt=(0,X.useRef)(null),Tt=(0,X.useRef)(!n),Lt=(0,X.useRef)(null),Hr=(0,X.useRef)(0),Io=(0,X.useRef)(null),vs=(0,X.useRef)(!1),Mi=(0,X.useRef)(!0),yt=(0,X.useRef)(null),eo=(0,X.useRef)([]),xs=(0,X.useRef)(null),bs=(0,X.useRef)(null),be=(0,X.useRef)(null),rt=(0,X.useRef)(null),pt=KD(g,r),Qt=(b?.messages||[]).filter(le=>J_e.includes(le.role));(0,X.useEffect)(()=>{yt.current=$},[$]),(0,X.useEffect)(()=>{eo.current=p},[p]),(0,X.useEffect)(()=>{Mi.current=!0,Wn();let le=AY(window.location.search);return le&&Nf(le),()=>{Mi.current=!1,Hr.current+=1,Ol(yt.current),Ol({attachments:eo.current}),U(null),f([])}},[e.id]),(0,X.useEffect)(()=>{uo(l)},[e.id,l]),(0,X.useEffect)(()=>{Lt.current=g,g?nn(g):(k(null),w(null))},[g]),(0,X.useEffect)(()=>{let le=bs.current;le&&(le.scrollTop=le.scrollHeight)},[Qt.length,$,I?.logs?.length,I?.input_requests?.length,ne,N]),(0,X.useEffect)(()=>{if(!B)return;let le=De=>{rt.current&&!rt.current.contains(De.target)&&oe(!1)};return document.addEventListener("mousedown",le),()=>document.removeEventListener("mousedown",le)},[B]);let Wn=async()=>{try{let De=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();A(De.runs||[])}catch(le){console.error("Failed to load runs:",le)}},uo=async le=>{try{let De=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(le)}`);if(!De.ok)throw new Error(`HTTP ${De.status}`);let zt=(await De.json()).conversations||[];h(zt),v(kn=>kn&&(nt.current===kn||zt.some(ni=>ni.id===kn))?kn:Tt.current?zt[0]?.id??null:null)}catch(De){console.error("Failed to load conversations:",De),h([])}},nn=async le=>{try{let De=await fetch(`/api/interactions/${le}`);if(!De.ok)throw new Error(De.status===404?"Conversation not found":`HTTP ${De.status}`);let st=await De.json();if(Lt.current!==le)return;k(st.interaction),w(null)}catch(De){if(Lt.current!==le)return;k(null),w(De.message)}},Oa=async()=>{let le=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:l})}),De=await V0(le);if(!le.ok||!De.conversation)throw new Error(De.error||`Could not start a conversation (HTTP ${le.status})`);let st=De.conversation;return h(zt=>[st,...zt.filter(kn=>kn.id!==st.id)]),nt.current=st.id,v(st.id),st.id},Pa=()=>Lt.current?Promise.resolve(Lt.current):Oa(),ws=le=>{nt.current=null,u(le)},co=le=>{vs.current=le,E(le)},Uu=()=>{Io.current?.waiting&&(Io.current=null,co(!1))},Ss=()=>{Uu(),J(null),O(null),M({}),G([])},Wu=le=>{let De=le?Number(le):null;De!==Lt.current&&Ss(),nt.current=De,v(De),T(null)},to=async()=>{if(!C)try{await Oa(),w(null),T(null),Ss(),Ol(yt.current),U(null),he(null)}catch(le){w(le.message)}},Ol=le=>{(le?.attachments||[]).forEach(De=>{De.url&&De.url.startsWith("blob:")&&URL.revokeObjectURL(De.url)})},Hh=le=>{let De=Array.from(le||[]).filter(Boolean);De.length!==0&&f(st=>[...st,...De.map(zt=>({file:zt,filename:zt.name,content_type:zt.type||"application/octet-stream",byte_size:zt.size,kind:FG(zt),url:zt.type&&zt.type.startsWith("image/")?URL.createObjectURL(zt):null}))])},pb=le=>{f(De=>{let st=De[le];return st?.url&&URL.revokeObjectURL(st.url),De.filter((zt,kn)=>kn!==le)})},fb=(le,De)=>{Ol(yt.current),U(null),Wn();let st=hs(le)??De;st&&(st!==Lt.current?(nt.current=st,v(st)):nn(st),uo(l))},SA=(le,De)=>{Io.current=null,co(!1),G([]),fb(le,De)},Qe=(le,De)=>{Io.current={id:le.id,contextId:hs(le)??De,waiting:!0},fb(le,De),ZC()},Ma=(le,De)=>{if(!Mi.current)return;let st=++Hr.current,zt=Date.now(),kn=async()=>{if(Hr.current===st){try{let ni=await fetch(`/api/runs/${le}`);if(ni.ok){let Do=await ni.json();if(Hr.current!==st)return;J(Do.run);let ja=mI(Do.run);if(ja==="finished"){SA(Do.run,De);return}if(ja==="awaiting"){Qe(Do.run,De);return}}}catch{}Date.now()-ztni&&{...ni,status:"failed",error_message:"Timed out waiting for the run to finish."}),O("Timed out waiting for the run to finish."))}};kn()},qh=async({text:le,files:De,fromComposer:st=!1})=>{let zt=(le||"").trim();if(!zt&&De.length===0||C)return;O(null),T(null),he(null),co(!0),M({}),G([]),J({status:"pending",input_prompt:zt,output:"",logs:[],started_at:new Date().toISOString()}),Ol(yt.current),U({content:zt||"(see attached files)",attachments:De.map(({file:Do,...ja})=>ja)}),st&&(d(""),f([]));let kn=Lt.current;if(!kn)try{kn=await Oa()}catch(Do){O(`${Do.message} \u2014 running without a pinned conversation.`)}let ni=()=>{st&&(d(zt),f(De)),U(null)};try{let Do=new FormData;Do.append("prompt",zt),Do.append("action_name",l),kn&&Do.append("params[context_id]",String(kn)),K&&Do.append("sandbox_id",K),De.forEach(({file:Ad})=>Do.append("attachments[]",Ad,Ad.name));let ja=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:Do}),ks=await V0(ja);if(ks.code==="sandbox_refused"&&Ie(),ja.status===402&&ks.upgrade_required){R(ks.usage),J(Ad=>({...Ad,status:"failed",error_message:ks.message||"Plan limit reached"})),co(!1),ni();return}if(!ja.ok)throw new Error(ks.error||"Run failed");Ma(ks.run.id,hs(ks.run)??kn)}catch(Do){J(ja=>({...ja,status:"failed",error_message:Do.message})),co(!1),ni()}},po=()=>qh({text:c,files:p,fromComposer:!0}),Kh=(le,De)=>{let st=Io.current;!st||String(st.id)!==String(le.run_id)||(G(zt=>[...zt.filter(kn=>kn.request.id!==le.id),{request:le,outcome:De}]),Io.current={...st,waiting:!1},Ma(st.id,st.contextId))},ya=le=>{let De=mI(le);De==="finished"||vs.current||(O(null),M({}),G([]),J(le),co(!0),De==="awaiting"?Qe(le,hs(le)):Ma(le.id,hs(le)))},Ia=(le,De)=>{nt.current=le,De&&s.includes(De)&&De!==l&&u(De),v(le)},Nf=async le=>{try{let De=await fetch(`/api/runs/${le}`);if(!De.ok)return;let st=await De.json();if(!Mi.current||!st.run||String(st.agent?.id)!==String(e.id))return;let zt=hs(st.run);zt&&Ia(zt,st.run.action_name),ya(st.run)}catch(De){console.error("Failed to open the linked run:",De)}},Da=le=>{!le||!le.text||qh({text:le.text,files:[]})},Vh=le=>{le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&(le.preventDefault(),po())},bd=async(le,De)=>{let st=Lt.current,zt=await fetch(`/api/interactions/${st}/messages/${le.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:De})}),kn=await V0(zt);if(!zt.ok)throw new Error(kn.error||`Could not save the message (HTTP ${zt.status})`);await nn(st)},wd=async le=>{let De=Lt.current;try{let st=await fetch(`/api/interactions/${De}/messages/${le.id}`,{method:"DELETE"});if(!st.ok){let zt=await V0(st);throw new Error(zt.error||`Could not delete the message (HTTP ${st.status})`)}w(null),await nn(De),uo(l)}catch(st){w(st.message)}},fo=le=>{oe(!1),he(le),it(""),Je(null)},Pl=async()=>{let le=tt.trim();if(!(!le||ve)){ce(!0),Je(null);try{let De=await Pa(),st=await fetch(`/api/interactions/${De}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:ne,content:le})}),zt=await V0(st);if(!st.ok)throw new Error(zt.error||`Could not add the message (HTTP ${st.status})`);it(""),he(null),await nn(De),uo(l)}catch(De){Je(De.message)}finally{ce(!1)}}},mb=async le=>{let De=le;if(hs(le)==null||le.status==="awaiting_input")try{let zt=await fetch(`/api/runs/${le.id}`);zt.ok&&(De=(await zt.json()).run)}catch(zt){console.error("Failed to load run details:",zt)}let st=hs(De);st?(T(null),st!==Lt.current&&Ss(),Ia(st,De.action_name||le.action_name),ya(De)):T({...De,output:De.output??De.output_preview,error_message:De.error_message??De.error}),xs.current?.scrollIntoView({behavior:"smooth",block:"start"})},Gh=async()=>{L(!0),F(null);try{await Oh({planSlug:"pro"})}catch(le){F(le.message),L(!1)}},Sd=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,gb=i.find(le=>le.name===l)?.prompt,kd=[e.instructions,l==="ask"?null:gb].map(le=>(le||"").trim()).filter(Boolean).join(` -`)||b?.instructions||"",qh=x.slice();g&&!qh.some(le=>le.id===g)&&qh.unshift({id:g,message_count:tr.length});let yA=(c.trim().length>0||p.length>0)&&!C,wd=I?.status==="awaiting_input",db=wd?lh(I.input_requests):[],vA=new Set(K.map(({request:le})=>le.id)),Kh=I&&!C&&I.status==="failed",Af=I&&!C&&I.status==="complete"&&!hs(I)&&!g,Pl={background:a.cardBg,border:`1px solid ${a.cardBorder}`,borderRadius:"12px"},Sd={borderBottom:`1px solid ${a.cardBorder}`},Vh={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontSize:"13px",fontFamily:Pt.mono,maxWidth:"260px"},Gh={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${m?Jo:a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},Wu=jn("system",o),pb=jC(o);return X.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},X.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},ce&&X.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},X.default.createElement("div",null,X.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),X.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",ce.runs_used," of ",ce.runs_limit," runs on the"," ",ce.plan||"free"," plan. Upgrade to keep running agents."),te&&X.default.createElement("p",{className:"text-sm text-red-600 mt-1"},te)),X.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},xd&&X.default.createElement("a",{href:xd,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),X.default.createElement("button",{onClick:Hh,disabled:ee,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},ee?"Redirecting\u2026":"Upgrade to Pro"))),X.default.createElement("div",{"data-testid":"runner-toolbar",style:Pl,className:"p-4 flex items-center gap-3 flex-wrap"},X.default.createElement(In,{size:40}),X.default.createElement("div",{className:"min-w-0"},X.default.createElement("div",{className:"font-semibold truncate",style:{color:a.textPrimary}},e.name),X.default.createElement("div",{className:"text-xs font-mono",style:{color:a.textSecondary}},e.provider," / ",e.model)),X.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},X.default.createElement("select",{"data-testid":"runner-action-select",value:l,onChange:le=>ws(le.target.value),disabled:C,className:"aa-field",style:Vh,title:"Agent action to invoke"},s.map(le=>X.default.createElement("option",{key:le,value:le},"#",le))),X.default.createElement("select",{"data-testid":"runner-conversation-select",value:g??"",onChange:le=>Uu(le.target.value),disabled:C,className:"aa-field",style:Vh,title:"Conversation to continue"},X.default.createElement("option",{value:""},"New conversation on first run"),qh.map(le=>X.default.createElement("option",{key:le.id,value:le.id},"Conversation #",le.id," \xB7 ",le.message_count??0," message",le.message_count===1?"":"s"))),X.default.createElement(fa,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:a,onClick:eo,disabled:C,title:"Start an empty conversation for this action"},"+ New conversation"),X.default.createElement(fa,{testId:"runner-back",variant:"secondary",size:"sm",colors:a,onClick:t},"\u2190 Back to editor"))),X.default.createElement("div",{"data-testid":"runner-context",ref:xs,style:Pl,className:"flex flex-col overflow-hidden"},X.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:Sd},X.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},X.default.createElement("h3",{className:"font-medium",style:{color:a.textPrimary}},"Context"),b&&X.default.createElement("span",{className:"text-xs font-mono",style:{color:a.textMuted}},"#",b.id," \xB7 ",tr.length," message",tr.length===1?"":"s"),mt==="recording"&&X.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."},X.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),mt==="limit"&&X.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")),X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},X.default.createElement(Z_e,{run:I,darkMode:o,colors:a}),b&&X.default.createElement(fa,{testId:"runner-replay",variant:"secondary",size:"sm",colors:a,onClick:()=>lt(sh("context",b.id)),disabled:C,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),X.default.createElement("div",{className:"relative",ref:nt},X.default.createElement(fa,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:a,onClick:()=>se(le=>!le),disabled:C,title:"Insert a message into the context without running"},"+ Add message"),B&&X.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,De,st])=>X.default.createElement("button",{key:le,type:"button","data-testid":De,onClick:()=>co(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"}},st)))))),X.default.createElement("div",{ref:bs,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},X.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:()=>Y(le=>!le),title:P?"Collapse system instructions":"Show system instructions"},X.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Wu.background,color:Wu.color,textAlign:"center"}},Wu.label)),X.default.createElement("div",{className:"min-w-0 flex-1"},bd?P?X.default.createElement("pre",{style:{...pb,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},bd):X.default.createElement("div",{className:"text-sm truncate",style:{color:a.textSecondary}},bd.split(` -`).find(le=>le.trim())||""):X.default.createElement("div",{className:"text-sm",style:{color:a.textMuted}},"No system instructions"),X.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:a.textMuted}},"read-only \xB7 Edit in the Instructions tab")),X.default.createElement(wQ,{open:P,color:a.textMuted})),w&&X.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},w),tr.length>0?X.default.createElement("div",{className:"mt-3"},X.default.createElement(cs,{messages:tr,darkMode:o,testIdPrefix:"runner-message",onUiAction:Da,onEditMessage:yd,onDeleteMessage:vd})):!$&&!N&&!Kh&&X.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."),$&&X.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},X.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:jn("user",o).background,color:jn("user",o).color,textAlign:"center"}},"User")),X.default.createElement("div",{className:"min-w-0 flex-1"},X.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:a.textPrimary}},$.content),X.default.createElement($C,{attachments:$.attachments,darkMode:o}))),I&&(C||FD(I).length>0)&&X.default.createElement("div",{className:"mt-3 space-y-2"},X.default.createElement(X_e,{run:I,darkMode:o,colors:a,expanded:D,onToggle:le=>M(De=>({...De,[le]:!De[le]}))}),C&&!wd&&X.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:a.textSecondary}},X.default.createElement("span",{className:"animate-pulse"},"\u25CF"),X.default.createElement("span",null,FD(I).length>0?"Working\u2026":"Starting run\u2026"))),(db.length>0||K.length>0)&&X.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},wd&&X.default.createElement("div",{className:"text-sm",style:{color:a.textSecondary}},"Paused for input: answer to continue this run."),db.filter(le=>!vA.has(le.id)).map(le=>X.default.createElement(Yp,{key:le.id,request:le,showRunLink:!1,onSettled:Uh})),K.map(({request:le,outcome:De})=>X.default.createElement(Yp,{key:le.id,request:le,initialOutcome:De,showRunLink:!1}))),j&&X.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},j),Kh&&I.error_message&&X.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"}},X.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),X.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},I.error_message)),Af&&X.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:a.innerBg,color:a.textPrimary}},X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:a.textMuted}},"Output"),X.default.createElement(Us,{text:I.output||"No output",darkMode:o,onUiAction:Da})),N&&X.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:a.innerBg,border:`1px solid ${a.cardBorder}`}},X.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},X.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:a.textMuted}},X.default.createElement("span",{style:{color:a.textPrimary}},"Run #",N.id),X.default.createElement(pd,{tone:BD[N.status]||"neutral",darkMode:o},N.status),N.output_metadata?.model&&X.default.createElement("span",null,N.output_metadata.provider,"/",N.output_metadata.model),N.duration_ms?X.default.createElement("span",null,U2(N.duration_ms)):null,N.trace_id&&X.default.createElement("a",{href:tt(`/traces?trace=${N.trace_id}`),className:"hover:underline",style:{color:a.textSecondary}},"trace:",N.trace_id.slice(0,8)," \u2192"),X.default.createElement("span",null,"\xB7 no conversation attached")),X.default.createElement("button",{type:"button",onClick:()=>O(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)&&X.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:a.textSecondary}},N.input_prompt||N.input_preview),N.error_message?X.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:o?"#fca5a5":"#b91c1c"}},N.error_message):X.default.createElement("div",{className:"text-sm",style:{color:a.textPrimary}},X.default.createElement(Us,{text:N.output||"No output",darkMode:o}))),ne&&X.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${a.borderStrong}`}},X.default.createElement("div",{className:"flex items-center gap-2 mb-2"},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:jn(ne,o).background,color:jn(ne,o).color}},jn(ne,o).label),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Added to the context without running the agent")),X.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:et,onChange:le=>it(le.target.value),onKeyDown:le=>{le.key==="Escape"&&he(null),le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&Ol()},placeholder:ne==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...Gh,border:`1px solid ${a.inputBorder}`}}),X.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},X.default.createElement(fa,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:a,onClick:Ol,disabled:ve||!et.trim()},ve?"Adding\u2026":`Add ${ne} message`),X.default.createElement(fa,{variant:"secondary",size:"sm",colors:a,onClick:()=>he(null),disabled:ve},"Cancel"),Ue&&X.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},Ue))))),X.default.createElement("div",{style:Pl,className:"p-4"},X.default.createElement("div",{onDragOver:le=>{le.preventDefault(),m||y(!0)},onDragLeave:()=>y(!1),onDrop:le=>{le.preventDefault(),y(!1),C||Bh(le.dataTransfer?.files)}},X.default.createElement("textarea",{"data-testid":"runner-prompt",value:c,onChange:le=>d(le.target.value),onKeyDown:Wh,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:Gh})),X.default.createElement($C,{attachments:p,darkMode:o,testId:"runner-attachment-chip",onRemove:(le,De)=>sb(De),removeTestId:"runner-attachment-remove"}),X.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},X.default.createElement("input",{ref:be,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:le=>{Bh(le.target.files),le.target.value=""}}),X.default.createElement(fa,{testId:"runner-attach",variant:"secondary",size:"sm",colors:a,onClick:()=>be.current?.click(),disabled:C,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Press ",X.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"\u2318")," + ",X.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"Enter")," to run")),X.default.createElement(fa,{testId:"runner-run",variant:"primary",colors:a,onClick:uo,disabled:!yA},C&&wd?X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{style:{fontFamily:Pt.mono}},"[?]")," Waiting for input"):C?X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:Pt.mono}},"[~]")," Running\u2026"):X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{style:{fontFamily:Pt.mono}},"[>]")," Run"))))),X.default.createElement("div",{className:"space-y-4 min-w-0"},X.default.createElement("div",{style:Pl,className:"p-4"},X.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Configuration"),X.default.createElement("dl",{className:"space-y-2 text-sm"},X.default.createElement("div",{className:"flex justify-between"},X.default.createElement("dt",{style:{color:a.textSecondary}},"Temperature"),X.default.createElement("dd",{style:{color:a.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),X.default.createElement(bQ,{label:"Tools",names:e.tools||[],colors:a}),X.default.createElement(bQ,{label:"MCP",names:(e.mcp_servers||e.mcpServers||[]).map(Y_e),colors:a}),X.default.createElement("div",{className:"flex justify-between items-center gap-3"},X.default.createElement("dt",{className:"shrink-0",style:{color:a.textSecondary}},"Checkout"),X.default.createElement("dd",{className:"min-w-0"},X.default.createElement("select",{"data-testid":"runner-checkout",value:W,onChange:le=>ie(le.target.value),onFocus:Ie,className:"text-xs rounded border px-1 py-0.5 max-w-[12rem]",style:{background:a.cardBg,borderColor:a.cardBorder,color:a.textPrimary}},X.default.createElement("option",{value:""},"None"),L.map(le=>X.default.createElement("option",{key:le.value,value:le.value},le.label))))),ge&&!W&&X.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."),X.default.createElement("div",{className:"flex justify-between items-center"},X.default.createElement("dt",{style:{color:a.textSecondary}},"Status"),X.default.createElement("dd",null,X.default.createElement(pd,{tone:e.status==="active"?"success":"neutral",darkMode:o},e.status)))),e.instructions&&X.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${a.cardBorder}`}},X.default.createElement("div",{className:"text-xs mb-1.5",style:{color:a.textSecondary}},"System Instructions"),X.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))),X.default.createElement("div",{style:Pl,className:"overflow-hidden"},X.default.createElement("div",{className:"px-4 py-3",style:Sd},X.default.createElement("h4",{className:"font-medium",style:{color:a.textPrimary}},"Recent Runs")),X.default.createElement("div",{className:"max-h-64 overflow-auto"},k.length>0?X.default.createElement("div",null,k.map(le=>X.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:()=>ub(le),title:hs(le)?"Open this run\u2019s conversation":"Show this run\u2019s output"},X.default.createElement("div",{className:"flex items-center justify-between mb-1"},X.default.createElement(pd,{tone:BD[le.status]||"neutral",darkMode:o},le.status),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},U2(le.duration_ms))),X.default.createElement("p",{className:"text-sm truncate",style:{color:a.textCell}},le.input_preview||le.input_prompt?.substring(0,50)),X.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:a.textMuted}},le.model&&X.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:a.mutedBg,color:a.textSecondary}},le.model),hs(le)&&X.default.createElement("span",{className:"font-mono"},"#",hs(le)),X.default.createElement("span",null,new Date(le.created_at).toLocaleString()))))):X.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:a.textMuted}},"No runs yet"))),X.default.createElement("div",{style:Pl,className:"p-4"},X.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Example Prompts"),X.default.createElement("div",{className:"space-y-2"},q_e.map(le=>X.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 Ge=Z(J()),W2=e=>new Date(`${e}T00:00:00`),J_e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function WD({onSelectAgent:e}){let[t,r]=(0,Ge.useState)(null),[n,o]=(0,Ge.useState)(!0),[a,i]=(0,Ge.useState)(30);(0,Ge.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 Ge.default.createElement("div",{className:"flex items-center justify-center h-64"},Ge.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 Ge.default.createElement("div",{className:"space-y-6"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ge.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ge.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"},J_e.map(p=>Ge.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Ge.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ge.default.createElement(W0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ge.default.createElement(W0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ge.default.createElement(W0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ge.default.createElement(W0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ge.default.createElement(W0,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ge.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ge.default.createElement("div",{className:"h-48"},Ge.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Ge.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ge.default.createElement("div",{className:"relative w-full"},Ge.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"}}),Ge.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"))))),Ge.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ge.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&W2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ge.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&W2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ge.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ge.default.createElement("div",{className:"h-48"},Ge.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Ge.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ge.default.createElement("div",{className:"relative w-full"},Ge.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"}}),Ge.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"))))),Ge.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ge.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&W2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ge.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&W2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ge.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ge.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ge.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ge.default.createElement("div",{className:"space-y-3"},t.top_agents.map((p,f)=>Ge.default.createElement("div",{key:p.id,onClick:()=>e?.(p),className:"flex items-center space-x-4 p-3 rounded-lg hover:bg-gray-50 cursor-pointer transition-colors"},Ge.default.createElement("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center text-red-600 font-semibold"},f+1),Ge.default.createElement("div",{className:"flex-1 min-w-0"},Ge.default.createElement("p",{className:"font-medium text-gray-900 truncate"},p.name),Ge.default.createElement("p",{className:"text-sm text-gray-500"},p.run_count," runs")),Ge.default.createElement("div",{className:"text-right"},Ge.default.createElement("p",{className:"font-medium text-gray-900"},l(p.total_tokens)),Ge.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ge.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ge.default.createElement("div",{className:"space-y-6"},Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ge.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([p,f])=>{let m=t?.summary?.total_runs||1,y=(f/m*100).toFixed(1);return Ge.default.createElement("div",{key:p},Ge.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ge.default.createElement("span",{className:"capitalize text-gray-600"},p),Ge.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Ge.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ge.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ge.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ge.default.createElement("div",{className:"space-y-4"},Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ge.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ge.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ge.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ge.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function W0({title:e,value:t,subtitle:r,color:n}){return Ge.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`},Ge.default.createElement("p",{className:"text-sm text-gray-500"},e),Ge.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ge.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var oe=Z(J());function HD({agent:e,onBack:t}){let{timeWindow:r}=vl(),[n,o]=(0,oe.useState)([]),[a,i]=(0,oe.useState)([]),[s,l]=(0,oe.useState)(null),[u,c]=(0,oe.useState)(null),[d,p]=(0,oe.useState)([]),[f,m]=(0,oe.useState)("run"),[y,x]=(0,oe.useState)(!1),[h,g]=(0,oe.useState)(!1),v=(0,oe.useRef)(!1),b=(0,oe.useRef)(!1),[S,w]=(0,oe.useState)("recent"),[_,k]=(0,oe.useState)({}),[A,C]=(0,oe.useState)(!0),[E,I]=(0,oe.useState)(1),[Q,$]=(0,oe.useState)(!0),[F,N]=(0,oe.useState)(""),[O,j]=(0,oe.useState)(""),[T,D]=(0,oe.useState)("recent"),M=(0,oe.useRef)(null),K=tt(`/agents/${e.id}/interactions`);(0,oe.useEffect)(()=>{V()},[e.id,E,F,O,T,r.minutes]),(0,oe.useEffect)(()=>{I(1)},[r.minutes]),(0,oe.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(P=>P.json()).then(P=>i(P.interactions||[])).catch(()=>{}).finally(()=>g(!0))},[e.id]),(0,oe.useEffect)(()=>{let P=()=>{let Y=Jn(),B=Y.match(/\/interactions\/runs\/(\d+)/),se=Y.match(/\/interactions\/sessions\/(\d+)/);if(B)m("run"),c(null),G(parseInt(B[1],10),{updateUrl:!1});else if(se)m("all"),c({id:parseInt(se[1],10)});else if(Y.endsWith("/interactions/sessions")||Y.endsWith("/interactions/all"))Y.endsWith("/all")&&window.history.replaceState({},"",Y.replace(/\/all$/,"/sessions")),m("all"),c(null);else{v.current=!1,l(null),c(null),p([]);return}v.current=!0};return P(),window.addEventListener("popstate",P),()=>window.removeEventListener("popstate",P)},[e.id]),(0,oe.useEffect)(()=>{v.current||b.current||!y||!h||m(n.length===0&&a.length>0?"all":"run")},[y,h,n.length,a.length]);let V=async()=>{C(!0);try{let P=new URLSearchParams({page:E.toString(),per_page:"20",minutes:String(r.minutes)});F&&P.append("status",F),O&&P.append("source",O),T!=="recent"&&P.append("sort",T);let B=await(await fetch(`/api/agents/${e.id}/runs?${P}`)).json();o(E===1?B.runs:se=>[...se,...B.runs]),$(B.runs.length===20)}catch(P){console.error("Failed to load runs:",P)}finally{C(!1),x(!0)}},L=P=>{window.location.pathname!==P&&window.history.pushState({},"",P)},G=async(P,{updateUrl:Y=!0}={})=>{try{let se=await(await fetch(`/api/runs/${P}`)).json();l(se.run),p(se.messages||[]),m("run"),c(null),Y&&L(`${K}/runs/${P}`)}catch(B){console.error("Failed to load run details:",B)}},W=P=>{if(P.source==="reported"){let Y=P.trace_id||String(P.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",tt(`/traces/${Y}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:tt(`/traces/${Y}`)}}));return}G(P.record_id||P.id)},ie=()=>{l(null),c(null),p([]),m("run"),L(K)},Ie=P=>{m("all"),P?(c({id:P.id,name:P.display_name}),L(`${K}/sessions/${P.id}`)):(c(null),L(`${K}/sessions`))},ge=P=>{b.current=!0,m(P),L(P==="all"?u?`${K}/sessions/${u.id}`:`${K}/sessions`:s?`${K}/runs/${s.id}`:K)},ce=u?u.name||a.find(P=>P.id===u.id)?.display_name||`Session #${u.id}`:null,R=()=>{let P=new Map;n.forEach(se=>{let ne=`${se.model||"unknown"}|${se.instructions_digest||"none"}`;P.has(ne)||P.set(ne,{key:ne,model:se.model,instructionsDigest:se.instructions_digest,instructionsVersion:se.instructions_version,instructionsCodename:se.instructions_codename,instructionsPreview:se.instructions_preview,runs:[]}),P.get(ne).runs.push(se)});let Y=[...P.values()].map(se=>({...se,count:se.runs.length,completed:se.runs.filter(ne=>ne.status==="complete").length,failed:se.runs.filter(ne=>ne.status==="failed").length,totalTokens:se.runs.reduce((ne,he)=>ne+(he.tokens||0),0),avgTokens:se.runs.reduce((ne,he)=>ne+(he.tokens||0),0)/se.runs.length,avgDuration:se.runs.reduce((ne,he)=>ne+(he.duration_ms||0),0)/se.runs.length,latest:se.runs[0],sortedRuns:[...se.runs].sort((ne,he)=>(he.duration_ms||0)-(ne.duration_ms||0))}));Y.sort((se,ne)=>S==="longest"?ne.avgDuration-se.avgDuration:new Date(ne.latest.created_at)-new Date(se.latest.created_at));let B={runs:n.length,completed:n.filter(se=>se.status==="complete").length,tokens:n.reduce((se,ne)=>se+(ne.tokens||0),0),avgDuration:n.length?n.reduce((se,ne)=>se+(ne.duration_ms||0),0)/n.length:0,models:[...new Set(n.map(se=>se.model).filter(Boolean))]};return{cohorts:Y,totals:B}},ee=P=>{switch(P){case"complete":return"bg-green-100 text-green-700";case"failed":return"bg-red-100 text-red-700";case"running":return"bg-blue-100 text-blue-700";case"pending":return"bg-yellow-100 text-yellow-700";case"cancelled":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},z=P=>P?P<1e3?`${P}ms`:P<6e4?`${(P/1e3).toFixed(1)}s`:`${Math.floor(P/6e4)}m ${Math.floor(P%6e4/1e3)}s`:"-",te=P=>P==null?"\u2014":P===0?"$0":P<.01?`$${P.toFixed(4)}`:`$${P.toFixed(2)}`,U=P=>{let Y=new Date(P),se=new Date-Y,ne=Math.floor(se/6e4),he=Math.floor(se/36e5),et=Math.floor(se/864e5);return ne<1?"Just now":ne<60?`${ne}m ago`:he<24?`${he}h ago`:et<7?`${et}d ago`:Y.toLocaleDateString()};return oe.default.createElement("div",{className:"flex h-full"},oe.default.createElement("div",{className:"w-80 border-r border-gray-200 flex flex-col bg-white"},oe.default.createElement("div",{className:"p-4 border-b border-gray-200"},oe.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},oe.default.createElement("button",{onClick:t,className:"p-1 text-gray-400 hover:text-gray-600 transition-colors"},oe.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},oe.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),oe.default.createElement("div",null,oe.default.createElement("h2",{className:"font-semibold text-gray-900"},"Agent Interactions"),oe.default.createElement("p",{className:"text-sm text-gray-500"},e.name))),oe.default.createElement("div",{className:"mb-2"},oe.default.createElement(xl,{compact:!0})),oe.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 mb-2 text-sm"},[{value:"",label:"All"},{value:"dashboard",label:"Dashboard"},{value:"reported",label:"Reported"}].map(P=>oe.default.createElement("button",{key:P.value||"all",onClick:()=>{j(P.value),I(1)},className:`flex-1 px-2 py-1 rounded-md transition-colors ${O===P.value?"bg-white shadow text-gray-900":"text-gray-600"}`,title:P.value==="dashboard"?"Executions started from this dashboard":P.value==="reported"?"Executions reported by your app via telemetry":"Every execution, however it started"},P.label))),oe.default.createElement("select",{value:F,onChange:P=>{N(P.target.value),I(1)},className:"w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},oe.default.createElement("option",{value:""},"All statuses"),oe.default.createElement("option",{value:"complete"},"Completed"),oe.default.createElement("option",{value:"failed"},"Failed"),oe.default.createElement("option",{value:"running"},"Running"),oe.default.createElement("option",{value:"cancelled"},"Cancelled")),oe.default.createElement("select",{value:T,onChange:P=>{D(P.target.value),I(1)},className:"w-full mt-2 px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},oe.default.createElement("option",{value:"recent"},"Most recent"),oe.default.createElement("option",{value:"longest"},"Longest running"),oe.default.createElement("option",{value:"cost"},"Highest cost"),oe.default.createElement("option",{value:"tokens"},"Most tokens"))),oe.default.createElement("div",{className:"flex-1 overflow-auto"},A&&n.length===0?oe.default.createElement("div",{className:"flex items-center justify-center h-32"},oe.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):n.length>0?oe.default.createElement(oe.default.Fragment,null,n.map(P=>{let Y=P.source==="reported";return oe.default.createElement("div",{key:P.id,onClick:()=>W(P),title:Y?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b border-gray-100 cursor-pointer transition-colors ${!Y&&s?.id===P.id?"bg-red-50 border-l-4 border-l-red-500":"hover:bg-gray-50"}`},oe.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},oe.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(P.status)}`},P.status),oe.default.createElement("div",{className:"flex items-center gap-2"},oe.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${Y?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`},Y?"reported":"dashboard"),oe.default.createElement("span",{className:"text-xs text-gray-400"},U(P.created_at||P.occurred_at)),!Y&&oe.default.createElement(id,{kind:"run",id:P.id,title:"Replay this run"}))),oe.default.createElement("p",{className:"text-sm text-gray-700 truncate"},P.input_preview||P.input_prompt?.substring(0,60)||(Y?`${P.action_name||"execution"} \xB7 trace ${String(P.trace_id||"").slice(0,8)}`:"No input")),oe.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs text-gray-400 flex-wrap gap-y-1"},P.model&&oe.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},P.model),oe.default.createElement("span",{className:T==="longest"?"text-gray-700 font-medium":void 0},z(P.duration_ms)),!!P.tokens&&oe.default.createElement("span",{className:T==="tokens"?"text-gray-700 font-medium":void 0},P.tokens," tokens"),P.cost!=null&&oe.default.createElement("span",{className:T==="cost"?"text-gray-700 font-medium":void 0,title:"Estimated from token counts at this model's published rates"},te(P.cost))))}),Q&&oe.default.createElement("button",{onClick:()=>I(P=>P+1),disabled:A,className:"w-full py-3 text-sm text-red-600 hover:bg-gray-50 transition-colors"},A?"Loading...":"Load More")):oe.default.createElement("div",{className:"p-8 text-center text-gray-400"},oe.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 text-gray-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},oe.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"})),oe.default.createElement("p",null,"No conversations yet")))),oe.default.createElement("div",{className:"flex-1 flex flex-col bg-gray-50"},oe.default.createElement("div",{className:"px-4 py-2 bg-white border-b border-gray-100 flex items-center gap-1.5 text-xs text-gray-500"},oe.default.createElement("button",{onClick:t,className:"hover:text-gray-900 hover:underline transition-colors"},e.name),oe.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"||s?oe.default.createElement(oe.default.Fragment,null,oe.default.createElement("button",{onClick:ie,className:"hover:text-gray-900 hover:underline transition-colors"},"Interactions"),oe.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"?u?oe.default.createElement(oe.default.Fragment,null,oe.default.createElement("button",{onClick:()=>Ie(null),className:"hover:text-gray-900 hover:underline transition-colors"},"Sessions"),oe.default.createElement("span",{className:"text-gray-300"},"/"),oe.default.createElement("span",{className:"text-gray-900 font-medium"},ce)):oe.default.createElement("span",{className:"text-gray-900 font-medium"},"Sessions"):oe.default.createElement("span",{className:"text-gray-900 font-medium"},"Run #",s.id)):oe.default.createElement("span",{className:"text-gray-900 font-medium"},"Interactions")),oe.default.createElement("div",{className:"p-3 bg-white border-b border-gray-200 flex items-center justify-between"},oe.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},oe.default.createElement("button",{onClick:()=>ge("run"),className:`px-3 py-1 text-sm rounded-md transition-colors ${f==="run"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Selected run"),oe.default.createElement("button",{onClick:()=>ge("all"),className:`px-3 py-1 text-sm rounded-md transition-colors ${f==="all"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Sessions")),f==="run"&&s&&oe.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${ee(s.status)}`},s.status)),f==="all"?oe.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:P}=R();return oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4 space-y-3"},oe.default.createElement("div",{className:"flex items-center gap-3"},oe.default.createElement(In,{size:40}),oe.default.createElement("div",null,oe.default.createElement("h3",{className:"font-semibold text-gray-900"},e.name),oe.default.createElement("p",{className:"text-xs text-gray-500"},u?`${ce} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),oe.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},oe.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),oe.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.runs)),oe.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),oe.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.runs?Math.round(P.completed/P.runs*100):0,"%")),oe.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),oe.default.createElement("p",{className:"text-lg font-bold text-gray-900"},z(Math.round(P.avgDuration)))),oe.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),oe.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.tokens.toLocaleString()))))})(),oe.default.createElement(Du,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:Ie})):s?oe.default.createElement(oe.default.Fragment,null,oe.default.createElement("div",{className:"p-4 bg-white border-b border-gray-200"},oe.default.createElement("div",{className:"flex items-center space-x-3"},oe.default.createElement(In,{size:40}),oe.default.createElement("div",null,oe.default.createElement("h3",{className:"font-medium text-gray-900"},e.name," \u2014 Run #",s.id),oe.default.createElement("p",{className:"text-xs text-gray-500"},new Date(s.created_at).toLocaleString())))),oe.default.createElement("div",{ref:M,className:"flex-1 overflow-auto p-6"},oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 shadow-sm p-4"},d.length>0?oe.default.createElement(cs,{messages:d,darkMode:!1}):oe.default.createElement(cs,{darkMode:!1,messages:[{id:`run-${s.id}-input`,role:"user",content:s.input_prompt||s.input_preview,created_at:s.created_at},{id:`run-${s.id}-output`,role:"assistant",content:s.error_message||s.output||s.output_preview||"No response",created_at:s.completed_at||s.created_at}]}))),oe.default.createElement("div",{className:"p-4 bg-white border-t border-gray-200"},oe.default.createElement("div",{className:"flex items-center justify-center space-x-8 text-sm text-gray-500"},oe.default.createElement("span",null,"Duration: ",z(s.duration_ms)),s.total_tokens&&oe.default.createElement("span",null,"Tokens: ",s.total_tokens),s.input_tokens&&s.output_tokens&&oe.default.createElement("span",null,"Input: ",s.input_tokens," / Output: ",s.output_tokens),s.trace_id&&oe.default.createElement("a",{href:tt(`/traces?trace=${s.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${s.trace_id} \u2014 open in Traces`},"trace:",s.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:P,totals:Y}=R();return P.length===0?oe.default.createElement("div",{className:"flex-1 flex items-center justify-center"},oe.default.createElement("div",{className:"text-center text-gray-400"},oe.default.createElement(In,{size:100}),oe.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):oe.default.createElement("div",{className:"flex-1 overflow-auto p-6 space-y-5"},oe.default.createElement("div",{className:"flex items-center gap-3"},oe.default.createElement(In,{size:40}),oe.default.createElement("div",null,oe.default.createElement("h3",{className:"font-semibold text-gray-900"},"Agent Report"),oe.default.createElement("p",{className:"text-xs text-gray-500"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),oe.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),oe.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.runs)),oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),oe.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.runs?Math.round(Y.completed/Y.runs*100):0,"%")),oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),oe.default.createElement("p",{className:"text-xl font-bold text-gray-900"},z(Math.round(Y.avgDuration)))),oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},oe.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),oe.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.tokens.toLocaleString()))),Y.models.length>0&&oe.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},oe.default.createElement("span",{className:"text-gray-500"},"Models used:"),Y.models.map(B=>oe.default.createElement("span",{key:B,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},B))),a.length>0&&oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},oe.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},oe.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Sessions \u2014 grouped interaction streams")),oe.default.createElement("div",{className:"divide-y divide-gray-100"},a.map(B=>oe.default.createElement("div",{key:B.id,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer flex items-center justify-between gap-3",onClick:()=>Ie(B),title:"Open this session's interaction stream"},oe.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:B.display_name},oe.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),oe.default.createElement("span",{className:"text-sm text-gray-900 truncate"},B.agent?.name||B.agent_name),B.action_name&&oe.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",B.action_name)),oe.default.createElement("div",{className:"flex items-center gap-3 text-xs text-gray-400 flex-shrink-0"},oe.default.createElement("span",null,B.message_count," messages"),oe.default.createElement("span",null,(B.tokens?.total||0).toLocaleString()," tokens"),oe.default.createElement("span",null,U(B.last_activity_at)),oe.default.createElement(id,{kind:"context",id:B.id,title:"Replay this conversation"})))))),oe.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},oe.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100 flex items-center justify-between"},oe.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Interactions by instructions \xD7 model"),oe.default.createElement("select",{value:S,onChange:B=>w(B.target.value),className:"text-xs border border-gray-200 rounded px-2 py-1 text-gray-600"},oe.default.createElement("option",{value:"recent"},"Most recent"),oe.default.createElement("option",{value:"longest"},"Longest interactions"))),oe.default.createElement("div",{className:"divide-y divide-gray-100"},P.map(B=>oe.default.createElement("div",{key:B.key},oe.default.createElement("div",{className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>k(se=>({...se,[B.key]:!se[B.key]})),title:"Show this configuration's runs"},oe.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},oe.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},B.model||"unknown model"),oe.default.createElement("span",{className:"text-xs text-gray-400 font-mono",title:B.instructionsDigest?`sha:${B.instructionsDigest}`:void 0},"instructions"," ",B.instructionsDigest?[B.instructionsVersion,B.instructionsCodename||B.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),B.instructionsPreview&&oe.default.createElement("p",{className:"text-xs text-gray-500 mt-1 truncate"},B.instructionsPreview),oe.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs text-gray-400 flex-wrap gap-y-1"},oe.default.createElement("span",null,B.count," run",B.count>1?"s":""),oe.default.createElement("span",{className:B.failed>0?"text-red-500":"text-green-600"},B.count?Math.round(B.completed/B.count*100):0,"% success"),oe.default.createElement("span",null,"avg ",z(Math.round(B.avgDuration))),oe.default.createElement("span",null,"avg ",Math.round(B.avgTokens).toLocaleString()," tokens"),oe.default.createElement("span",null,"last ",U(B.latest.created_at)))),_[B.key]&&oe.default.createElement("div",{className:"bg-gray-50 divide-y divide-gray-100 border-t border-gray-100"},B.sortedRuns.map(se=>oe.default.createElement("div",{key:se.id,className:"px-6 py-2 hover:bg-gray-100 cursor-pointer",onClick:()=>G(se.id),title:"Open this run's interaction"},oe.default.createElement("p",{className:"text-xs text-gray-700 truncate"},se.input_preview||"No input"),oe.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] text-gray-400"},oe.default.createElement("span",{className:se.status==="failed"?"text-red-500":""},se.status),oe.default.createElement("span",null,z(se.duration_ms)),se.tokens&&oe.default.createElement("span",null,se.tokens.toLocaleString()," tokens"),oe.default.createElement("span",null,U(se.created_at)))))))))))})()))}var ct=Z(J());var Q_e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function qD({onUseTemplate:e,onClose:t}){let[r,n]=(0,ct.useState)([]),[o,a]=(0,ct.useState)([]),[i,s]=(0,ct.useState)(""),[l,u]=(0,ct.useState)(null),[c,d]=(0,ct.useState)(!0),[p,f]=(0,ct.useState)(!1),[m,y]=(0,ct.useState)(null);(0,ct.useEffect)(()=>{x()},[i]);let x=async()=>{d(!0);try{let g=new URLSearchParams;i&&g.append("category",i);let b=await(await fetch(`/api/templates?${g}`)).json();n(b.templates),a(b.categories)}catch(g){console.error("Failed to load templates:",g)}finally{d(!1)}},h=async g=>{f(!0),y(null);try{let v=await fetch(`/api/templates/${g.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name})});if(v.ok){let b=await v.json();e(b.agent)}else{let b=`Could not create the agent (HTTP ${v.status})`;try{let S=await v.json(),w=S.errors||S.error;w&&(b=Array.isArray(w)?w.join(", "):String(w))}catch{}y(b)}}catch(v){console.error("Failed to create agent from template:",v),y("Could not create the agent \u2014 check your connection and try again.")}finally{f(!1)}};return ct.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},ct.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},ct.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},ct.default.createElement("div",null,ct.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),ct.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),ct.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},ct.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),ct.default.createElement("div",{className:"flex-1 flex overflow-hidden"},ct.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},ct.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),ct.default.createElement("div",{className:"space-y-1"},ct.default.createElement("button",{onClick:()=>s(""),className:`w-full text-left px-3 py-2 rounded-lg text-sm transition-colors ${i?"text-gray-600 hover:bg-gray-50":"bg-red-50 text-red-600"}`},"All Templates"),o.map(g=>ct.default.createElement("button",{key:g,onClick:()=>s(g),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===g?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},ct.default.createElement("span",null,Q_e[g]||"\u{1F4E6}"),ct.default.createElement("span",{className:"capitalize"},g))))),ct.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?ct.default.createElement("div",{className:"flex items-center justify-center h-full"},ct.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?ct.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(g=>ct.default.createElement("div",{key:g.id,onClick:()=>u(g),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===g.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},ct.default.createElement("div",{className:"flex items-start space-x-3"},ct.default.createElement("div",{className:"flex-shrink-0"},ct.default.createElement(In,{size:60})),ct.default.createElement("div",{className:"flex-1 min-w-0"},ct.default.createElement("div",{className:"flex items-center space-x-2"},ct.default.createElement("span",{className:"text-lg"},g.icon),ct.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},g.name)),ct.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},g.description),ct.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},ct.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},g.category),g.featured&&ct.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):ct.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&ct.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},ct.default.createElement("div",{className:"flex justify-center mb-4"},ct.default.createElement(In,{size:120})),ct.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),ct.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),ct.default.createElement("div",{className:"mt-6 space-y-4"},ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),ct.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),ct.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(g=>ct.default.createElement("span",{key:g,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},g)))),ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),ct.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),ct.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&&ct.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var ft=Z(J());function KD({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={}}){let{darkMode:l}=ut(),[u,c]=(0,ft.useState)(!1),d=(0,ft.useRef)(null);(0,ft.useEffect)(()=>{function g(v){d.current&&!d.current.contains(v.target)&&c(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);let p=o?.name||"My Workspace",f=a?.name||a?.email?.split("@")[0]||"User",m={agentCount:r,pendingInputCount:n},y=g=>{let v=g.badge?m[g.badge]:void 0;return g.badgeTone==="attention"&&!v?void 0:v},x=oY(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??Bo.nav[v.icon],badge:y(v),badgeTone:v.badgeTone,badgeTitle:v.badgeTitle}))})),h=({item:g})=>ft.default.createElement("button",{onClick:()=>t(g.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${g.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===g.id?l?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===g.id?"#ef4444":l?"#d1d5db":"#374151"},onMouseEnter:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor=l?"#252525":"#f3f4f6")},onMouseLeave:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor="transparent")}},ft.default.createElement("div",{className:"flex items-center space-x-3"},ft.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},g.icon),ft.default.createElement("span",{className:"font-medium"},g.label)),g.badge!==void 0&&g.badgeTone==="attention"&&ft.default.createElement("span",{"data-testid":`nav-badge-${g.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${g.badge} ${g.badgeTitle||""}`.trim(),"aria-label":`${g.badge} ${g.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},g.badge),g.badge!==void 0&&g.badgeTone!=="attention"&&ft.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===g.id?"#fee2e2":l?"#2a2a2a":"#f3f4f6",color:e===g.id?"#ef4444":l?"#d1d5db":"#4b5563"}},g.badge));return ft.default.createElement("aside",{className:"w-64 border-r flex flex-col",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:l?"#2a2a2a":"#e5e7eb"},ref:d},ft.default.createElement("button",{onClick:()=>c(!u),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:u?l?"#252525":"#f3f4f6":"transparent"}},ft.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},ft.default.createElement(In,{size:28}),ft.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},p)),ft.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${u?"rotate-180":""}`,style:{color:l?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),u&&ft.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:"flex items-center space-x-3"},ft.default.createElement(In,{size:32}),ft.default.createElement("div",{className:"min-w-0"},ft.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},p)))),ft.default.createElement("div",{className:"py-1"},ft.default.createElement("button",{onClick:()=>{t("settings"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},ft.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"}),ft.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),ft.default.createElement("span",null,"Settings")),ft.default.createElement("button",{onClick:()=>{t("organization"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},ft.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"})),ft.default.createElement("span",null,"Organization"))),ft.default.createElement("div",{className:"border-t py-1",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${l?"text-gray-300":"text-gray-700"}`},ft.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ft.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"})),ft.default.createElement("span",{className:"text-sm"},f))))),ft.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},x.map(g=>{let v=ft.default.createElement("div",{className:"space-y-1"},g.items.map(b=>ft.default.createElement(h,{key:b.id,item:b})));return g.label?ft.default.createElement("div",{key:g.id,className:"pt-4"},ft.default.createElement("div",{className:"px-4 pb-2"},ft.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${l?"text-gray-500":"text-gray-400"}`},g.label)),v):ft.default.createElement(ft.default.Fragment,{key:g.id},v)})),ft.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${l?"text-gray-500":"text-gray-400"}`},"Resources"),ft.default.createElement("div",{className:"space-y-2"},ft.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},ft.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Bo.nav.docs),ft.default.createElement("span",null,"Documentation")),ft.default.createElement("a",{href:"https://github.com/activeagents/activeagent",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},ft.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Bo.nav.github),ft.default.createElement("span",null,"GitHub")))),ft.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},ft.default.createElement("div",{className:`text-xs ${l?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:"")))}var xr=Z(J());function VD({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=ut(),[o,a]=(0,xr.useState)(!1),i=(0,xr.useRef)(null);(0,xr.useEffect)(()=>{function d(p){i.current&&!i.current.contains(p.target)&&a(!1)}return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);let s=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,l=()=>{if(!s)return;let d=document.querySelector('meta[name="csrf-token"]')?.content,p=document.createElement("form");p.method="POST",p.action=s;let f=document.createElement("input");f.type="hidden",f.name="_method",f.value="delete",p.appendChild(f);let m=document.createElement("input");m.type="hidden",m.name="authenticity_token",m.value=d,p.appendChild(m),document.body.appendChild(p),p.submit()},u=e?.name||e?.email?.split("@")[0]||"User",c=u.charAt(0).toUpperCase();return xr.default.createElement("header",{className:"h-16 border-b flex items-center justify-between px-6",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"flex items-center space-x-4"}),xr.default.createElement("div",{className:"flex items-center space-x-4"},xr.default.createElement("button",{onClick:n,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:r?"#252525":"#f3f4f6",color:r?"#fbbf24":"#4b5563"},title:r?"Switch to light mode":"Switch to dark mode"},r?xr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},xr.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"})):xr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},xr.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),xr.default.createElement("div",{className:`flex items-center space-x-2 text-sm ${r?"text-gray-400":"text-gray-500"}`},xr.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),xr.default.createElement("span",null,"Connected")),xr.default.createElement("div",{className:"relative",ref:i},xr.default.createElement("button",{onClick:()=>a(!o),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:o?r?"#252525":"#f3f4f6":"transparent"}},xr.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},xr.default.createElement("span",{className:"text-red-600 font-medium text-sm"},c))),o&&xr.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"flex items-center space-x-3"},xr.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},xr.default.createElement("span",{className:"text-red-600 font-medium"},c)),xr.default.createElement("div",null,xr.default.createElement("div",{className:`font-medium ${r?"text-white":"text-gray-900"}`},u),xr.default.createElement("div",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},e?.email)))),s&&xr.default.createElement("div",{className:"py-1"},xr.default.createElement("button",{onClick:l,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${r?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},xr.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},xr.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"})),xr.default.createElement("span",null,"Sign out")))))))}var Be=Z(J());var kt=Z(J());var GD=150,R_e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),eCe=e=>e.length?R_e(e)/e.length:0,Ys=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),YD=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},gf=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),tCe=4,Eh=e=>Math.max(tCe,YD(e)),SQ=(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},rCe=5.5,nCe=12,oCe=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*rCe+nCe,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},hf=(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(" ")},H2=(e,t)=>{let r=hf(e,t);return r?`0,100 ${r} 100,100`:""},kQ=(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 eCe(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(" ")},H0=(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 _Q({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return kt.default.createElement(ze,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},kt.default.createElement(We,{size:11,spacing:"0.05em"},e),kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},kt.default.createElement("span",{style:{fontFamily:H,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?kt.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-text-muted)"}},r):null),kt.default.createElement("div",{title:n,style:{fontFamily:H,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),kt.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},kt.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},kt.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),kt.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function CQ({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=GD}){let p=(0,kt.useRef)(null),f=T0(p),m="1px dashed var(--color-text-secondary)";return kt.default.createElement(ze,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},kt.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),kt.default.createElement("span",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)"}},t),kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),kt.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>kt.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:H,fontSize:10,color:"var(--color-text-secondary)"}},kt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),kt.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>kt.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},kt.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:H,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&kt.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,x)=>kt.default.createElement("div",{key:x,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>kt.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&kt.default.createElement("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none","aria-hidden":"true",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"}},l.map((y,x)=>kt.default.createElement("polygon",{key:x,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,x)=>kt.default.createElement("polyline",{key:x,points:y.points,fill:"none",stroke:y.color,strokeWidth:y.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((y,x)=>{let h=oCe(y,f),g=`${Number(y.left).toFixed(2)}%`;return kt.default.createElement("div",{key:x,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:g,borderRight:m}:{left:g,right:0,borderLeft:m}}},kt.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:H,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),kt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:H,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,x)=>kt.default.createElement("span",{key:x},y))))}function Nh({label:e,qualifier:t,meta:r,children:n}){return kt.default.createElement(ze,{padding:0,style:{overflow:"hidden"}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},kt.default.createElement(We,null,e),t?kt.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function XD({template:e,columns:t}){return kt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:H,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},kt.default.createElement("span",null),t.map(r=>kt.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function q2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return kt.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 ZD({children:e,padding:t="8px 14px"}){return kt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function q0({children:e}){return kt.default.createElement("div",{style:{padding:"12px 14px",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},e)}function JD({color:e}){return kt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function QD({pct:e,color:t}){return kt.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},kt.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function RD({pct:e,color:t,width:r=70}){return kt.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},kt.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function ys({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return kt.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var TQ=6e4,aCe=1180,Oh={"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"}},iCe=Object.keys(Oh).map(e=>({value:e,label:e})),t3="24h",Th=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],K0=[{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)"}],AQ=e=>K0.find(t=>t.type===e)?.color||"var(--color-text-muted)",sCe=3,V2="var(--color-text-primary)",lCe={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},uCe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],e3=e=>String(e).padStart(2,"0"),Ut=e=>e==null||Number.isNaN(Number(e))?0:Number(e),cCe=e=>e.reduce((t,r)=>t+Ut(r),0),EQ=e=>`${Ut(e).toFixed(1)}%`,K2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,dCe=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,pCe=(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},fCe=e=>{let t=String(e.label||"incident"),r=K0.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},mCe=e=>{let t=Ut(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},NQ=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},gCe=(e,t,r=Date.now())=>{let n=Math.max(1,Ut(t))*1e3,o=Math.max(1,Math.round(Ut(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()}))},hCe=(e,t)=>{let r=e.summary||{},n=Oh[e.range]||Oh[t]||Oh[t3],o=Ut(e.bucket_seconds)||n.seconds,a=Ut(e.window_minutes)||(e.window_hours?Ut(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:gCe(a,o),s=Ut(e.totals?.requests??r.total_requests),l=Ut(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:Ut(r.errors),error_rate:Ut(r.error_rate),tokens_in:Ut(r.tokens_input),tokens_out:Ut(r.tokens_output),tokens:Ut(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:Ut(f.requests),share_pct:s?Ut(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?Ut(f.errors)/Ut(f.requests)*100:0,cost:Ut(f.cost),tokens:Ut(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:K0.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:[]}},OQ=e=>{let t=Oh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:mCe(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},yCe=e=>{let[t,r]=(0,Be.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 r3(){let[e,t]=(0,Be.useState)(t3),[r,n]=(0,Be.useState)(""),[o,a]=(0,Be.useState)(null),[i,s]=(0,Be.useState)(!0),[l,u]=(0,Be.useState)(null),[c,d]=(0,Be.useState)(!1),p=(0,Be.useRef)(0),f=yCe(aCe),m=(0,Be.useRef)(null),y=(0,Be.useCallback)(async()=>{let S=++p.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[_,k]=await Promise.all([NQ(w),r?NQ(new URLSearchParams({range:e})).catch(()=>null):null]);if(S!==p.current)return;let A=r?k?.agents:_.agents;Array.isArray(A)&&(m.current=A),a({data:_,ranking:Array.isArray(A)?A:m.current}),u(null)}catch(w){if(S!==p.current)return;u(w.message)}finally{S===p.current&&s(!1)}},[e,r]);(0,Be.useEffect)(()=>{let S=!1;d(!0),y().finally(()=>{S||d(!1)});let w=setInterval(y,TQ);return()=>{S=!0,clearInterval(w)}},[y]);let x=(0,Be.useMemo)(()=>o?hCe(o.data,e):null,[o,e]),h=(0,Be.useMemo)(()=>x?x.agent?pCe(o.ranking,x.agents):x.agents:[],[x,o]),g=(0,Be.useMemo)(()=>h.map(S=>S.name).filter(Boolean),[h]),v=(0,Be.useMemo)(()=>{let S=Object.fromEntries(g.map((_,k)=>[_,Th[k%Th.length]])),w=g.length;return(x?x.agents:[]).forEach(_=>{_.name&&!S[_.name]&&(S[_.name]=Th[w++%Th.length])}),_=>S[_]||Th[0]},[g,x]),b=(0,Be.useMemo)(()=>x?xCe(x,v):null,[x,v]);return i?Be.default.createElement("div",{className:"flex items-center justify-center h-64"},Be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!x?Be.default.createElement("div",null,Be.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:V2}},"Metrics"),Be.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}`:"")):Be.default.createElement(vCe,{m:x,view:b,railAgents:h,range:Oh[e]?e:t3,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:f,pending:c,onRange:t,onAgent:n})}function vCe({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=OQ(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return Be.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:V2,fontSize:13}},Be.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},Be.default.createElement("div",{style:{flex:1,minWidth:240}},Be.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),Be.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}`:"")),Be.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Be.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:V2,cursor:"pointer"}},Be.default.createElement("option",{value:""},"All agents"),a.map(m=>Be.default.createElement("option",{key:m,value:m},m))),e.environment&&Be.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:H,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},Be.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),Be.default.createElement(ds,{options:iCe,value:n,onChange:u}),Be.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${TQ/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},Be.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?Be.default.createElement(ze,{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",Be.default.createElement("div",{style:{marginTop:8,fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):Be.default.createElement(Be.default.Fragment,null,Be.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>Be.default.createElement(_Q,{key:m.label,...m,deltaSub:d.prev}))),Be.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}},Be.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>Be.default.createElement(CQ,{key:m.title,...m,xLabels:t.xLabels,height:GD}))),Be.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Be.default.createElement(Nh,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Be.default.createElement(XD,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Be.default.createElement(q0,null,"no agents in this window"),r.map(m=>Be.default.createElement(q2,{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}`},Be.default.createElement("div",{style:{minWidth:0}},Be.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},Be.default.createElement(JD,{color:i(m.name)}),Be.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Be.default.createElement(QD,{pct:m.share_pct,color:i(m.name)})),Be.default.createElement(ys,null,Tn(m.requests)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},zn(m.p95_ms)),Be.default.createElement(ys,{color:Ut(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},EQ(m.error_rate)),Be.default.createElement(ys,null,f0(m.cost))))),Be.default.createElement(Nh,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Be.default.createElement(q0,null,"no model usage in this window"),e.models.map((m,y)=>Be.default.createElement(q2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},Be.default.createElement("div",{style:{minWidth:0}},Be.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},Be.default.createElement("span",{style:{fontFamily:H,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Be.default.createElement("span",{style:{fontFamily:H,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Be.default.createElement(QD,{pct:m.share_pct,color:"var(--color-token-in)"})),Be.default.createElement(ys,null,Tn(m.tokens)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},f0(m.cost))))),Be.default.createElement(Nh,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Be.default.createElement(q0,null,"no actions in this window"),e.actions.map(m=>Be.default.createElement(ZD,{key:m.name},Be.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:H,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Be.default.createElement(RD,{pct:t.slowestP95?Ut(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Be.default.createElement(ys,{weight:600,width:40},zn(m.p95_ms))))),Be.default.createElement(Nh,{label:"Tools",qualifier:"by calls"},Be.default.createElement(XD,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Be.default.createElement(q0,null,"no tool calls in this window"),e.tools.map(m=>Be.default.createElement(q2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Be.default.createElement("span",{title:m.name,style:{fontFamily:H,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Be.default.createElement(ys,null,Tn(m.calls)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},zn(m.avg_ms)),Be.default.createElement(ys,{color:Ut(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},EQ(m.error_rate))))),Be.default.createElement(Nh,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Be.default.createElement(ZD,{key:m.type},Be.default.createElement(JD,{color:AQ(m.type)}),Be.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),Be.default.createElement(RD,{pct:t.errorTotal?Ut(m.count)/t.errorTotal*100:0,color:AQ(m.type)}),Be.default.createElement(ys,{weight:600,width:32},Math.round(Ut(m.count))))))))))}function xCe(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=OQ(e),s=r.map(B=>new Date(B.ts)),l=e.windowMinutes>=2880,u=B=>Number.isNaN(B.getTime())?"":l?`${uCe[B.getDay()]} ${e3(B.getHours())}h`:`${e3(B.getHours())}:${e3(B.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(B=>B===6?"now":u(s[Math.round(B*(a-1)/6)])):[],d=B=>r.map(se=>Ut(se[B])),p=d("requests"),f=d("errors"),m=d("tokens_in"),y=d("tokens_out"),x=d("cost"),h=d("tool_calls"),g=d("tool_errors"),v=B=>r.map(se=>se[B]==null?null:Ut(se[B])),b=v("p50_ms"),S=v("p95_ms"),w=v("p99_ms"),_=r.map(B=>B.requests_by_agent||{}),k=e.agents.map(B=>B.name).filter(Boolean);_.forEach(B=>Object.keys(B).forEach(se=>{k.includes(se)||k.push(se)}));let A=k.length?k.map(B=>({label:B,color:t(B),data:_.map(se=>Ut(se[B]))})):[{label:"requests",color:Th[0],data:p}],C=K0.map(B=>({label:B.type,color:B.color,data:r.map(se=>Ut((se.errors_by_type||{})[B.type]))})),E=(Ut(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,I=(B,se)=>{if(!B||a<2||!E)return null;let ne=new Date(B.ts).getTime();if(Number.isNaN(ne))return null;let et=Math.min(a-1,Math.max(0,Math.floor((ne-s[0].getTime())/E)))/(a-1);return{left:et*100,label:se,flip:et>.55}},Q=e.markers.filter(B=>B.kind==="deploy").sort((B,se)=>new Date(B.ts)-new Date(se.ts)).slice(-sCe).map(B=>I(B,B.label)).filter(Boolean),$=e.markers.find(B=>B.kind==="incident"),F=$?I($,fCe($)):null,N=F?[F]:[],O=Eh(Ys(p)*1.1),j=Eh(Ys(f)*1.15),T=Eh(Math.max(Ys(w),Ys(S),Ys(b))*1.05),D=Eh(Math.max(Ys(m),Ys(y))*1.1),M=YD(Ys(x)*1.1),K=SQ(M),V=Eh(Ys(h)*1.1),L=Ut(n.requests),G=Ut(n.requests_per_minute),W=Ut(n.errors),ie=Ut(n.error_rate),Ie=Ut(n.tokens)||Ut(n.tokens_in)+Ut(n.tokens_out),ge=Ut(n.cost),ce=n.cost_per_request!=null?Ut(n.cost_per_request):L?ge/L:0,R=Ut(n.tool_calls),ee=n.tool_error_rate!=null?Ut(n.tool_error_rate):R?Ut(n.tool_errors)/R*100:0,z=Ut(e.errorsByType.find(B=>B.type===K0[0].type)?.count),te=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${Tn(L)} \xB7 ${G.toFixed(1)}/min`,legend:A.map(B=>({label:B.label,color:B.color})),ticks:gf(O,Tn),buckets:H0(A,O,B=>`${u(s[B])} \xB7 ${Math.round(p[B])} req`),markers:Q},{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:gf(T,dCe),lines:[{points:hf(w,T),color:"var(--color-error)",width:1.5},{points:hf(S,T),color:"var(--color-warning)",width:1.5},{points:hf(b,T),color:"var(--color-token-in)",width:2}],areas:[{points:H2(b,T),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${ie.toFixed(2)}% \xB7 ${K2(Math.round(W),"error")}`,valueColor:ie>1?"var(--color-error)":V2,legend:C.map(B=>({label:B.label,color:B.color})),ticks:gf(j,B=>String(Math.round(B))),buckets:H0(C,j,B=>`${u(s[B])} \xB7 ${K2(Math.round(f[B]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${Tn(Ie)} \xB7 in ${Tn(n.tokens_in)} / out ${Tn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:gf(D,Tn),lines:[{points:hf(m,D),color:"var(--color-token-in)",width:1.5},{points:hf(y,D),color:"var(--color-token-out)",width:1.5}],areas:[{points:H2(m,D),color:"var(--color-token-in)"},{points:H2(y,D),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${f0(ge)} \xB7 ${m0(ce)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:gf(M,B=>m0(B,K)),buckets:H0([{color:"var(--color-text-secondary)",data:x}],M,B=>`${u(s[B])} \xB7 ${m0(x[B],K)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${Tn(R)} \xB7 ${ee.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:gf(V,Tn),buckets:H0([{color:"var(--span-tool)",data:h.map((B,se)=>Math.max(0,B-g[se]))},{color:"var(--color-error)",data:g}],V,B=>`${u(s[B])} \xB7 ${K2(Math.round(h[B]),"call")}`)}],U=(B,se,ne)=>{let he=B==null?null:Ut(B);return he==null||he===0?"muted":se&&se(he)?"success":ne&&ne(he)?"error":"muted"},P=(B,se,ne,he,et,it,ve,ue)=>({label:B,value:se,unit:ne,sub:he,delta:et,deltaColor:lCe[it],spark:kQ(ve),sparkColor:ue});return{signals:[P("Requests",Tn(L),"",`${G.toFixed(1)} req/min`,ch(o.requests_pct),U(o.requests_pct,B=>B>0,null),p,"var(--color-token-in)"),P("Latency",zn(n.p50_ms),"p50",`p95 ${zn(n.p95_ms)} \xB7 p99 ${zn(n.p99_ms)}`,ch(o.p50_pct),U(o.p50_pct,B=>B<0,B=>B>0),b,"var(--color-token-in)"),P("Error rate",ie.toFixed(2),"%",`${K2(Math.round(W),"error")} \xB7 ${Math.round(z)} rate-limited`,ch(o.error_rate_pt," pt",1),U(o.error_rate_pt,B=>B<0,B=>B>0),f,"var(--color-error)"),P("Tokens",Tn(Ie),"",`in ${Tn(n.tokens_in)} \xB7 out ${Tn(n.tokens_out)}`,ch(o.tokens_pct),"muted",m.map((B,se)=>B+y[se]),"var(--color-token-in)"),P("Cost",f0(ge),"",`${m0(ce)} per request`,ch(o.cost_pct),"muted",x,"var(--color-text-secondary)")],panels:te,xLabels:c,slowestP95:Ys(e.actions.map(B=>B.p95_ms)),errorTotal:cCe(e.errorsByType.map(B=>B.count))}}var Fe=Z(J());var bCe=6e4,wCe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],PQ={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)"}},V0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),MQ=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,SCe=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 n3({onOpenServer:e}){let{darkMode:t}=ut(),[r,n]=(0,Fe.useState)(null),[o,a]=(0,Fe.useState)(!0),[i,s]=(0,Fe.useState)(null),[l,u]=(0,Fe.useState)("all"),[c,d]=(0,Fe.useState)(""),[p,f]=(0,Fe.useState)(168),[m,y]=(0,Fe.useState)(null),x=(0,Fe.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,Fe.useEffect)(()=>{let A=setTimeout(x,c?250:0);return()=>clearTimeout(A)},[x,c]),(0,Fe.useEffect)(()=>{let A=setInterval(x,bCe);return()=>clearInterval(A)},[x]);let h={bg:t?"transparent":"#f9fafb",cardBg:t?"rgba(255,255,255,0.05)":"#ffffff",border:t?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:t?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af",textCell:t?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:t?"rgba(239,68,68,0.2)":"#fef2f2",inputBg:t?"rgba(255,255,255,0.06)":"#ffffff"},g=A=>{let C=PQ[A]||PQ.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return Fe.default.createElement("div",{className:"flex items-center justify-center h-64"},Fe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return Fe.default.createElement("div",{style:{padding:"24px"}},Fe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Fe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:h.errorBg,borderRadius:"8px",color:h.error,fontSize:"14px"}},"Failed to load tools: ",i));let{tools:v=[],summary:b={},origins:S={},sources:w={}}=r||{},_=!w.telemetry&&!w.generations&&!w.messages&&!w.declared,k=({label:A,value:C,hint:E,tone:I})=>Fe.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},Fe.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},A),Fe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:I||h.textPrimary}},C),E&&Fe.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},E));return Fe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},Fe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},Fe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},Fe.default.createElement("div",null,Fe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Fe.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")),Fe.default.createElement("div",{style:{display:"flex",gap:"4px"}},wCe.map(A=>Fe.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))))),Fe.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},Fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},Fe.default.createElement(k,{label:"Tools Detected",value:V0(b.total_tools),hint:`${b.active_tools||0} called in this window`}),Fe.default.createElement(k,{label:"Tool Calls",value:V0(b.total_calls),hint:`${MQ(b.avg_duration_ms)} average`}),Fe.default.createElement(k,{label:"Error Rate",value:`${b.error_rate||0}%`,tone:b.error_rate>5?h.error:h.textPrimary,hint:`${b.total_errors||0} failed call${b.total_errors===1?"":"s"}`}),Fe.default.createElement(k,{label:"From MCP",value:V0(b.mcp_tools),hint:`across ${b.mcp_servers_active||0} active server${b.mcp_servers_active===1?"":"s"}`}),Fe.default.createElement(k,{label:"Never Called",value:V0(b.unused_tools),hint:"offered or configured, unused"})),Fe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(S).map(([A,C])=>Fe.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)),Fe.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}})),Fe.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},v.length===0?Fe.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},_?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):Fe.default.createElement("div",{style:{overflowX:"auto"}},Fe.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},Fe.default.createElement("thead",null,Fe.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),Fe.default.createElement("tbody",null,v.map((A,C)=>{let E=g(A.origin),I=m===A.name;return Fe.default.createElement(Fe.default.Fragment,{key:A.name},Fe.default.createElement("tr",{onClick:()=>y(I?null:A.name),style:{borderBottom:C{Q.stopPropagation(),A.mcp_server&&e&&e(A.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:E.bg,color:E.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)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},V0(A.calls)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:A.errors>0?h.error:h.textCell}},A.errors),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},MQ(A.avg_duration_ms)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},SCe(A.last_seen))),I&&Fe.default.createElement("tr",{style:{borderBottom:CFe.default.createElement("span",{key:A,style:{color:w[A]?h.textSecondary:h.textMuted,opacity:w[A]?1:.5}},w[A]?"\u25CF":"\u25CB"," ",C)))))}function kCe({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>Fe.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},Fe.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),Fe.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return Fe.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}`}},Fe.default.createElement(o,{label:"Full name"},Fe.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&Fe.default.createElement(o,{label:"Description"},e.description),Fe.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?Fe.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):Fe.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),Fe.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):Fe.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&Fe.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),Fe.default.createElement(o,{label:"Call breakdown"},Fe.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&Fe.default.createElement(o,{label:"Last arguments"},Fe.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&Fe.default.createElement(o,{label:"Last error"},Fe.default.createElement("span",{style:{color:t.error}},e.last_error)),Fe.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var qe=Z(J());var _Ce=6e4,CCe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],ACe=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],ECe=["http","streamable_http","sse"],IQ={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)"}},G0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function o3({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),[y,x]=(0,qe.useState)(null),[h,g]=(0,qe.useState)(null),v=(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)(()=>{v();let $=setInterval(v,_Ce);return()=>clearInterval($)},[v]),(0,qe.useEffect)(()=>{e&&m(e)},[e]);let b={bg:r?"transparent":"#f9fafb",cardBg:r?"rgba(255,255,255,0.05)":"#ffffff",border:r?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:r?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:r?"#ffffff":"#111827",textSecondary:r?"rgba(255,255,255,0.6)":"#6b7280",textMuted:r?"rgba(255,255,255,0.4)":"#9ca3af",textCell:r?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:r?"rgba(239,68,68,0.2)":"#fef2f2",codeBg:r?"rgba(0,0,0,0.35)":"#f9fafb"},S=$=>{let F=IQ[$]||IQ.available;return{fg:r?F.dark:F.light,bg:r?F.bgDark:F.bgLight}},w=async $=>{x($.key),g(null);try{let F=await fetch(`/api/mcp_servers/${encodeURIComponent($.key)}/launch`,{method:"POST",headers:{"Content-Type":"application/json"}}),N=await F.json();if(!F.ok)throw new Error(N.reason||N.error||`Launch failed (${F.status})`);g({kind:"ok",text:`${$.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),v()}catch(F){g({kind:"error",text:F.message})}finally{x(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:b.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:b.errorBg,borderRadius:"8px",color:b.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:_=[],summary:k={},sandboxes:A=[],statuses:C={}}=n||{},E=u==="all"?_:_.filter($=>$.status===u),I=new Set(A.flatMap($=>$.mcp_servers||[])),Q=({label:$,value:F,hint:N})=>qe.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${b.border}`}},qe.default.createElement("div",{style:{fontSize:"11px",color:b.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},$),qe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:b.textPrimary}},F),N&&qe.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"8px"}},N));return qe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:b.bg}},qe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${b.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:b.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("p",{style:{fontSize:"14px",color:b.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),qe.default.createElement("div",{style:{display:"flex",gap:"4px"}},CCe.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":b.border}`,background:d===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===$.value?"#ef4444":b.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(Q,{label:"Active",value:G0(k.active),hint:"called in this window"}),qe.default.createElement(Q,{label:"Configured",value:G0(k.configured),hint:"declared, no traffic yet"}),qe.default.createElement(Q,{label:"Available",value:G0(k.available),hint:"defaults you can connect"}),qe.default.createElement(Q,{label:"Tool Calls",value:G0(k.total_calls),hint:"through MCP servers"})),h&&qe.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?b.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?b.error:r?"#86efac":"#15803d"}},h.text),qe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},ACe.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":b.border}`,background:u===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===$.value?"#ef4444":b.textSecondary}},$.label))),qe.default.createElement("div",{style:{display:"grid",gap:"12px"}},E.length===0?qe.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,textAlign:"center",padding:"48px 24px",color:b.textSecondary,fontSize:"14px"}},"No MCP services in this state"):E.map($=>{let F=S($.status),N=f===$.key,O=I.has($.key);return qe.default.createElement("div",{key:$.key,style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${N?F.fg:b.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:b.textPrimary}},$.name),qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:F.bg,color:F.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"),Vd($)&&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"),Ry($)&&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"),X1($)&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:b.borderLight,color:b.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),O&&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:b.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:b.textPrimary}},G0($.calls)),qe.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"calls")),qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:$.errors>0?b.error:b.textPrimary}},$.errors||0),qe.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"errors")),$.launchable&&qe.default.createElement("button",{onClick:j=>{j.stopPropagation(),w($)},disabled:y===$.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:y===$.key?b.borderLight:"#ef4444",color:y===$.key?b.textMuted:"#ffffff",cursor:y===$.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${$.name} in a sandbox session`},y===$.key?"Starting\u2026":O?"Start another":"Start in sandbox"))),N&&qe.default.createElement(NCe,{server:$,colors:b,tone:F,onOpenTools:t}))})),A.length>0&&qe.default.createElement("div",{style:{marginTop:"24px",background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,padding:"20px"}},qe.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:b.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:b.textCell,flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontFamily:"monospace"}},($.mcp_servers||[]).join(", ")||$.sandbox_type),qe.default.createElement("span",{style:{color:b.textMuted}},$.status," \xB7 ",$.runs_count,"/",$.max_runs," runs \xB7 expires ",new Date($.expires_at).toLocaleTimeString())))))))}function NCe({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:ECe.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 re=Z(J());var fd=Z(J());var Y2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},Bn={log(...e){this.enabled&&(e.push(Date.now()),Y2.logger.log("[ActionCable]",...e))}},X0=()=>new Date().getTime(),G2=e=>(X0()-e)/1e3,Z0=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=X0(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),Bn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=X0(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),Bn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=X0()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,Bn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=X0(),Bn.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()&&(Bn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${G2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?Bn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${G2(this.disconnectedAt)} s`):(Bn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return G2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&G2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(Bn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};Z0.staleThreshold=6;Z0.reconnectionBackoffRate=.15;var jQ={message_types:{welcome:"welcome",disconnect:"disconnect",ping:"ping",confirmation:"confirm_subscription",rejection:"reject_subscription"},disconnect_reasons:{unauthorized:"unauthorized",invalid_request:"invalid_request",server_restart:"server_restart",remote:"remote"},default_mount_path:"/cable",protocols:["actioncable-v1-json","actioncable-unsupported"]},{message_types:Y0,protocols:a3}=jQ,TCe=a3.slice(0,a3.length-1),DQ=[].indexOf,J0=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new Z0(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return Bn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...a3,...this.consumer.subprotocols||[]];return Bn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new Y2.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(Bn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){Bn.log("Failed to reopen WebSocket",t)}finally{Bn.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 DQ.call(TCe,this.getProtocol())>=0}isState(...t){return DQ.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in Y2.WebSocket)if(Y2.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(){}}};J0.reopenDelay=500;J0.prototype.events={message(e){if(!this.isProtocolSupported())return;let{identifier:t,message:r,reason:n,reconnect:o,type:a}=JSON.parse(e.data);switch(this.monitor.recordMessage(),a){case Y0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case Y0.disconnect:return Bn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case Y0.ping:return null;case Y0.confirmation:return this.subscriptions.confirmSubscription(t),this.reconnectAttempted?(this.reconnectAttempted=!1,this.subscriptions.notify(t,"connected",{reconnected:!0})):this.subscriptions.notify(t,"connected",{reconnected:!1});case Y0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(Bn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return Bn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(Bn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){Bn.log("WebSocket onerror event")}};var OCe=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},i3=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),OCe(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)}},s3=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(Bn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):Bn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){Bn.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=>{Bn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},l3=class{constructor(t){this.consumer=t,this.guarantor=new s3(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new i3(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){Bn.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})}},u3=class{constructor(t){this._url=t,this.subscriptions=new l3(this),this.connection=new J0(this),this.subprotocols=[]}get url(){return PCe(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 PCe(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 $Q(e=MCe("url")||jQ.default_mount_path){return new u3(e)}function MCe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var X2=null;function ICe(){if(X2===null)try{X2=$Q()}catch{X2=!1}return X2||null}function Ph(e,t,r,n=!0){let o=(0,fd.useRef)(null),a=(0,fd.useRef)(r);return(0,fd.useEffect)(()=>{a.current=r},[r]),(0,fd.useEffect)(()=>{if(!n||!e)return;let s=ICe();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,fd.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Mh(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var Z2=[{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"}],DCe={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"}]},LQ={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function c3({initialType:e="playwright_mcp",onClose:t,showAgents:r=!1}){let[n,o]=(0,re.useState)(e),[a,i]=(0,re.useState)(null),[s,l]=(0,re.useState)(""),[u,c]=(0,re.useState)([]),[d,p]=(0,re.useState)(null),[f,m]=(0,re.useState)(!1),[y,x]=(0,re.useState)(!1),[h,g]=(0,re.useState)(null),[v,b]=(0,re.useState)(null),[S,w]=(0,re.useState)(!1),[_,k]=(0,re.useState)(null),[A,C]=(0,re.useState)(!1),E=(0,re.useRef)(null),[I,Q]=(0,re.useState)(["anthropic"]),[$,F]=(0,re.useState)(!1),[N,O]=(0,re.useState)({}),[j,T]=(0,re.useState)([]),D=(0,re.useCallback)(async P=>{try{let Y=await fetch(`/api/sandboxes/${P}`);if(!Y.ok)return;let B=await Y.json();i(B.sandbox),c(B.sandbox.runs||[])}catch(Y){console.error("Could not refresh the sandbox session:",Y)}},[]),M=(0,re.useCallback)(P=>{!Mh(P)||!a?.session_id||D(a.session_id)},[D,a?.session_id]);Ph("SandboxChannel",{session_id:a?.session_id},M,!!a?.session_id),(0,re.useEffect)(()=>{V(),K()},[n]);let K=async()=>{try{let P=await fetch("/api/usage");if(P.ok){let Y=await P.json();k(Y.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,re.useEffect)(()=>{if(!a?.expires_at)return;let P=setInterval(()=>{let Y=new Date,B=new Date(a.expires_at),se=Math.max(0,Math.floor((B-Y)/1e3));b(se),se===0&&(i(ne=>({...ne,status:"expired"})),clearInterval(P))},1e3);return()=>clearInterval(P)},[a?.expires_at]),(0,re.useEffect)(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[d?.result]);let V=async()=>{x(!0),g(null);try{let P=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:n})});if(!P.ok)throw new Error("Failed to create sandbox session");let Y=await P.json();i(Y.sandbox),c([]),p(null)}catch(P){g(P.message)}finally{x(!1)}},L=async()=>{!s.trim()||f||!a||($&&I.length>1?await W():await G(I[0]||"anthropic"))},G=async P=>{m(!0),p({status:"running",task:s,provider:P,result:"",started_at:new Date().toISOString()});try{let Y=await fetch(`/api/sandboxes/${a.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,provider:P})}),B=await Y.json();if(Y.status===402&&B.upgrade_required){k(B.usage),w(!0),p(se=>({...se,status:"failed",error:B.message||"Plan limit reached"})),m(!1);return}if(!Y.ok)throw new Error(B.error||"Task execution failed");B.usage&&k(B.usage),ce(B.run_id)}catch(Y){p(B=>({...B,status:"failed",error:Y.message})),m(!1)}},W=async()=>{m(!0),T([...I]),O({});let P={};I.forEach(Y=>{P[Y]={status:"running",result:"",started_at:new Date().toISOString()}}),O(P);try{let Y=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,providers:I,sandbox_id:a?.session_id,sandbox_type:n})});if(!Y.ok){let se=await Y.json();throw new Error(se.error||"Comparison failed")}let B=await Y.json();B.sandbox&&i(B.sandbox),ie(I,B.sandbox?.session_id||a?.session_id,B.sandbox?.runs_count??a?.runs_count??0)}catch(Y){I.forEach(B=>{O(se=>({...se,[B]:{status:"failed",error:Y.message}}))}),m(!1),T([])}},ie=(P,Y,B)=>{if(!Y)return;let se=async()=>{try{let ne=await fetch(`/api/sandboxes/${Y}`);if(!ne.ok)throw new Error(`HTTP ${ne.status}`);let he=await ne.json();i(he.sandbox);let et=he.sandbox.runs||[];c(et);let it=new Set;if(et.slice(B).forEach(ve=>{ve.provider&&(O(ue=>({...ue,[ve.provider]:{...ve,provider:ve.provider}})),(ve.status==="completed"||ve.status==="failed")&&it.add(ve.provider))}),P.every(ve=>it.has(ve))){m(!1),T([]);return}setTimeout(se,1e3)}catch(ne){console.error("Comparison polling failed:",ne),m(!1),T([])}};setTimeout(se,1e3)},Ie=async()=>{if(a?.session_id)try{let Y=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(Y.sandbox),c(Y.sandbox.runs||[]),(Y.sandbox.runs||[]).forEach(ne=>{ne.provider&&O(he=>({...he,[ne.provider]:{...ne,provider:ne.provider}}))}),I.every(ne=>{let he=N[ne];return he?.status==="completed"||he?.status==="failed"})&&(m(!1),T([]))}catch(P){console.error("Polling error:",P)}},ge=P=>{Q(Y=>Y.includes(P)?Y.length===1?Y:Y.filter(B=>B!==P):[...Y,P])},ce=async P=>{let Y=async()=>{try{let se=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(se.sandbox);let ne=se.sandbox.runs||[],he=ne[ne.length-1];if(he&&(p(he),c(ne),he.status==="completed"||he.status==="failed")){m(!1);return}setTimeout(Y,1e3)}catch{m(!1)}};Y()},R=P=>{P.key==="Enter"&&(P.metaKey||P.ctrlKey)&&L()},ee=P=>{if(!P)return"--:--";let Y=Math.floor(P/60),B=P%60;return`${Y}:${B.toString().padStart(2,"0")}`},z=P=>{switch(P){case"completed":return"text-green-600 bg-green-100";case"failed":return"text-red-600 bg-red-100";case"running":return"text-blue-600 bg-blue-100";case"ready":return"text-emerald-600 bg-emerald-100";case"expired":return"text-orange-600 bg-orange-100";default:return"text-gray-600 bg-gray-100"}},te=a?.status==="ready"&&a?.runs_count{C(!0);try{await Ah({planSlug:"pro",billingInterval:P})}catch(Y){console.error("Checkout error:",Y),g(Y.message||"Failed to initiate checkout. Please try again."),C(!1)}};return re.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},r&&re.default.createElement("div",{className:"pb-6"},re.default.createElement(Qx,{inline:!0})),re.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},re.default.createElement("div",{className:"flex items-center justify-between"},re.default.createElement("div",{className:"flex items-center space-x-4"},re.default.createElement(In,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),re.default.createElement("div",null,re.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),re.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),re.default.createElement("div",{className:"flex items-center space-x-4"},a&&re.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},re.default.createElement("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${z(a.status)}`},a.status),re.default.createElement("span",{className:"text-gray-500"},a.runs_count,"/",a.max_runs," runs"),re.default.createElement("span",{className:`font-mono ${v<60?"text-red-500":"text-gray-500"}`},ee(v))),t&&re.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},re.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),re.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},re.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},re.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("textarea",{value:s,onChange:P=>l(P.target.value),onKeyDown:R,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!te,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"}),re.default.createElement("div",{className:"flex items-center justify-between mt-3"},re.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",re.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",re.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),re.default.createElement("button",{onClick:L,disabled:!s.trim()||!te,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${s.trim()&&te?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?re.default.createElement(re.default.Fragment,null,re.default.createElement("span",{className:"animate-spin"},"\u25E0"),re.default.createElement("span",null,"Running...")):re.default.createElement(re.default.Fragment,null,re.default.createElement("span",null,"\u25B6"),re.default.createElement("span",null,"Run"))))),re.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},re.default.createElement("h3",{className:"font-medium text-gray-900"},$&&Object.keys(N).length>0?"Comparison Results":"Output"),d&&!$&&re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${z(d.status)}`},d.status),$&&j.length>0&&re.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",j.length," provider(s)...")),re.default.createElement("div",{ref:E,className:"flex-1 overflow-auto bg-gray-50"},y?re.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},re.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):h?re.default.createElement("div",{className:"text-red-600 p-4"},h):$&&Object.keys(N).length>0?re.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},I.map(P=>{let Y=Z2.find(se=>se.id===P),B=N[P];return re.default.createElement("div",{key:P,className:"p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-2"},re.default.createElement("div",{className:"flex items-center space-x-2"},re.default.createElement("div",{className:`w-3 h-3 rounded-full ${Y?.color||"bg-gray-400"}`}),re.default.createElement("span",{className:"font-medium text-gray-900"},Y?.name||P),re.default.createElement("span",{className:"text-xs text-gray-500"},Y?.model)),B&&re.default.createElement("div",{className:"flex items-center space-x-2"},re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${z(B.status)}`},B.status),B.tokens&&re.default.createElement("span",{className:"text-xs text-gray-500"},B.tokens," tokens"),B.duration_ms&&re.default.createElement("span",{className:"text-xs text-gray-500"},(B.duration_ms/1e3).toFixed(1),"s"))),re.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},B?.status==="running"?re.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},re.default.createElement("span",{className:"animate-pulse"},"\u25CF"),re.default.createElement("span",null,"Processing...")):B?.error?re.default.createElement("div",{className:"text-red-600"},B.error):B?.result?re.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},B.result):re.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):d?re.default.createElement("div",{className:"p-4 font-mono text-sm"},d.provider&&re.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},re.default.createElement("div",{className:`w-2 h-2 rounded-full ${Z2.find(P=>P.id===d.provider)?.color||"bg-gray-400"}`}),re.default.createElement("span",{className:"text-sm text-gray-600"},Z2.find(P=>P.id===d.provider)?.name||d.provider)),d.status==="running"?re.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},re.default.createElement("span",{className:"animate-pulse"},"\u25CF"),re.default.createElement("span",null,"Executing task...")):d.error?re.default.createElement("div",{className:"text-red-600"},re.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),re.default.createElement("pre",{className:"whitespace-pre-wrap"},d.error)):re.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},d.result||"Processing...")):re.default.createElement("div",{className:"text-gray-400 text-center py-12"},re.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),re.default.createElement("p",{className:"text-xs"},$?`Compare results across ${I.length} providers`:"Task will execute using the selected provider"))))),re.default.createElement("div",{className:"space-y-4 overflow-auto"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-3"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),re.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},re.default.createElement("input",{type:"checkbox",checked:$,onChange:P=>F(P.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),re.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),re.default.createElement("div",{className:"space-y-2"},Z2.map(P=>re.default.createElement("label",{key:P.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${I.includes(P.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},re.default.createElement("div",{className:"flex items-center space-x-3"},re.default.createElement("input",{type:"checkbox",checked:I.includes(P.id),onChange:()=>ge(P.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),re.default.createElement("div",{className:`w-2 h-2 rounded-full ${P.color}`}),re.default.createElement("span",{className:"text-sm font-medium text-gray-900"},P.name)),re.default.createElement("span",{className:"text-xs text-gray-500"},P.model)))),$&&I.length>1&&re.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},re.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",I.length," providers simultaneously"))),re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-3"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),$&&re.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")),re.default.createElement("div",{className:"space-y-2"},DCe[n]?.map((P,Y)=>re.default.createElement("button",{key:Y,onClick:()=>l(P.task),disabled:!te,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},re.default.createElement("div",{className:"font-medium text-sm text-gray-900"},P.name),re.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},P.description))))),re.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},re.default.createElement("h4",{className:"font-medium text-gray-900 mb-3"},_?.unlimited?"Unlimited":_?.plan==="free"?"Free Tier":`${_?.plan?.toUpperCase()||"FREE"} Plan`),_&&!_.unlimited&&_.runs_limit!=null&&re.default.createElement("div",{className:"mb-4"},re.default.createElement("div",{className:"flex justify-between text-sm mb-1"},re.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),re.default.createElement("span",{className:`font-medium ${_.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},_.runs_used," / ",_.runs_limit)),re.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},re.default.createElement("div",{className:`h-2 rounded-full transition-all ${_.runs_remaining<=1?"bg-rose-500":"bg-emerald-500"}`,style:{width:`${Math.min(_.runs_used/_.runs_limit*100,100)}%`}})),_.runs_remaining<=1&&re.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},_.runs_remaining===0?"Limit reached!":"Almost at limit!")),re.default.createElement("dl",{className:"space-y-2 text-sm"},re.default.createElement("div",{className:"flex justify-between"},re.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),re.default.createElement("dd",{className:"text-gray-900"},a?.runs_count||0,"/",a?.max_runs||LQ.max_runs)),re.default.createElement("div",{className:"flex justify-between"},re.default.createElement("dt",{className:"text-gray-500"},"Timeout"),re.default.createElement("dd",{className:"text-gray-900"},LQ.timeout_seconds,"s per task"))),_?.plan==="free"&&re.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},re.default.createElement("button",{onClick:()=>w(!0),className:"w-full text-center text-sm text-rose-600 hover:text-rose-700 font-medium"},"Upgrade to PRO \u2192"))),u.length>0&&re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),re.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},u.slice().reverse().map((P,Y)=>re.default.createElement("div",{key:P.id||Y,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>p(P)},re.default.createElement("div",{className:"flex items-center justify-between mb-1"},re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${z(P.status||"completed")}`},P.status||"completed"),re.default.createElement("span",{className:"text-xs text-gray-400"},P.tokens||0," tokens")),re.default.createElement("p",{className:"text-sm text-gray-600 truncate"},P.task))))),a?.status==="expired"&&re.default.createElement("button",{onClick:V,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),S&&re.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},re.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},re.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},re.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),re.default.createElement("p",{className:"text-rose-100 text-sm"},"You've used ",_?.runs_used||0," of ",_?.runs_limit||25," trial runs. Choose a plan to continue.")),re.default.createElement("div",{className:"p-6"},re.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},re.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},re.default.createElement("div",{className:"text-center mb-4"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),re.default.createElement("span",{className:"text-gray-500"},"/mo"))),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),re.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")),re.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},re.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},re.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),re.default.createElement("div",{className:"text-center mb-4 mt-2"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),re.default.createElement("span",{className:"text-gray-500"},"/mo")),re.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),re.default.createElement("button",{onClick:()=>U("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")),re.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},re.default.createElement("div",{className:"text-center mb-4"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),re.default.createElement("span",{className:"text-gray-500"},"/mo")),re.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),re.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")))),re.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},re.default.createElement("button",{onClick:()=>w(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ht=Z(J());var Oo=Z(J());var d3=["message","llm","tool","browser"];function J2(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function zQ(e={}){let t=[];return d3.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=J2(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 BQ(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&J2(t.rrweb.first_at)!==null).map(t=>{let r=J2(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,J2(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function FQ(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function UQ(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 WQ(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 HQ(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 p3(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 KQ(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 GQ(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 Ih(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 Q2(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 f3(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function jCe(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 YQ(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=f3(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",jCe(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"}: ${f3(t.message??t.value)}`:e.kind==="marker"?`marker: ${f3(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function Dh(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function $Ce(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 LCe(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 XQ(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(LCe(e,a));if(o())return{count:i,truncated:!1};let l=$Ce(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 Bu=[{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)"}],Q0=18,zCe=76,yf=(e,t)=>e.totalMs?t/e.totalMs*100:0,BCe=(0,Oo.memo)(function({axis:t,entries:r,recordings:n}){let o=WQ(t);return Oo.default.createElement(Oo.default.Fragment,null,o.map(a=>Oo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${Q2(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${yf(t,a.axisStart)}%`,width:`${yf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Bu.map((a,i)=>Oo.default.createElement(Oo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=md(t,s.startMs);return Oo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*Q0+7,height:4,borderRadius:2,left:`${yf(t,l)}%`,width:`${Math.max(yf(t,md(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=md(t,s.startMs);return Oo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*Q0+4,height:Q0-8,borderRadius:2,left:`${yf(t,l)}%`,width:`max(3px, ${yf(t,md(t,s.endMs)-l)}%)`,background:Dh(s)?"var(--color-error)":a.color}})}))))});function m3({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,Oo.useRef)(null),i=Bu.length*Q0,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 Oo.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},Oo.default.createElement("div",{style:{width:zCe,flexShrink:0}},Bu.map(u=>Oo.default.createElement("div",{key:u.lane,style:{height:Q0,display:"flex",alignItems:"center",gap:6,fontFamily:H,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},Oo.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),Oo.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"}},Oo.default.createElement(BCe,{axis:e,entries:t,recordings:r}),Oo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${yf(e,n)}%`,background:"var(--color-text-primary)"}})))}var ta=Z(J());var FCe=Object.fromEntries(Bu.map(e=>[e.lane,e])),UCe=(0,ta.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=FCe[t.lane],l=Dh(t);return ta.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"}},ta.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Ih(t.startMs-r)),ta.default.createElement("span",{style:{fontFamily:H,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),ta.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},YQ(t)),t.duration_ms>0&&ta.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),ZQ=(0,ta.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,ta.useRef)(null),l=(0,ta.useRef)(null);return(0,ta.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?ta.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>ta.default.createElement(UCe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):ta.default.createElement("div",{style:{padding:20,fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Oi=Z(J());var WCe=Object.fromEntries(Bu.map(e=>[e.lane,e.label])),HCe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:H,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function qCe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function KCe({label:e,value:t}){let r=qCe(t);return r==null?null:Oi.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Oi.default.createElement(We,{size:10},e),Oi.default.createElement("pre",{style:HCe},r))}function VCe(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 g3({entry:e}){return e?Oi.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Oi.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Oi.default.createElement(Ce,{tone:Dh(e)?"error":"muted"},WCe[e.lane]),e.role&&Oi.default.createElement(Ce,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Oi.default.createElement("span",{style:{fontFamily:H,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Oi.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"},title:e.start},new Date(e.startMs).toLocaleTimeString(),e.duration_ms>0?` \xB7 ${Math.round(e.duration_ms)}ms`:"")),e.trace_id&&Oi.default.createElement("div",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),VCe(e).map(([t,r])=>Oi.default.createElement(KCe,{key:t,label:t,value:r}))):Oi.default.createElement("div",{style:{padding:16,fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var so=Z(J());var JQ="action-agent-session-player",QQ="/session_player",RQ="allow-scripts allow-same-origin";function eR(e,t={}){return{...t,channel:JQ,type:e}}function tR(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===JQ&&typeof e.data.type=="string"}async function YCe(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 XCe="the session player did not start",ZCe={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 h3({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,so.useRef)(null),s=(0,so.useRef)(null),[l,u]=(0,so.useState)(!1),[c,d]=(0,so.useState)(!1),[p,f]=(0,so.useState)(null),[m,y]=(0,so.useState)({state:"loading"}),x=VQ(e,t),h=x?.id,g=p!==null&&p===s.current,v=x?GQ(x,t):null,b=(_,k)=>{i.current?.contentWindow?.postMessage(eR(_,k),window.location.origin)};(0,so.useEffect)(()=>{let _=k=>{if(!tR(k,i.current?.contentWindow,window.location.origin))return;let{type:A}=k.data;A==="ready"?d(!0):A==="loaded"?f(k.data.token):A==="error"&&y({state:"error",message:k.data.message})};return window.addEventListener("message",_),()=>window.removeEventListener("message",_)},[]),(0,so.useEffect)(()=>{if(!l||c)return;let _=setTimeout(()=>y({state:"error",message:XCe}),5e3);return()=>clearTimeout(_)},[l,c]),(0,so.useEffect)(()=>{if(!c||h==null)return;let _=!1,k=[],A=`${h}:${Date.now()}`;return s.current=A,f(null),y({state:"loading"}),XQ(h,{fetchPage:YCe,isCancelled:()=>_,onEvents:C=>{if(k===null){b("append",{events:C});return}k=k.concat(C),!(k.length<2)&&(b("load",{events:k,token:A}),k=null)}}).then(({truncated:C})=>{_||y(k!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{_||y({state:"error",message:C.message})}),()=>{_=!0}},[c,h]);let S=v?.phase;(0,so.useEffect)(()=>{!g||!v||b("seek",{offset:v.offsetMs,playing:n&&S==="during"})},[g,a,n,S]),(0,so.useEffect)(()=>{g&&b("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:S==="before"?`the browser recording starts at ${Ih(x.startMs-r)}`:ZCe[m.state];return so.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},so.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},so.default.createElement(We,null,"browser"),x&&so.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},x.name||`recording ${x.id}`,e.length>1?` \xB7 ${e.indexOf(x)+1} of ${e.length}`:""),w&&so.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),so.default.createElement("iframe",{ref:i,title:"Browser recording",src:tt(QQ),sandbox:RQ,referrerPolicy:"no-referrer",onLoad:()=>u(!0),style:{width:"100%",height:480,border:"1px solid var(--color-border-light)",borderRadius:10,background:"var(--color-background)",opacity:S==="before"?.4:1}}))}var Ta=Z(J());function y3(e){let[t,r]=(0,Ta.useState)(0),[n,o]=(0,Ta.useState)(!1),[a,i]=(0,Ta.useState)(1),[s,l]=(0,Ta.useState)(0),u=(0,Ta.useRef)(0),c=(0,Ta.useRef)(0),d=(0,Ta.useCallback)((y,x)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=qQ(e,h);return u.current=h,r(h),(x||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,Ta.useEffect)(()=>{if(!n)return;let y=null,x=performance.now(),h=g=>{let v=d(u.current+(g-x)*a,!1);if(x=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let p=(0,Ta.useCallback)(y=>d(y,!0),[d]),f=(0,Ta.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,Ta.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var JCe=[.5,1,2,4,8,16],QCe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function RCe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function e2e(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function t2e({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ht.useMemo)(()=>zQ(r.lanes),[r]),i=(0,ht.useMemo)(()=>BQ(r.recordings),[r]),s=(0,ht.useMemo)(()=>UQ(FQ(a,i)),[a,i]),l=y3(s),{seek:u,pause:c}=l,[d,p]=(0,ht.useState)(()=>new Set(d3)),[f,m]=(0,ht.useState)(null),y=HQ(s,l.position)??s.startMs,x=(0,ht.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[p3(a,y)]||null,g=x[p3(x,y)]?.id??null,v=a.find(E=>E.id===f)||h,b=(0,ht.useMemo)(()=>e2e(a),[a]),S=(0,ht.useCallback)(E=>{c(),m(E.id),u(md(s,E.startMs))},[s,c,u]),w=E=>{let I=KQ(x,y,E);I!==null&&(c(),m(null),u(md(s,I)))},_=()=>{m(null),l.togglePlay()},k=E=>p(I=>{let Q=new Set(I);return Q.has(E)?Q.delete(E):Q.add(E),Q}),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(pe,{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)"}},QCe[e]||"Session"," #",t),ht.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:H,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,Q2(s.endMs-s.startMs)," long"),ht.default.createElement("span",null,b.message||0," messages \xB7 ",b.llm||0," model calls \xB7 ",b.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(Ce,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ht.default.createElement(ze,{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(ze,{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(pe,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),ht.default.createElement(pe,{size:"sm",variant:"primary",testId:"replay-play",onClick:_,style:{minWidth:72}},l.playing?"Pause":"Play"),ht.default.createElement(pe,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>w(1)},">|"),ht.default.createElement("select",{"aria-label":"Playback speed",value:l.speed,onChange:E=>l.setSpeed(Number(E.target.value)),style:{padding:"6px 8px",borderRadius:8,fontFamily:H,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},JCe.map(E=>ht.default.createElement("option",{key:E,value:E},E,"x"))),ht.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:H,fontSize:12,color:"var(--color-text-primary)"}},Ih(y-s.startMs)),ht.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(y)?new Date(y).toLocaleTimeString():"")),ht.default.createElement(m3,{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(ze,{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(We,{style:{marginRight:6}},"timeline"),Bu.map(E=>ht.default.createElement(Ln,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>k(E.lane)},E.label," ",b[E.lane]||0))),ht.default.createElement(ZQ,{entries:x,startMs:s.startMs,currentId:g,selectedId:f,playing:l.playing,onChoose:S})),ht.default.createElement(ze,{padding:0},ht.default.createElement(g3,{entry:v}))),i.length>0&&ht.default.createElement(ze,{padding:14},ht.default.createElement(h3,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function v3({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(RCe(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(t2e,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ht.default.createElement(pe,{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(pe,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ht.default.createElement(ze,{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 dt=Z(J());function rR(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var b3=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],w3=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],R0=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),oR={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},x3=/^(\d{4})-(\d{2})-(\d{2})$/,r2e={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>b3.some(t=>t.value&&t.value===e),outcome:e=>w3.some(t=>t.value&&t.value===e),from:e=>x3.test(e),to:e=>x3.test(e)};function R2(e={}){let t={...R0};for(let r of Object.keys(R0)){let n=String(e[r]??"");n&&r2e[r](n)&&(t[r]=n)}return t}function S3(e={}){return Object.values(R2(e)).some(Boolean)}function aR(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(oR))r[n]=t.get(o)||"";return R2(r)}function iR(e={}){let t=new URLSearchParams,r=R2(e);for(let[o,a]of Object.entries(oR))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function nR(e,t=0){let[,r,n,o]=e.match(x3);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var sR=Object.freeze({openedFromSessions:!0});function lR(e){return e?.openedFromSessions===!0}function uR(e={},{before:t=null,perPage:r=25}={}){let n=R2(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",nR(n.from)),n.to&&o.set("to",nR(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var cR={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},n2e={failed:"error",passed:"success"},jh={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 dR(e,t){let r=await fetch(uR(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 o2e(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 a2e({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return dt.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},dt.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:jh},dt.default.createElement("option",{value:""},"Every agent"),r.map(a=>dt.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&dt.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:jh},dt.default.createElement("option",{value:""},"Run by anyone"),dt.default.createElement("option",{value:"me"},"Run by me")),dt.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:jh},b3.map(a=>dt.default.createElement("option",{key:a.value,value:a.value},a.label))),dt.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:jh},w3.map(a=>dt.default.createElement("option",{key:a.value,value:a.value},a.label))),dt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",dt.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:jh})),dt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",dt.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:jh})),S3(e)&&dt.default.createElement(pe,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(R0)},"Clear filters"))}function i2e({session:e}){let t=sh(e.kind,e.id),r=cR[e.source]||cR.agent,n=o2e(e);return dt.default.createElement("a",{href:tt(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),lt(t,sR))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},dt.default.createElement(Ce,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),dt.default.createElement("div",{style:{minWidth:0,flex:1}},dt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},dt.default.createElement("span",{style:{fontFamily:H,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&dt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&dt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&dt.default.createElement("div",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&dt.default.createElement(Ce,{tone:n2e[e.outcome]||"muted"},e.outcome),dt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},xo(e.last_activity_at)),dt.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function k3({agents:e=[],user:t=null}){let[r,n]=(0,dt.useState)(()=>aR(window.location.search)),[o,a]=(0,dt.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,dt.useState)("loading"),[l,u]=(0,dt.useState)(null),[c,d]=(0,dt.useState)(!1),[p,f]=(0,dt.useState)(null),[m,y]=(0,dt.useState)(0),[x]=(0,dt.useState)(rR);(0,dt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${iR(r)}`);let v=x.next();return s("loading"),d(!1),f(null),dR(r,null).then(b=>{v()&&(a({sessions:b.sessions||[],total:b.total||0,nextBefore:b.next_before||null}),s("ready"))}).catch(b=>{v()&&(u(b.message),s("error"))}),()=>{x.next()}},[r,m]);let h=async()=>{let v=x.latest();d(!0),f(null);try{let b=await dR(r,o.nextBefore);if(!v())return;a(S=>({sessions:[...S.sessions,...b.sessions||[]],total:b.total??S.total,nextBefore:b.next_before||null}))}catch(b){v()&&f(b.message)}finally{v()&&d(!1)}},g=S3(r);return dt.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},dt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},dt.default.createElement("div",null,dt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),dt.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"&&dt.default.createElement(We,null,o.total," session",o.total===1?"":"s")),dt.default.createElement(a2e,{filters:r,onChange:n,agents:e,user:t}),dt.default.createElement(ze,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&dt.default.createElement(en,null,"loading sessions\u2026"),i==="error"&&dt.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,dt.default.createElement(pe,{size:"sm",onClick:()=>y(v=>v+1)},"Retry")),i==="ready"&&o.sessions.length===0&&dt.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},g?dt.default.createElement(dt.default.Fragment,null,dt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),dt.default.createElement(pe,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(R0)},"Clear filters")):dt.default.createElement(dt.default.Fragment,null,dt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),dt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"Every conversation in an agent's Run workbench and every evaluation replay appears here, ready to replay."))),i==="ready"&&o.sessions.map(v=>dt.default.createElement(i2e,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&&dt.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&&dt.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),dt.default.createElement(pe,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Te=Z(J());var qt=Z(J());var s2e={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function pR(e){return s2e[e]||null}function eA(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function fR({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 l2e="Setting your own host needs permission to manage the organization's keys.";function mR({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?l2e:null}}var hR={openai:{label:"OpenAI",icon:"\u{1F916}",placeholder:"sk-\u2026"},anthropic:{label:"Anthropic",icon:"\u{1F9E0}",placeholder:"sk-ant-\u2026"},openrouter:{label:"OpenRouter",icon:"\u{1F500}",placeholder:"sk-or-\u2026"},ollama:{label:"Ollama",icon:"\u{1F999}",placeholder:"http://localhost:11434/v1"}};function tA({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,qt.useState)(null),[a,i]=(0,qt.useState)(""),[s,l]=(0,qt.useState)(""),[u,c]=(0,qt.useState)(!1),[d,p]=(0,qt.useState)({}),[f,m]=(0,qt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,saveProviderKey:async(g,{hostBased:v=!1,clearApiKey:b=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let S={provider:g,credential:a.trim()};r&&(S.scope=r),v&&(s.trim()||b)&&(S.api_key=b?"":s.trim());let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(S)});if(!w.ok){let _=await w.json().catch(()=>({}));throw new Error(Array.isArray(_.error)?_.error.join(", "):"save failed")}o(null),i(""),l(""),p(_=>({..._,[g]:null})),lT(),await e()}catch(S){t(`Could not save the ${hR[g]?.label||g} credential${S.message!=="save failed"?`: ${S.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!f){m(g),t(null);try{let b={provider:g};r&&(b.scope=r),v&&(a.trim()&&(b.credential=a.trim()),s.trim()&&(b.api_key=s.trim()));let S=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),w=await S.json().catch(()=>({}));if(!S.ok)throw new Error(w.error||"test failed");p(_=>({..._,[g]:w}))}catch(b){p(S=>({...S,[g]:{ok:!1,models:[],error:b.message}}))}finally{m(null)}}},removeProviderKey:async g=>{if(await Wr(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(eA(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(S=>({...S,[g]:null})),lT(),await e()}catch{t("Could not remove the provider credential.")}}}}var gR={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 eb({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:y,removeProviderKey:x}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=gR[r]||gR.default;return qt.default.createElement("div",{className:"border rounded-lg p-6",style:h},qt.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},g.title),qt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},g.description),!n&&qt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),qt.default.createElement("div",{className:"space-y-4"},e.filter(({kind:v})=>v!=="connection").map(v=>{let{provider:b,host_based:S,configured:w,hint:_,api_key_configured:k,api_key_hint:A,platform_default:C}=v,E=hR[b]||{label:b,icon:"\u{1F511}",placeholder:""},I=a===b,Q=p[b],$=f===b,F=S&&(I?s.trim():w||C),N=w?S?`${_}${k?` \xB7 key ${A}`:""}`:`Configured (${_})`:S&&C?`Platform default: ${C}`:"Not configured",O=r==="personal"?pR(v.effective_source):null,{canChange:j,canRemove:T,note:D}=mR({editable:n,scope:r,row:v}),M=r==="organization"&&w?fR(v):null;return qt.default.createElement("div",{key:b,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},qt.default.createElement("div",{className:"flex items-center justify-between"},qt.default.createElement("div",{className:"flex items-center space-x-3"},qt.default.createElement("span",{className:"text-xl"},E.icon),qt.default.createElement("div",null,qt.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},E.label),qt.default.createElement("p",{className:`text-sm ${w?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),M&&qt.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},M)),O&&qt.default.createElement("span",{className:`px-2 py-0.5 rounded text-xs ${o?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-700"}`,"data-testid":"provider-key-source"},O)),(j||T)&&qt.default.createElement("div",{className:"flex items-center space-x-2"},j&&S&&!I&&F&&qt.default.createElement("button",{onClick:()=>y(b),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"),T&&!I&&qt.default.createElement("button",{onClick:()=>x(b),className:`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Remove"),j&&qt.default.createElement("button",{onClick:()=>{i(I?null:b),l(!I&&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"}`},I?"Cancel":w?"Update":"Configure"))),D&&qt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},D),I&&qt.default.createElement("div",{className:"mt-3 space-y-2"},qt.default.createElement("div",{className:"flex items-center space-x-2"},qt.default.createElement("input",{type:S?"text":"password","data-aa-secret":S?void 0:"",value:s,onChange:K=>l(K.target.value),onKeyDown:K=>K.key==="Enter"&&m(b,{hostBased:S}),placeholder:S?E.placeholder:`${E.label} API key (${E.placeholder})`,"aria-label":S?`${E.label} host URL`:`${E.label} API key`,autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),S&&qt.default.createElement("button",{onClick:()=>y(b,{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"),qt.default.createElement("button",{onClick:()=>m(b,{hostBased:S}),disabled:!s.trim()||d,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},d?"Saving\u2026":"Save")),S&&qt.default.createElement("div",{className:"flex items-center space-x-2"},qt.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:K=>c(K.target.value),onKeyDown:K=>K.key==="Enter"&&m(b,{hostBased:S}),placeholder:k?`API key (stored: ${A} \u2014 type to replace)`:"API key (optional \u2014 only for remote servers that require one)","aria-label":`${E.label} API key`,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),k&&qt.default.createElement("button",{onClick:()=>m(b,{hostBased:S,clearApiKey:!0}),disabled:!s.trim()||d,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Clear key"))),S&&I&&qt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"Your Ollama server's address \u2014 the OpenAI-compatible /v1 path is added if you leave it off. Local: http://localhost:11434. Remote: a LAN host, a tunnel URL, or Ollama Cloud (https://ollama.com), which needs an API key. Test lists the models the server currently serves."),S&&Q&&qt.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:Q.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:Q.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},Q.ok?qt.default.createElement(qt.default.Fragment,null,qt.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",Q.host,typeof Q.latency_ms=="number"?` in ${Q.latency_ms} ms`:""," \xB7 ",Q.models.length===0?"no models pulled yet (run `ollama pull ` on the server)":`${Q.models.length} model${Q.models.length===1?"":"s"}`,Q.models.length>0&&qt.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},Q.models.join(" \xB7 "))):qt.default.createElement(qt.default.Fragment,null,qt.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",Q.error)))})))}async function yR(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 rA=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function _3({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=ut(),[a,i]=(0,Te.useState)(null),[s,l]=(0,Te.useState)(!1),[u,c]=(0,Te.useState)(!1),[d,p]=(0,Te.useState)({status:"idle",value:null,error:null}),[f,m]=(0,Te.useState)(!1),[y,x]=(0,Te.useState)(null),[h,g]=(0,Te.useState)(null),[v,b]=(0,Te.useState)([]),[S,w]=(0,Te.useState)(!1),[_,k]=(0,Te.useState)(null),A=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Te.useEffect)(()=>{fetch("/api/usage").then(M=>M.ok?M.json():null).then(M=>i(M?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(M=>M.ok?M.json():null).then(M=>g(M?.members||[])).catch(()=>g([]))},[]);let C=(0,Te.useCallback)(async()=>{try{let M=await fetch("/api/provider_keys?scope=organization");if(!M.ok)throw new Error("load failed");let K=await M.json();b(K.provider_keys||[]),w(!!K.can_manage_organization_keys),k(null)}catch{k("Could not load the organization's provider keys.")}},[]);(0,Te.useEffect)(()=>{C()},[C]);let E=tA({onKeysChanged:C,onError:k,scope:"organization"}),I=async()=>{m(!0),x(null);try{await Ah({planSlug:"pro"})}catch(M){x(M.message),m(!1)}},Q=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let M=await yR();return p({status:"ready",value:M,error:null}),M}catch(M){return p({status:"error",value:null,error:M.message}),null}},$=async()=>{u?c(!1):await Q()&&c(!0)},F=async()=>{let M=await Q();if(M)try{await navigator.clipboard.writeText(M),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,O={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},j=r?.plan_name||"Free",T={free:{seats:1,workspaces:1,agents:3,traces:"250/mo trial"},pro:{seats:5,workspaces:3,agents:"Unlimited",traces:"25,000/mo"},enterprise:{seats:"Unlimited",workspaces:"Unlimited",agents:"Unlimited",traces:"500,000+/mo"}},D=T[j.toLowerCase()]||T.free;return Te.default.createElement("div",{className:"p-6 space-y-6"},Te.default.createElement("div",null,Te.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Te.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Te.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Te.default.createElement("div",{className:"border rounded-lg p-6",style:O},Te.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Te.default.createElement("div",{className:"space-y-3"},Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Te.default.createElement("div",{className:"border rounded-lg p-6",style:O},Te.default.createElement("div",{className:"flex items-center justify-between mb-4"},Te.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Te.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},j)),Te.default.createElement("div",{className:"space-y-3"},Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},D.seats)),Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},D.workspaces)),Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},D.agents)),Te.default.createElement("div",{className:"flex justify-between items-center"},Te.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Te.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},D.traces))),j.toLowerCase()!=="enterprise"&&Te.default.createElement(Te.default.Fragment,null,Te.default.createElement("button",{onClick:I,disabled:f,className:"mt-4 w-full px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},f?"Redirecting to checkout\u2026":"Upgrade Plan"),y&&Te.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},y)))),Te.default.createElement("div",{className:"border rounded-lg p-6",style:O},Te.default.createElement("div",{className:"flex items-center justify-between mb-4"},Te.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),A&&Te.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")),Te.default.createElement("div",{className:"overflow-hidden"},Te.default.createElement("table",{className:"min-w-full"},Te.default.createElement("thead",null,Te.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Te.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Te.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Te.default.createElement("tbody",null,(h||[]).map(M=>Te.default.createElement("tr",{key:M.id??M.email},Te.default.createElement("td",{className:"py-3 px-4"},Te.default.createElement("div",{className:"flex items-center space-x-3"},Te.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Te.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(M.name||M.email||"?").charAt(0).toUpperCase())),Te.default.createElement("div",null,Te.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},M.name||M.email,M.id!=null&&M.id===t?.id&&Te.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),M.name&&M.email&&Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},M.email)))),Te.default.createElement("td",{className:"py-3 px-4"},M.role?Te.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(M.role).charAt(0).toUpperCase()+String(M.role).slice(1)):Te.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Te.default.createElement("div",{className:"space-y-2"},_&&Te.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},_),Te.default.createElement(eb,{providerKeys:v,editor:E,scope:"organization",editable:S})),Te.default.createElement("div",{className:"border rounded-lg p-6",style:O},Te.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Te.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Te.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Te.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Te.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Te.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},rA(a?.traces_used),a?.traces_limit>0&&Te.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",rA(a.traces_limit))),Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Te.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Te.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},rA(a?.runs_used)),Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Te.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Te.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},rA(a?.tokens_used)),Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Te.default.createElement("div",{className:"border rounded-lg p-6",style:O},Te.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Te.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"," ",Te.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"),":"),Te.default.createElement("pre",{className:`text-xs rounded-lg p-4 overflow-x-auto mb-4 ${o?"bg-black text-gray-300":"bg-gray-900 text-gray-100"}`},`telemetry: +`)||b?.instructions||"",Yh=x.slice();g&&!Yh.some(le=>le.id===g)&&Yh.unshift({id:g,message_count:Qt.length});let kA=(c.trim().length>0||p.length>0)&&!C,_d=I?.status==="awaiting_input",hb=_d?dh(I.input_requests):[],_A=new Set(H.map(({request:le})=>le.id)),Xh=I&&!C&&I.status==="failed",Tf=I&&!C&&I.status==="complete"&&!hs(I)&&!g,Ml={background:a.cardBg,border:`1px solid ${a.cardBorder}`,borderRadius:"12px"},Cd={borderBottom:`1px solid ${a.cardBorder}`},Zh={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontSize:"13px",fontFamily:Pt.mono,maxWidth:"260px"},Jh={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${m?Qo:a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},Hu=jn("system",o),yb=UC(o);return X.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},X.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},de&&X.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},X.default.createElement("div",null,X.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),X.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",de.runs_used," of ",de.runs_limit," runs on the"," ",de.plan||"free"," plan. Upgrade to keep running agents."),te&&X.default.createElement("p",{className:"text-sm text-red-600 mt-1"},te)),X.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Sd&&X.default.createElement("a",{href:Sd,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),X.default.createElement("button",{onClick:Gh,disabled:ee,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},ee?"Redirecting\u2026":"Upgrade to Pro"))),X.default.createElement("div",{"data-testid":"runner-toolbar",style:Ml,className:"p-4 flex items-center gap-3 flex-wrap"},X.default.createElement(In,{size:40}),X.default.createElement("div",{className:"min-w-0"},X.default.createElement("div",{className:"font-semibold truncate",style:{color:a.textPrimary}},e.name),X.default.createElement("div",{className:"text-xs font-mono",style:{color:a.textSecondary}},e.provider," / ",e.model)),X.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},X.default.createElement("select",{"data-testid":"runner-action-select",value:l,onChange:le=>ws(le.target.value),disabled:C,className:"aa-field",style:Zh,title:"Agent action to invoke"},s.map(le=>X.default.createElement("option",{key:le,value:le},"#",le))),X.default.createElement("select",{"data-testid":"runner-conversation-select",value:g??"",onChange:le=>Wu(le.target.value),disabled:C,className:"aa-field",style:Zh,title:"Conversation to continue"},X.default.createElement("option",{value:""},"New conversation on first run"),Yh.map(le=>X.default.createElement("option",{key:le.id,value:le.id},"Conversation #",le.id," \xB7 ",le.message_count??0," message",le.message_count===1?"":"s"))),X.default.createElement(fa,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:a,onClick:to,disabled:C,title:"Start an empty conversation for this action"},"+ New conversation"),X.default.createElement(fa,{testId:"runner-back",variant:"secondary",size:"sm",colors:a,onClick:t},"\u2190 Back to editor"))),X.default.createElement("div",{"data-testid":"runner-context",ref:xs,style:Ml,className:"flex flex-col overflow-hidden"},X.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:Cd},X.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},X.default.createElement("h3",{className:"font-medium",style:{color:a.textPrimary}},"Context"),b&&X.default.createElement("span",{className:"text-xs font-mono",style:{color:a.textMuted}},"#",b.id," \xB7 ",Qt.length," message",Qt.length===1?"":"s"),pt==="recording"&&X.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."},X.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),pt==="limit"&&X.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")),X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},X.default.createElement(rCe,{run:I,darkMode:o,colors:a}),b&&X.default.createElement(fa,{testId:"runner-replay",variant:"secondary",size:"sm",colors:a,onClick:()=>lt(ch("context",b.id)),disabled:C,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),X.default.createElement("div",{className:"relative",ref:rt},X.default.createElement(fa,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:a,onClick:()=>oe(le=>!le),disabled:C,title:"Insert a message into the context without running"},"+ Add message"),B&&X.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,De,st])=>X.default.createElement("button",{key:le,type:"button","data-testid":De,onClick:()=>fo(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"}},st)))))),X.default.createElement("div",{ref:bs,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},X.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:()=>Y(le=>!le),title:P?"Collapse system instructions":"Show system instructions"},X.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Hu.background,color:Hu.color,textAlign:"center"}},Hu.label)),X.default.createElement("div",{className:"min-w-0 flex-1"},kd?P?X.default.createElement("pre",{style:{...yb,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},kd):X.default.createElement("div",{className:"text-sm truncate",style:{color:a.textSecondary}},kd.split(` +`).find(le=>le.trim())||""):X.default.createElement("div",{className:"text-sm",style:{color:a.textMuted}},"No system instructions"),X.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:a.textMuted}},"read-only \xB7 Edit in the Instructions tab")),X.default.createElement(NQ,{open:P,color:a.textMuted})),S&&X.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),Qt.length>0?X.default.createElement("div",{className:"mt-3"},X.default.createElement(ds,{messages:Qt,darkMode:o,testIdPrefix:"runner-message",onUiAction:Da,onEditMessage:bd,onDeleteMessage:wd})):!$&&!N&&!Xh&&X.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."),$&&X.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},X.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:jn("user",o).background,color:jn("user",o).color,textAlign:"center"}},"User")),X.default.createElement("div",{className:"min-w-0 flex-1"},X.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:a.textPrimary}},$.content),X.default.createElement(WC,{attachments:$.attachments,darkMode:o}))),I&&(C||GD(I).length>0)&&X.default.createElement("div",{className:"mt-3 space-y-2"},X.default.createElement(tCe,{run:I,darkMode:o,colors:a,expanded:j,onToggle:le=>M(De=>({...De,[le]:!De[le]}))}),C&&!_d&&X.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:a.textSecondary}},X.default.createElement("span",{className:"animate-pulse"},"\u25CF"),X.default.createElement("span",null,GD(I).length>0?"Working\u2026":"Starting run\u2026"))),(hb.length>0||H.length>0)&&X.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},_d&&X.default.createElement("div",{className:"text-sm",style:{color:a.textSecondary}},"Paused for input: answer to continue this run."),hb.filter(le=>!_A.has(le.id)).map(le=>X.default.createElement(Jp,{key:le.id,request:le,showRunLink:!1,onSettled:Kh})),H.map(({request:le,outcome:De})=>X.default.createElement(Jp,{key:le.id,request:le,initialOutcome:De,showRunLink:!1}))),D&&X.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},D),Xh&&I.error_message&&X.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"}},X.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),X.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},I.error_message)),Tf&&X.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:a.innerBg,color:a.textPrimary}},X.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:a.textMuted}},"Output"),X.default.createElement(Us,{text:I.output||"No output",darkMode:o,onUiAction:Da})),N&&X.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:a.innerBg,border:`1px solid ${a.cardBorder}`}},X.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},X.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:a.textMuted}},X.default.createElement("span",{style:{color:a.textPrimary}},"Run #",N.id),X.default.createElement(gd,{tone:VD[N.status]||"neutral",darkMode:o},N.status),N.output_metadata?.model&&X.default.createElement("span",null,N.output_metadata.provider,"/",N.output_metadata.model),N.duration_ms?X.default.createElement("span",null,G2(N.duration_ms)):null,N.trace_id&&X.default.createElement("a",{href:Re(`/traces?trace=${N.trace_id}`),className:"hover:underline",style:{color:a.textSecondary}},"trace:",N.trace_id.slice(0,8)," \u2192"),X.default.createElement("span",null,"\xB7 no conversation attached")),X.default.createElement("button",{type:"button",onClick:()=>T(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)&&X.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:a.textSecondary}},N.input_prompt||N.input_preview),N.error_message?X.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:o?"#fca5a5":"#b91c1c"}},N.error_message):X.default.createElement("div",{className:"text-sm",style:{color:a.textPrimary}},X.default.createElement(Us,{text:N.output||"No output",darkMode:o}))),ne&&X.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${a.borderStrong}`}},X.default.createElement("div",{className:"flex items-center gap-2 mb-2"},X.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:jn(ne,o).background,color:jn(ne,o).color}},jn(ne,o).label),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Added to the context without running the agent")),X.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:tt,onChange:le=>it(le.target.value),onKeyDown:le=>{le.key==="Escape"&&he(null),le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&Pl()},placeholder:ne==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...Jh,border:`1px solid ${a.inputBorder}`}}),X.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},X.default.createElement(fa,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:a,onClick:Pl,disabled:ve||!tt.trim()},ve?"Adding\u2026":`Add ${ne} message`),X.default.createElement(fa,{variant:"secondary",size:"sm",colors:a,onClick:()=>he(null),disabled:ve},"Cancel"),Ue&&X.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},Ue))))),X.default.createElement("div",{style:Ml,className:"p-4"},X.default.createElement("div",{onDragOver:le=>{le.preventDefault(),m||y(!0)},onDragLeave:()=>y(!1),onDrop:le=>{le.preventDefault(),y(!1),C||Hh(le.dataTransfer?.files)}},X.default.createElement("textarea",{"data-testid":"runner-prompt",value:c,onChange:le=>d(le.target.value),onKeyDown:Vh,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:Jh})),X.default.createElement(WC,{attachments:p,darkMode:o,testId:"runner-attachment-chip",onRemove:(le,De)=>pb(De),removeTestId:"runner-attachment-remove"}),X.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},X.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},X.default.createElement("input",{ref:be,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:le=>{Hh(le.target.files),le.target.value=""}}),X.default.createElement(fa,{testId:"runner-attach",variant:"secondary",size:"sm",colors:a,onClick:()=>be.current?.click(),disabled:C,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},"Press ",X.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"\u2318")," + ",X.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:a.mutedBg,color:a.textSecondary}},"Enter")," to run")),X.default.createElement(fa,{testId:"runner-run",variant:"primary",colors:a,onClick:po,disabled:!kA},C&&_d?X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{style:{fontFamily:Pt.mono}},"[?]")," Waiting for input"):C?X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:Pt.mono}},"[~]")," Running\u2026"):X.default.createElement(X.default.Fragment,null,X.default.createElement("span",{style:{fontFamily:Pt.mono}},"[>]")," Run"))))),X.default.createElement("div",{className:"space-y-4 min-w-0"},X.default.createElement("div",{style:Ml,className:"p-4"},X.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Configuration"),X.default.createElement("dl",{className:"space-y-2 text-sm"},X.default.createElement("div",{className:"flex justify-between"},X.default.createElement("dt",{style:{color:a.textSecondary}},"Temperature"),X.default.createElement("dd",{style:{color:a.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),X.default.createElement(EQ,{label:"Tools",names:e.tools||[],colors:a}),X.default.createElement(EQ,{label:"MCP",names:(e.mcp_servers||e.mcpServers||[]).map(eCe),colors:a}),X.default.createElement("div",{className:"flex justify-between items-center gap-3"},X.default.createElement("dt",{className:"shrink-0",style:{color:a.textSecondary}},"Checkout"),X.default.createElement("dd",{className:"min-w-0"},X.default.createElement("select",{"data-testid":"runner-checkout",value:K,onChange:le=>ie(le.target.value),onFocus:Ie,className:"text-xs rounded border px-1 py-0.5 max-w-[12rem]",style:{background:a.cardBg,borderColor:a.cardBorder,color:a.textPrimary}},X.default.createElement("option",{value:""},"None"),z.map(le=>X.default.createElement("option",{key:le.value,value:le.value},le.label))))),ge&&!K&&X.default.createElement("p",{className:"text-xs","data-testid":"runner-checkout-hint",style:{color:a.textMuted}},z.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."),X.default.createElement("div",{className:"flex justify-between items-center"},X.default.createElement("dt",{style:{color:a.textSecondary}},"Status"),X.default.createElement("dd",null,X.default.createElement(gd,{tone:e.status==="active"?"success":"neutral",darkMode:o},e.status)))),e.instructions&&X.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${a.cardBorder}`}},X.default.createElement("div",{className:"text-xs mb-1.5",style:{color:a.textSecondary}},"System Instructions"),X.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))),X.default.createElement("div",{style:Ml,className:"overflow-hidden"},X.default.createElement("div",{className:"px-4 py-3",style:Cd},X.default.createElement("h4",{className:"font-medium",style:{color:a.textPrimary}},"Recent Runs")),X.default.createElement("div",{className:"max-h-64 overflow-auto"},_.length>0?X.default.createElement("div",null,_.map(le=>X.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:()=>mb(le),title:hs(le)?"Open this run\u2019s conversation":"Show this run\u2019s output"},X.default.createElement("div",{className:"flex items-center justify-between mb-1"},X.default.createElement(gd,{tone:VD[le.status]||"neutral",darkMode:o},le.status),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},G2(le.duration_ms))),X.default.createElement("p",{className:"text-sm truncate",style:{color:a.textCell}},le.input_preview||le.input_prompt?.substring(0,50)),X.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:a.textMuted}},le.model&&X.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:a.mutedBg,color:a.textSecondary}},le.model),hs(le)&&X.default.createElement("span",{className:"font-mono"},"#",hs(le)),X.default.createElement("span",null,new Date(le.created_at).toLocaleString()))))):X.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:a.textMuted}},"No runs yet"))),X.default.createElement("div",{style:Ml,className:"p-4"},X.default.createElement("h4",{className:"font-medium mb-3",style:{color:a.textPrimary}},"Example Prompts"),X.default.createElement("div",{className:"space-y-2"},Z_e.map(le=>X.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 Ge=Z(Q()),Y2=e=>new Date(`${e}T00:00:00`),nCe=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function XD({onSelectAgent:e}){let[t,r]=(0,Ge.useState)(null),[n,o]=(0,Ge.useState)(!0),[a,i]=(0,Ge.useState)(30);(0,Ge.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 Ge.default.createElement("div",{className:"flex items-center justify-center h-64"},Ge.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 Ge.default.createElement("div",{className:"space-y-6"},Ge.default.createElement("div",{className:"flex items-center justify-between"},Ge.default.createElement("div",null,Ge.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ge.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ge.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"},nCe.map(p=>Ge.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Ge.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ge.default.createElement(G0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ge.default.createElement(G0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ge.default.createElement(G0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ge.default.createElement(G0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ge.default.createElement(G0,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ge.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ge.default.createElement("div",{className:"h-48"},Ge.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Ge.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ge.default.createElement("div",{className:"relative w-full"},Ge.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"}}),Ge.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"))))),Ge.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ge.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&Y2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ge.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&Y2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ge.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ge.default.createElement("div",{className:"h-48"},Ge.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Ge.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ge.default.createElement("div",{className:"relative w-full"},Ge.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"}}),Ge.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"))))),Ge.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ge.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&Y2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ge.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&Y2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ge.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ge.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ge.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ge.default.createElement("div",{className:"space-y-3"},t.top_agents.map((p,f)=>Ge.default.createElement("div",{key:p.id,onClick:()=>e?.(p),className:"flex items-center space-x-4 p-3 rounded-lg hover:bg-gray-50 cursor-pointer transition-colors"},Ge.default.createElement("div",{className:"w-8 h-8 rounded-full bg-red-100 flex items-center justify-center text-red-600 font-semibold"},f+1),Ge.default.createElement("div",{className:"flex-1 min-w-0"},Ge.default.createElement("p",{className:"font-medium text-gray-900 truncate"},p.name),Ge.default.createElement("p",{className:"text-sm text-gray-500"},p.run_count," runs")),Ge.default.createElement("div",{className:"text-right"},Ge.default.createElement("p",{className:"font-medium text-gray-900"},l(p.total_tokens)),Ge.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ge.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ge.default.createElement("div",{className:"space-y-6"},Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ge.default.createElement("div",{className:"space-y-3"},Object.entries(t.provider_breakdown).map(([p,f])=>{let m=t?.summary?.total_runs||1,y=(f/m*100).toFixed(1);return Ge.default.createElement("div",{key:p},Ge.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ge.default.createElement("span",{className:"capitalize text-gray-600"},p),Ge.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Ge.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ge.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ge.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ge.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ge.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ge.default.createElement("div",{className:"space-y-4"},Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ge.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ge.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ge.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ge.default.createElement("div",{className:"flex justify-between items-center"},Ge.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ge.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function G0({title:e,value:t,subtitle:r,color:n}){return Ge.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`},Ge.default.createElement("p",{className:"text-sm text-gray-500"},e),Ge.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ge.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var ae=Z(Q());function ZD({agent:e,onBack:t}){let{timeWindow:r}=vl(),[n,o]=(0,ae.useState)([]),[a,i]=(0,ae.useState)([]),[s,l]=(0,ae.useState)(null),[u,c]=(0,ae.useState)(null),[d,p]=(0,ae.useState)([]),[f,m]=(0,ae.useState)("run"),[y,x]=(0,ae.useState)(!1),[h,g]=(0,ae.useState)(!1),v=(0,ae.useRef)(!1),b=(0,ae.useRef)(!1),[k,S]=(0,ae.useState)("recent"),[w,_]=(0,ae.useState)({}),[A,C]=(0,ae.useState)(!0),[E,I]=(0,ae.useState)(1),[J,$]=(0,ae.useState)(!0),[U,N]=(0,ae.useState)(""),[T,D]=(0,ae.useState)(""),[O,j]=(0,ae.useState)("recent"),M=(0,ae.useRef)(null),H=Re(`/agents/${e.id}/interactions`);(0,ae.useEffect)(()=>{G()},[e.id,E,U,T,O,r.minutes]),(0,ae.useEffect)(()=>{I(1)},[r.minutes]),(0,ae.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(P=>P.json()).then(P=>i(P.interactions||[])).catch(()=>{}).finally(()=>g(!0))},[e.id]),(0,ae.useEffect)(()=>{let P=()=>{let Y=Qn(),B=Y.match(/\/interactions\/runs\/(\d+)/),oe=Y.match(/\/interactions\/sessions\/(\d+)/);if(B)m("run"),c(null),V(parseInt(B[1],10),{updateUrl:!1});else if(oe)m("all"),c({id:parseInt(oe[1],10)});else if(Y.endsWith("/interactions/sessions")||Y.endsWith("/interactions/all"))Y.endsWith("/all")&&window.history.replaceState({},"",Y.replace(/\/all$/,"/sessions")),m("all"),c(null);else{v.current=!1,l(null),c(null),p([]);return}v.current=!0};return P(),window.addEventListener("popstate",P),()=>window.removeEventListener("popstate",P)},[e.id]),(0,ae.useEffect)(()=>{v.current||b.current||!y||!h||m(n.length===0&&a.length>0?"all":"run")},[y,h,n.length,a.length]);let G=async()=>{C(!0);try{let P=new URLSearchParams({page:E.toString(),per_page:"20",minutes:String(r.minutes)});U&&P.append("status",U),T&&P.append("source",T),O!=="recent"&&P.append("sort",O);let B=await(await fetch(`/api/agents/${e.id}/runs?${P}`)).json();o(E===1?B.runs:oe=>[...oe,...B.runs]),$(B.runs.length===20)}catch(P){console.error("Failed to load runs:",P)}finally{C(!1),x(!0)}},z=P=>{window.location.pathname!==P&&window.history.pushState({},"",P)},V=async(P,{updateUrl:Y=!0}={})=>{try{let oe=await(await fetch(`/api/runs/${P}`)).json();l(oe.run),p(oe.messages||[]),m("run"),c(null),Y&&z(`${H}/runs/${P}`)}catch(B){console.error("Failed to load run details:",B)}},K=P=>{if(P.source==="reported"){let Y=P.trace_id||String(P.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",Re(`/traces/${Y}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:Re(`/traces/${Y}`)}}));return}V(P.record_id||P.id)},ie=()=>{l(null),c(null),p([]),m("run"),z(H)},Ie=P=>{m("all"),P?(c({id:P.id,name:P.display_name}),z(`${H}/sessions/${P.id}`)):(c(null),z(`${H}/sessions`))},ge=P=>{b.current=!0,m(P),z(P==="all"?u?`${H}/sessions/${u.id}`:`${H}/sessions`:s?`${H}/runs/${s.id}`:H)},de=u?u.name||a.find(P=>P.id===u.id)?.display_name||`Session #${u.id}`:null,R=()=>{let P=new Map;n.forEach(oe=>{let ne=`${oe.model||"unknown"}|${oe.instructions_digest||"none"}`;P.has(ne)||P.set(ne,{key:ne,model:oe.model,instructionsDigest:oe.instructions_digest,instructionsVersion:oe.instructions_version,instructionsCodename:oe.instructions_codename,instructionsPreview:oe.instructions_preview,runs:[]}),P.get(ne).runs.push(oe)});let Y=[...P.values()].map(oe=>({...oe,count:oe.runs.length,completed:oe.runs.filter(ne=>ne.status==="complete").length,failed:oe.runs.filter(ne=>ne.status==="failed").length,totalTokens:oe.runs.reduce((ne,he)=>ne+(he.tokens||0),0),avgTokens:oe.runs.reduce((ne,he)=>ne+(he.tokens||0),0)/oe.runs.length,avgDuration:oe.runs.reduce((ne,he)=>ne+(he.duration_ms||0),0)/oe.runs.length,latest:oe.runs[0],sortedRuns:[...oe.runs].sort((ne,he)=>(he.duration_ms||0)-(ne.duration_ms||0))}));Y.sort((oe,ne)=>k==="longest"?ne.avgDuration-oe.avgDuration:new Date(ne.latest.created_at)-new Date(oe.latest.created_at));let B={runs:n.length,completed:n.filter(oe=>oe.status==="complete").length,tokens:n.reduce((oe,ne)=>oe+(ne.tokens||0),0),avgDuration:n.length?n.reduce((oe,ne)=>oe+(ne.duration_ms||0),0)/n.length:0,models:[...new Set(n.map(oe=>oe.model).filter(Boolean))]};return{cohorts:Y,totals:B}},ee=P=>{switch(P){case"complete":return"bg-green-100 text-green-700";case"failed":return"bg-red-100 text-red-700";case"running":return"bg-blue-100 text-blue-700";case"pending":return"bg-yellow-100 text-yellow-700";case"cancelled":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},L=P=>P?P<1e3?`${P}ms`:P<6e4?`${(P/1e3).toFixed(1)}s`:`${Math.floor(P/6e4)}m ${Math.floor(P%6e4/1e3)}s`:"-",te=P=>P==null?"\u2014":P===0?"$0":P<.01?`$${P.toFixed(4)}`:`$${P.toFixed(2)}`,F=P=>{let Y=new Date(P),oe=new Date-Y,ne=Math.floor(oe/6e4),he=Math.floor(oe/36e5),tt=Math.floor(oe/864e5);return ne<1?"Just now":ne<60?`${ne}m ago`:he<24?`${he}h ago`:tt<7?`${tt}d ago`:Y.toLocaleDateString()};return ae.default.createElement("div",{className:"flex h-full"},ae.default.createElement("div",{className:"w-80 border-r border-gray-200 flex flex-col bg-white"},ae.default.createElement("div",{className:"p-4 border-b border-gray-200"},ae.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},ae.default.createElement("button",{onClick:t,className:"p-1 text-gray-400 hover:text-gray-600 transition-colors"},ae.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ae.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),ae.default.createElement("div",null,ae.default.createElement("h2",{className:"font-semibold text-gray-900"},"Agent Interactions"),ae.default.createElement("p",{className:"text-sm text-gray-500"},e.name))),ae.default.createElement("div",{className:"mb-2"},ae.default.createElement(xl,{compact:!0})),ae.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 mb-2 text-sm"},[{value:"",label:"All"},{value:"dashboard",label:"Dashboard"},{value:"reported",label:"Reported"}].map(P=>ae.default.createElement("button",{key:P.value||"all",onClick:()=>{D(P.value),I(1)},className:`flex-1 px-2 py-1 rounded-md transition-colors ${T===P.value?"bg-white shadow text-gray-900":"text-gray-600"}`,title:P.value==="dashboard"?"Executions started from this dashboard":P.value==="reported"?"Executions reported by your app via telemetry":"Every execution, however it started"},P.label))),ae.default.createElement("select",{value:U,onChange:P=>{N(P.target.value),I(1)},className:"w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},ae.default.createElement("option",{value:""},"All statuses"),ae.default.createElement("option",{value:"complete"},"Completed"),ae.default.createElement("option",{value:"failed"},"Failed"),ae.default.createElement("option",{value:"running"},"Running"),ae.default.createElement("option",{value:"cancelled"},"Cancelled")),ae.default.createElement("select",{value:O,onChange:P=>{j(P.target.value),I(1)},className:"w-full mt-2 px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},ae.default.createElement("option",{value:"recent"},"Most recent"),ae.default.createElement("option",{value:"longest"},"Longest running"),ae.default.createElement("option",{value:"cost"},"Highest cost"),ae.default.createElement("option",{value:"tokens"},"Most tokens"))),ae.default.createElement("div",{className:"flex-1 overflow-auto"},A&&n.length===0?ae.default.createElement("div",{className:"flex items-center justify-center h-32"},ae.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):n.length>0?ae.default.createElement(ae.default.Fragment,null,n.map(P=>{let Y=P.source==="reported";return ae.default.createElement("div",{key:P.id,onClick:()=>K(P),title:Y?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b border-gray-100 cursor-pointer transition-colors ${!Y&&s?.id===P.id?"bg-red-50 border-l-4 border-l-red-500":"hover:bg-gray-50"}`},ae.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},ae.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(P.status)}`},P.status),ae.default.createElement("div",{className:"flex items-center gap-2"},ae.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${Y?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`},Y?"reported":"dashboard"),ae.default.createElement("span",{className:"text-xs text-gray-400"},F(P.created_at||P.occurred_at)),!Y&&ae.default.createElement(sd,{kind:"run",id:P.id,title:"Replay this run"}))),ae.default.createElement("p",{className:"text-sm text-gray-700 truncate"},P.input_preview||P.input_prompt?.substring(0,60)||(Y?`${P.action_name||"execution"} \xB7 trace ${String(P.trace_id||"").slice(0,8)}`:"No input")),ae.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs text-gray-400 flex-wrap gap-y-1"},P.model&&ae.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},P.model),ae.default.createElement("span",{className:O==="longest"?"text-gray-700 font-medium":void 0},L(P.duration_ms)),!!P.tokens&&ae.default.createElement("span",{className:O==="tokens"?"text-gray-700 font-medium":void 0},P.tokens," tokens"),P.cost!=null&&ae.default.createElement("span",{className:O==="cost"?"text-gray-700 font-medium":void 0,title:"Estimated from token counts at this model's published rates"},te(P.cost))))}),J&&ae.default.createElement("button",{onClick:()=>I(P=>P+1),disabled:A,className:"w-full py-3 text-sm text-red-600 hover:bg-gray-50 transition-colors"},A?"Loading...":"Load More")):ae.default.createElement("div",{className:"p-8 text-center text-gray-400"},ae.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 text-gray-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ae.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"})),ae.default.createElement("p",null,"No conversations yet")))),ae.default.createElement("div",{className:"flex-1 flex flex-col bg-gray-50"},ae.default.createElement("div",{className:"px-4 py-2 bg-white border-b border-gray-100 flex items-center gap-1.5 text-xs text-gray-500"},ae.default.createElement("button",{onClick:t,className:"hover:text-gray-900 hover:underline transition-colors"},e.name),ae.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"||s?ae.default.createElement(ae.default.Fragment,null,ae.default.createElement("button",{onClick:ie,className:"hover:text-gray-900 hover:underline transition-colors"},"Interactions"),ae.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"?u?ae.default.createElement(ae.default.Fragment,null,ae.default.createElement("button",{onClick:()=>Ie(null),className:"hover:text-gray-900 hover:underline transition-colors"},"Sessions"),ae.default.createElement("span",{className:"text-gray-300"},"/"),ae.default.createElement("span",{className:"text-gray-900 font-medium"},de)):ae.default.createElement("span",{className:"text-gray-900 font-medium"},"Sessions"):ae.default.createElement("span",{className:"text-gray-900 font-medium"},"Run #",s.id)):ae.default.createElement("span",{className:"text-gray-900 font-medium"},"Interactions")),ae.default.createElement("div",{className:"p-3 bg-white border-b border-gray-200 flex items-center justify-between"},ae.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},ae.default.createElement("button",{onClick:()=>ge("run"),className:`px-3 py-1 text-sm rounded-md transition-colors ${f==="run"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Selected run"),ae.default.createElement("button",{onClick:()=>ge("all"),className:`px-3 py-1 text-sm rounded-md transition-colors ${f==="all"?"bg-white shadow text-gray-900":"text-gray-600"}`},"Sessions")),f==="run"&&s&&ae.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${ee(s.status)}`},s.status)),f==="all"?ae.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:P}=R();return ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4 space-y-3"},ae.default.createElement("div",{className:"flex items-center gap-3"},ae.default.createElement(In,{size:40}),ae.default.createElement("div",null,ae.default.createElement("h3",{className:"font-semibold text-gray-900"},e.name),ae.default.createElement("p",{className:"text-xs text-gray-500"},u?`${de} \u2014 one persisted interaction stream`:"Sessions group this agent\u2019s runs into persisted interaction streams"))),ae.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},ae.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),ae.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.runs)),ae.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),ae.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.runs?Math.round(P.completed/P.runs*100):0,"%")),ae.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),ae.default.createElement("p",{className:"text-lg font-bold text-gray-900"},L(Math.round(P.avgDuration)))),ae.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),ae.default.createElement("p",{className:"text-lg font-bold text-gray-900"},P.tokens.toLocaleString()))))})(),ae.default.createElement(ju,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:Ie})):s?ae.default.createElement(ae.default.Fragment,null,ae.default.createElement("div",{className:"p-4 bg-white border-b border-gray-200"},ae.default.createElement("div",{className:"flex items-center space-x-3"},ae.default.createElement(In,{size:40}),ae.default.createElement("div",null,ae.default.createElement("h3",{className:"font-medium text-gray-900"},e.name," \u2014 Run #",s.id),ae.default.createElement("p",{className:"text-xs text-gray-500"},new Date(s.created_at).toLocaleString())))),ae.default.createElement("div",{ref:M,className:"flex-1 overflow-auto p-6"},ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 shadow-sm p-4"},d.length>0?ae.default.createElement(ds,{messages:d,darkMode:!1}):ae.default.createElement(ds,{darkMode:!1,messages:[{id:`run-${s.id}-input`,role:"user",content:s.input_prompt||s.input_preview,created_at:s.created_at},{id:`run-${s.id}-output`,role:"assistant",content:s.error_message||s.output||s.output_preview||"No response",created_at:s.completed_at||s.created_at}]}))),ae.default.createElement("div",{className:"p-4 bg-white border-t border-gray-200"},ae.default.createElement("div",{className:"flex items-center justify-center space-x-8 text-sm text-gray-500"},ae.default.createElement("span",null,"Duration: ",L(s.duration_ms)),s.total_tokens&&ae.default.createElement("span",null,"Tokens: ",s.total_tokens),s.input_tokens&&s.output_tokens&&ae.default.createElement("span",null,"Input: ",s.input_tokens," / Output: ",s.output_tokens),s.trace_id&&ae.default.createElement("a",{href:Re(`/traces?trace=${s.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${s.trace_id} \u2014 open in Traces`},"trace:",s.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:P,totals:Y}=R();return P.length===0?ae.default.createElement("div",{className:"flex-1 flex items-center justify-center"},ae.default.createElement("div",{className:"text-center text-gray-400"},ae.default.createElement(In,{size:100}),ae.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):ae.default.createElement("div",{className:"flex-1 overflow-auto p-6 space-y-5"},ae.default.createElement("div",{className:"flex items-center gap-3"},ae.default.createElement(In,{size:40}),ae.default.createElement("div",null,ae.default.createElement("h3",{className:"font-semibold text-gray-900"},"Agent Report"),ae.default.createElement("p",{className:"text-xs text-gray-500"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),ae.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),ae.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.runs)),ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),ae.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.runs?Math.round(Y.completed/Y.runs*100):0,"%")),ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),ae.default.createElement("p",{className:"text-xl font-bold text-gray-900"},L(Math.round(Y.avgDuration)))),ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},ae.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),ae.default.createElement("p",{className:"text-xl font-bold text-gray-900"},Y.tokens.toLocaleString()))),Y.models.length>0&&ae.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},ae.default.createElement("span",{className:"text-gray-500"},"Models used:"),Y.models.map(B=>ae.default.createElement("span",{key:B,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},B))),a.length>0&&ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},ae.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},ae.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Sessions \u2014 grouped interaction streams")),ae.default.createElement("div",{className:"divide-y divide-gray-100"},a.map(B=>ae.default.createElement("div",{key:B.id,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer flex items-center justify-between gap-3",onClick:()=>Ie(B),title:"Open this session's interaction stream"},ae.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:B.display_name},ae.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),ae.default.createElement("span",{className:"text-sm text-gray-900 truncate"},B.agent?.name||B.agent_name),B.action_name&&ae.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",B.action_name)),ae.default.createElement("div",{className:"flex items-center gap-3 text-xs text-gray-400 flex-shrink-0"},ae.default.createElement("span",null,B.message_count," messages"),ae.default.createElement("span",null,(B.tokens?.total||0).toLocaleString()," tokens"),ae.default.createElement("span",null,F(B.last_activity_at)),ae.default.createElement(sd,{kind:"context",id:B.id,title:"Replay this conversation"})))))),ae.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},ae.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100 flex items-center justify-between"},ae.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Interactions by instructions \xD7 model"),ae.default.createElement("select",{value:k,onChange:B=>S(B.target.value),className:"text-xs border border-gray-200 rounded px-2 py-1 text-gray-600"},ae.default.createElement("option",{value:"recent"},"Most recent"),ae.default.createElement("option",{value:"longest"},"Longest interactions"))),ae.default.createElement("div",{className:"divide-y divide-gray-100"},P.map(B=>ae.default.createElement("div",{key:B.key},ae.default.createElement("div",{className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>_(oe=>({...oe,[B.key]:!oe[B.key]})),title:"Show this configuration's runs"},ae.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},ae.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},B.model||"unknown model"),ae.default.createElement("span",{className:"text-xs text-gray-400 font-mono",title:B.instructionsDigest?`sha:${B.instructionsDigest}`:void 0},"instructions"," ",B.instructionsDigest?[B.instructionsVersion,B.instructionsCodename||B.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),B.instructionsPreview&&ae.default.createElement("p",{className:"text-xs text-gray-500 mt-1 truncate"},B.instructionsPreview),ae.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs text-gray-400 flex-wrap gap-y-1"},ae.default.createElement("span",null,B.count," run",B.count>1?"s":""),ae.default.createElement("span",{className:B.failed>0?"text-red-500":"text-green-600"},B.count?Math.round(B.completed/B.count*100):0,"% success"),ae.default.createElement("span",null,"avg ",L(Math.round(B.avgDuration))),ae.default.createElement("span",null,"avg ",Math.round(B.avgTokens).toLocaleString()," tokens"),ae.default.createElement("span",null,"last ",F(B.latest.created_at)))),w[B.key]&&ae.default.createElement("div",{className:"bg-gray-50 divide-y divide-gray-100 border-t border-gray-100"},B.sortedRuns.map(oe=>ae.default.createElement("div",{key:oe.id,className:"px-6 py-2 hover:bg-gray-100 cursor-pointer",onClick:()=>V(oe.id),title:"Open this run's interaction"},ae.default.createElement("p",{className:"text-xs text-gray-700 truncate"},oe.input_preview||"No input"),ae.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] text-gray-400"},ae.default.createElement("span",{className:oe.status==="failed"?"text-red-500":""},oe.status),ae.default.createElement("span",null,L(oe.duration_ms)),oe.tokens&&ae.default.createElement("span",null,oe.tokens.toLocaleString()," tokens"),ae.default.createElement("span",null,F(oe.created_at)))))))))))})()))}var ct=Z(Q());var oCe={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function JD({onUseTemplate:e,onClose:t}){let[r,n]=(0,ct.useState)([]),[o,a]=(0,ct.useState)([]),[i,s]=(0,ct.useState)(""),[l,u]=(0,ct.useState)(null),[c,d]=(0,ct.useState)(!0),[p,f]=(0,ct.useState)(!1),[m,y]=(0,ct.useState)(null);(0,ct.useEffect)(()=>{x()},[i]);let x=async()=>{d(!0);try{let g=new URLSearchParams;i&&g.append("category",i);let b=await(await fetch(`/api/templates?${g}`)).json();n(b.templates),a(b.categories)}catch(g){console.error("Failed to load templates:",g)}finally{d(!1)}},h=async g=>{f(!0),y(null);try{let v=await fetch(`/api/templates/${g.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name})});if(v.ok){let b=await v.json();e(b.agent)}else{let b=`Could not create the agent (HTTP ${v.status})`;try{let k=await v.json(),S=k.errors||k.error;S&&(b=Array.isArray(S)?S.join(", "):String(S))}catch{}y(b)}}catch(v){console.error("Failed to create agent from template:",v),y("Could not create the agent \u2014 check your connection and try again.")}finally{f(!1)}};return ct.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},ct.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},ct.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},ct.default.createElement("div",null,ct.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),ct.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),ct.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},ct.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),ct.default.createElement("div",{className:"flex-1 flex overflow-hidden"},ct.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},ct.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),ct.default.createElement("div",{className:"space-y-1"},ct.default.createElement("button",{onClick:()=>s(""),className:`w-full text-left px-3 py-2 rounded-lg text-sm transition-colors ${i?"text-gray-600 hover:bg-gray-50":"bg-red-50 text-red-600"}`},"All Templates"),o.map(g=>ct.default.createElement("button",{key:g,onClick:()=>s(g),className:`w-full text-left px-3 py-2 rounded-lg text-sm flex items-center space-x-2 transition-colors ${i===g?"bg-red-50 text-red-600":"text-gray-600 hover:bg-gray-50"}`},ct.default.createElement("span",null,oCe[g]||"\u{1F4E6}"),ct.default.createElement("span",{className:"capitalize"},g))))),ct.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?ct.default.createElement("div",{className:"flex items-center justify-center h-full"},ct.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?ct.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(g=>ct.default.createElement("div",{key:g.id,onClick:()=>u(g),className:`bg-white rounded-xl border-2 p-4 cursor-pointer transition-all hover:shadow-lg ${l?.id===g.id?"border-red-500 ring-2 ring-red-100":"border-gray-200 hover:border-gray-300"}`},ct.default.createElement("div",{className:"flex items-start space-x-3"},ct.default.createElement("div",{className:"flex-shrink-0"},ct.default.createElement(In,{size:60})),ct.default.createElement("div",{className:"flex-1 min-w-0"},ct.default.createElement("div",{className:"flex items-center space-x-2"},ct.default.createElement("span",{className:"text-lg"},g.icon),ct.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},g.name)),ct.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},g.description),ct.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},ct.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},g.category),g.featured&&ct.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):ct.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&ct.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},ct.default.createElement("div",{className:"flex justify-center mb-4"},ct.default.createElement(In,{size:120})),ct.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),ct.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),ct.default.createElement("div",{className:"mt-6 space-y-4"},ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),ct.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),ct.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(g=>ct.default.createElement("span",{key:g,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},g)))),ct.default.createElement("div",null,ct.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),ct.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),ct.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&&ct.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var mt=Z(Q());function QD({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={}}){let{darkMode:l}=ut(),[u,c]=(0,mt.useState)(!1),d=(0,mt.useRef)(null);(0,mt.useEffect)(()=>{function g(v){d.current&&!d.current.contains(v.target)&&c(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);let p=o?.name||"My Workspace",f=a?.name||a?.email?.split("@")[0]||"User",m={agentCount:r,pendingInputCount:n},y=g=>{let v=g.badge?m[g.badge]:void 0;return g.badgeTone==="attention"&&!v?void 0:v},x=cY(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??Fo.nav[v.icon],badge:y(v),badgeTone:v.badgeTone,badgeTitle:v.badgeTitle}))})),h=({item:g})=>mt.default.createElement("button",{onClick:()=>t(g.id),className:`w-full flex items-center justify-between py-3 rounded-lg text-left transition-colors ${g.indent?"pl-10 pr-4":"px-4"}`,style:{backgroundColor:e===g.id?l?"rgba(239, 68, 68, 0.15)":"#fef2f2":"transparent",color:e===g.id?"#ef4444":l?"#d1d5db":"#374151"},onMouseEnter:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor=l?"#252525":"#f3f4f6")},onMouseLeave:v=>{e!==g.id&&(v.currentTarget.style.backgroundColor="transparent")}},mt.default.createElement("div",{className:"flex items-center space-x-3"},mt.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},g.icon),mt.default.createElement("span",{className:"font-medium"},g.label)),g.badge!==void 0&&g.badgeTone==="attention"&&mt.default.createElement("span",{"data-testid":`nav-badge-${g.id}`,className:"px-2 py-0.5 text-xs rounded-full font-semibold",title:`${g.badge} ${g.badgeTitle||""}`.trim(),"aria-label":`${g.badge} ${g.badgeTitle||""}`.trim(),style:{backgroundColor:"var(--color-warning-soft)",color:"var(--color-warning-text)"}},g.badge),g.badge!==void 0&&g.badgeTone!=="attention"&&mt.default.createElement("span",{className:"px-2 py-0.5 text-xs rounded-full",style:{backgroundColor:e===g.id?"#fee2e2":l?"#2a2a2a":"#f3f4f6",color:e===g.id?"#ef4444":l?"#d1d5db":"#4b5563"}},g.badge));return mt.default.createElement("aside",{className:"w-64 border-r flex flex-col",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:l?"#2a2a2a":"#e5e7eb"},ref:d},mt.default.createElement("button",{onClick:()=>c(!u),className:"w-full flex items-center justify-between px-2 py-2 rounded-lg transition-colors",style:{backgroundColor:u?l?"#252525":"#f3f4f6":"transparent"}},mt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},mt.default.createElement(In,{size:28}),mt.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},p)),mt.default.createElement("svg",{className:`w-4 h-4 flex-shrink-0 transition-transform ${u?"rotate-180":""}`,style:{color:l?"#9ca3af":"#6b7280"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},mt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),u&&mt.default.createElement("div",{className:"absolute left-4 right-4 top-14 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:"flex items-center space-x-3"},mt.default.createElement(In,{size:32}),mt.default.createElement("div",{className:"min-w-0"},mt.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},p)))),mt.default.createElement("div",{className:"py-1"},mt.default.createElement("button",{onClick:()=>{t("settings"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},mt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},mt.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"}),mt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),mt.default.createElement("span",null,"Settings")),mt.default.createElement("button",{onClick:()=>{t("organization"),c(!1)},className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${l?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},mt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},mt.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"})),mt.default.createElement("span",null,"Organization"))),mt.default.createElement("div",{className:"border-t py-1",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${l?"text-gray-300":"text-gray-700"}`},mt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},mt.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"})),mt.default.createElement("span",{className:"text-sm"},f))))),mt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},x.map(g=>{let v=mt.default.createElement("div",{className:"space-y-1"},g.items.map(b=>mt.default.createElement(h,{key:b.id,item:b})));return g.label?mt.default.createElement("div",{key:g.id,className:"pt-4"},mt.default.createElement("div",{className:"px-4 pb-2"},mt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${l?"text-gray-500":"text-gray-400"}`},g.label)),v):mt.default.createElement(mt.default.Fragment,{key:g.id},v)})),mt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${l?"text-gray-500":"text-gray-400"}`},"Resources"),mt.default.createElement("div",{className:"space-y-2"},mt.default.createElement("a",{href:"https://docs.activeagents.ai",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},mt.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Fo.nav.docs),mt.default.createElement("span",null,"Documentation")),mt.default.createElement("a",{href:"https://github.com/activeagents/activeagent",target:"_blank",rel:"noopener noreferrer",className:`flex items-center space-x-2 text-sm transition-colors ${l?"text-gray-400 hover:text-red-400":"text-gray-600 hover:text-red-600"}`},mt.default.createElement("span",{style:{fontFamily:Pt.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Fo.nav.github),mt.default.createElement("span",null,"GitHub")))),mt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},mt.default.createElement("div",{className:`text-xs ${l?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:"")))}var xr=Z(Q());function RD({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=ut(),[o,a]=(0,xr.useState)(!1),i=(0,xr.useRef)(null);(0,xr.useEffect)(()=>{function d(p){i.current&&!i.current.contains(p.target)&&a(!1)}return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);let s=window.ACTIVE_AGENT_DASHBOARD?.meta?.signOutPath,l=()=>{if(!s)return;let d=document.querySelector('meta[name="csrf-token"]')?.content,p=document.createElement("form");p.method="POST",p.action=s;let f=document.createElement("input");f.type="hidden",f.name="_method",f.value="delete",p.appendChild(f);let m=document.createElement("input");m.type="hidden",m.name="authenticity_token",m.value=d,p.appendChild(m),document.body.appendChild(p),p.submit()},u=e?.name||e?.email?.split("@")[0]||"User",c=u.charAt(0).toUpperCase();return xr.default.createElement("header",{className:"h-16 border-b flex items-center justify-between px-6",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"flex items-center space-x-4"}),xr.default.createElement("div",{className:"flex items-center space-x-4"},xr.default.createElement("button",{onClick:n,className:"p-2 rounded-lg transition-colors",style:{backgroundColor:r?"#252525":"#f3f4f6",color:r?"#fbbf24":"#4b5563"},title:r?"Switch to light mode":"Switch to dark mode"},r?xr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},xr.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"})):xr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},xr.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),xr.default.createElement("div",{className:`flex items-center space-x-2 text-sm ${r?"text-gray-400":"text-gray-500"}`},xr.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),xr.default.createElement("span",null,"Connected")),xr.default.createElement("div",{className:"relative",ref:i},xr.default.createElement("button",{onClick:()=>a(!o),className:"flex items-center space-x-2 p-1 rounded-lg transition-colors",style:{backgroundColor:o?r?"#252525":"#f3f4f6":"transparent"}},xr.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},xr.default.createElement("span",{className:"text-red-600 font-medium text-sm"},c))),o&&xr.default.createElement("div",{className:"absolute right-0 mt-2 w-64 rounded-lg shadow-lg border overflow-hidden z-50",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},xr.default.createElement("div",{className:"flex items-center space-x-3"},xr.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},xr.default.createElement("span",{className:"text-red-600 font-medium"},c)),xr.default.createElement("div",null,xr.default.createElement("div",{className:`font-medium ${r?"text-white":"text-gray-900"}`},u),xr.default.createElement("div",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},e?.email)))),s&&xr.default.createElement("div",{className:"py-1"},xr.default.createElement("button",{onClick:l,className:`w-full flex items-center space-x-3 px-4 py-2 text-left text-sm transition-colors ${r?"text-gray-300 hover:bg-gray-800":"text-gray-700 hover:bg-gray-100"}`},xr.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},xr.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"})),xr.default.createElement("span",null,"Sign out")))))))}var Be=Z(Q());var kt=Z(Q());var e3=150,aCe=e=>e.reduce((t,r)=>t+(Number(r)||0),0),iCe=e=>e.length?aCe(e)/e.length:0,Ys=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),t3=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},vf=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),sCe=4,Ph=e=>Math.max(sCe,t3(e)),TQ=(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},lCe=5.5,uCe=12,cCe=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*lCe+uCe,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},xf=(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(" ")},X2=(e,t)=>{let r=xf(e,t);return r?`0,100 ${r} 100,100`:""},OQ=(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 iCe(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(" ")},Y0=(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 PQ({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return kt.default.createElement(ze,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},kt.default.createElement(We,{size:11,spacing:"0.05em"},e),kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},kt.default.createElement("span",{style:{fontFamily:W,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?kt.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-text-muted)"}},r):null),kt.default.createElement("div",{title:n,style:{fontFamily:W,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),kt.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},kt.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},kt.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),kt.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function MQ({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=e3}){let p=(0,kt.useRef)(null),f=I0(p),m="1px dashed var(--color-text-secondary)";return kt.default.createElement(ze,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},kt.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),kt.default.createElement("span",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)"}},t),kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),kt.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>kt.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:W,fontSize:10,color:"var(--color-text-secondary)"}},kt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),kt.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>kt.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},kt.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:W,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&kt.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,x)=>kt.default.createElement("div",{key:x,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>kt.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&kt.default.createElement("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none","aria-hidden":"true",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"}},l.map((y,x)=>kt.default.createElement("polygon",{key:x,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,x)=>kt.default.createElement("polyline",{key:x,points:y.points,fill:"none",stroke:y.color,strokeWidth:y.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((y,x)=>{let h=cCe(y,f),g=`${Number(y.left).toFixed(2)}%`;return kt.default.createElement("div",{key:x,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:g,borderRight:m}:{left:g,right:0,borderLeft:m}}},kt.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:W,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),kt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:W,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,x)=>kt.default.createElement("span",{key:x},y))))}function Mh({label:e,qualifier:t,meta:r,children:n}){return kt.default.createElement(ze,{padding:0,style:{overflow:"hidden"}},kt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},kt.default.createElement(We,null,e),t?kt.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?kt.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function r3({template:e,columns:t}){return kt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:W,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},kt.default.createElement("span",null),t.map(r=>kt.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function Z2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return kt.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 n3({children:e,padding:t="8px 14px"}){return kt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function X0({children:e}){return kt.default.createElement("div",{style:{padding:"12px 14px",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},e)}function o3({color:e}){return kt.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function a3({pct:e,color:t}){return kt.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},kt.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function i3({pct:e,color:t,width:r=70}){return kt.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},kt.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function ys({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return kt.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var $Q=6e4,dCe=1180,Dh={"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"}},pCe=Object.keys(Dh).map(e=>({value:e,label:e})),l3="24h",Ih=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],Z0=[{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)"}],IQ=e=>Z0.find(t=>t.type===e)?.color||"var(--color-text-muted)",fCe=3,Q2="var(--color-text-primary)",mCe={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},gCe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],s3=e=>String(e).padStart(2,"0"),Wt=e=>e==null||Number.isNaN(Number(e))?0:Number(e),hCe=e=>e.reduce((t,r)=>t+Wt(r),0),DQ=e=>`${Wt(e).toFixed(1)}%`,J2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,yCe=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,vCe=(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},xCe=e=>{let t=String(e.label||"incident"),r=Z0.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},bCe=e=>{let t=Wt(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},jQ=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},wCe=(e,t,r=Date.now())=>{let n=Math.max(1,Wt(t))*1e3,o=Math.max(1,Math.round(Wt(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()}))},SCe=(e,t)=>{let r=e.summary||{},n=Dh[e.range]||Dh[t]||Dh[l3],o=Wt(e.bucket_seconds)||n.seconds,a=Wt(e.window_minutes)||(e.window_hours?Wt(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:wCe(a,o),s=Wt(e.totals?.requests??r.total_requests),l=Wt(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:Wt(r.errors),error_rate:Wt(r.error_rate),tokens_in:Wt(r.tokens_input),tokens_out:Wt(r.tokens_output),tokens:Wt(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:Wt(f.requests),share_pct:s?Wt(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?Wt(f.errors)/Wt(f.requests)*100:0,cost:Wt(f.cost),tokens:Wt(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:Z0.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:[]}},LQ=e=>{let t=Dh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:bCe(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},kCe=e=>{let[t,r]=(0,Be.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 u3(){let[e,t]=(0,Be.useState)(l3),[r,n]=(0,Be.useState)(""),[o,a]=(0,Be.useState)(null),[i,s]=(0,Be.useState)(!0),[l,u]=(0,Be.useState)(null),[c,d]=(0,Be.useState)(!1),p=(0,Be.useRef)(0),f=kCe(dCe),m=(0,Be.useRef)(null),y=(0,Be.useCallback)(async()=>{let k=++p.current;try{let S=new URLSearchParams({range:e});r&&S.set("agent",r);let[w,_]=await Promise.all([jQ(S),r?jQ(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,Be.useEffect)(()=>{let k=!1;d(!0),y().finally(()=>{k||d(!1)});let S=setInterval(y,$Q);return()=>{k=!0,clearInterval(S)}},[y]);let x=(0,Be.useMemo)(()=>o?SCe(o.data,e):null,[o,e]),h=(0,Be.useMemo)(()=>x?x.agent?vCe(o.ranking,x.agents):x.agents:[],[x,o]),g=(0,Be.useMemo)(()=>h.map(k=>k.name).filter(Boolean),[h]),v=(0,Be.useMemo)(()=>{let k=Object.fromEntries(g.map((w,_)=>[w,Ih[_%Ih.length]])),S=g.length;return(x?x.agents:[]).forEach(w=>{w.name&&!k[w.name]&&(k[w.name]=Ih[S++%Ih.length])}),w=>k[w]||Ih[0]},[g,x]),b=(0,Be.useMemo)(()=>x?CCe(x,v):null,[x,v]);return i?Be.default.createElement("div",{className:"flex items-center justify-center h-64"},Be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!x?Be.default.createElement("div",null,Be.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:Q2}},"Metrics"),Be.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}`:"")):Be.default.createElement(_Ce,{m:x,view:b,railAgents:h,range:Dh[e]?e:l3,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:f,pending:c,onRange:t,onAgent:n})}function _Ce({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=LQ(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return Be.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:Q2,fontSize:13}},Be.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},Be.default.createElement("div",{style:{flex:1,minWidth:240}},Be.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),Be.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}`:"")),Be.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},Be.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:Q2,cursor:"pointer"}},Be.default.createElement("option",{value:""},"All agents"),a.map(m=>Be.default.createElement("option",{key:m,value:m},m))),e.environment&&Be.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:W,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},Be.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),Be.default.createElement(ps,{options:pCe,value:n,onChange:u}),Be.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${$Q/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},Be.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?Be.default.createElement(ze,{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",Be.default.createElement("div",{style:{marginTop:8,fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):Be.default.createElement(Be.default.Fragment,null,Be.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>Be.default.createElement(PQ,{key:m.label,...m,deltaSub:d.prev}))),Be.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}},Be.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>Be.default.createElement(MQ,{key:m.title,...m,xLabels:t.xLabels,height:e3}))),Be.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},Be.default.createElement(Mh,{label:"Agents",qualifier:"by requests \xB7 click to filter"},Be.default.createElement(r3,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&Be.default.createElement(X0,null,"no agents in this window"),r.map(m=>Be.default.createElement(Z2,{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}`},Be.default.createElement("div",{style:{minWidth:0}},Be.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},Be.default.createElement(o3,{color:i(m.name)}),Be.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),Be.default.createElement(a3,{pct:m.share_pct,color:i(m.name)})),Be.default.createElement(ys,null,On(m.requests)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},zn(m.p95_ms)),Be.default.createElement(ys,{color:Wt(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},DQ(m.error_rate)),Be.default.createElement(ys,null,y0(m.cost))))),Be.default.createElement(Mh,{label:"Models",qualifier:"by tokens"},e.models.length===0&&Be.default.createElement(X0,null,"no model usage in this window"),e.models.map((m,y)=>Be.default.createElement(Z2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},Be.default.createElement("div",{style:{minWidth:0}},Be.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},Be.default.createElement("span",{style:{fontFamily:W,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&Be.default.createElement("span",{style:{fontFamily:W,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),Be.default.createElement(a3,{pct:m.share_pct,color:"var(--color-token-in)"})),Be.default.createElement(ys,null,On(m.tokens)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},y0(m.cost))))),Be.default.createElement(Mh,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&Be.default.createElement(X0,null,"no actions in this window"),e.actions.map(m=>Be.default.createElement(n3,{key:m.name},Be.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:W,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Be.default.createElement(i3,{pct:t.slowestP95?Wt(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),Be.default.createElement(ys,{weight:600,width:40},zn(m.p95_ms))))),Be.default.createElement(Mh,{label:"Tools",qualifier:"by calls"},Be.default.createElement(r3,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&Be.default.createElement(X0,null,"no tool calls in this window"),e.tools.map(m=>Be.default.createElement(Z2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},Be.default.createElement("span",{title:m.name,style:{fontFamily:W,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),Be.default.createElement(ys,null,On(m.calls)),Be.default.createElement(ys,{color:"var(--color-text-secondary)"},zn(m.avg_ms)),Be.default.createElement(ys,{color:Wt(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},DQ(m.error_rate))))),Be.default.createElement(Mh,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>Be.default.createElement(n3,{key:m.type},Be.default.createElement(o3,{color:IQ(m.type)}),Be.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),Be.default.createElement(i3,{pct:t.errorTotal?Wt(m.count)/t.errorTotal*100:0,color:IQ(m.type)}),Be.default.createElement(ys,{weight:600,width:32},Math.round(Wt(m.count))))))))))}function CCe(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=LQ(e),s=r.map(B=>new Date(B.ts)),l=e.windowMinutes>=2880,u=B=>Number.isNaN(B.getTime())?"":l?`${gCe[B.getDay()]} ${s3(B.getHours())}h`:`${s3(B.getHours())}:${s3(B.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(B=>B===6?"now":u(s[Math.round(B*(a-1)/6)])):[],d=B=>r.map(oe=>Wt(oe[B])),p=d("requests"),f=d("errors"),m=d("tokens_in"),y=d("tokens_out"),x=d("cost"),h=d("tool_calls"),g=d("tool_errors"),v=B=>r.map(oe=>oe[B]==null?null:Wt(oe[B])),b=v("p50_ms"),k=v("p95_ms"),S=v("p99_ms"),w=r.map(B=>B.requests_by_agent||{}),_=e.agents.map(B=>B.name).filter(Boolean);w.forEach(B=>Object.keys(B).forEach(oe=>{_.includes(oe)||_.push(oe)}));let A=_.length?_.map(B=>({label:B,color:t(B),data:w.map(oe=>Wt(oe[B]))})):[{label:"requests",color:Ih[0],data:p}],C=Z0.map(B=>({label:B.type,color:B.color,data:r.map(oe=>Wt((oe.errors_by_type||{})[B.type]))})),E=(Wt(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,I=(B,oe)=>{if(!B||a<2||!E)return null;let ne=new Date(B.ts).getTime();if(Number.isNaN(ne))return null;let tt=Math.min(a-1,Math.max(0,Math.floor((ne-s[0].getTime())/E)))/(a-1);return{left:tt*100,label:oe,flip:tt>.55}},J=e.markers.filter(B=>B.kind==="deploy").sort((B,oe)=>new Date(B.ts)-new Date(oe.ts)).slice(-fCe).map(B=>I(B,B.label)).filter(Boolean),$=e.markers.find(B=>B.kind==="incident"),U=$?I($,xCe($)):null,N=U?[U]:[],T=Ph(Ys(p)*1.1),D=Ph(Ys(f)*1.15),O=Ph(Math.max(Ys(S),Ys(k),Ys(b))*1.05),j=Ph(Math.max(Ys(m),Ys(y))*1.1),M=t3(Ys(x)*1.1),H=TQ(M),G=Ph(Ys(h)*1.1),z=Wt(n.requests),V=Wt(n.requests_per_minute),K=Wt(n.errors),ie=Wt(n.error_rate),Ie=Wt(n.tokens)||Wt(n.tokens_in)+Wt(n.tokens_out),ge=Wt(n.cost),de=n.cost_per_request!=null?Wt(n.cost_per_request):z?ge/z:0,R=Wt(n.tool_calls),ee=n.tool_error_rate!=null?Wt(n.tool_error_rate):R?Wt(n.tool_errors)/R*100:0,L=Wt(e.errorsByType.find(B=>B.type===Z0[0].type)?.count),te=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${On(z)} \xB7 ${V.toFixed(1)}/min`,legend:A.map(B=>({label:B.label,color:B.color})),ticks:vf(T,On),buckets:Y0(A,T,B=>`${u(s[B])} \xB7 ${Math.round(p[B])} req`),markers:J},{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:vf(O,yCe),lines:[{points:xf(S,O),color:"var(--color-error)",width:1.5},{points:xf(k,O),color:"var(--color-warning)",width:1.5},{points:xf(b,O),color:"var(--color-token-in)",width:2}],areas:[{points:X2(b,O),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${ie.toFixed(2)}% \xB7 ${J2(Math.round(K),"error")}`,valueColor:ie>1?"var(--color-error)":Q2,legend:C.map(B=>({label:B.label,color:B.color})),ticks:vf(D,B=>String(Math.round(B))),buckets:Y0(C,D,B=>`${u(s[B])} \xB7 ${J2(Math.round(f[B]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${On(Ie)} \xB7 in ${On(n.tokens_in)} / out ${On(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:vf(j,On),lines:[{points:xf(m,j),color:"var(--color-token-in)",width:1.5},{points:xf(y,j),color:"var(--color-token-out)",width:1.5}],areas:[{points:X2(m,j),color:"var(--color-token-in)"},{points:X2(y,j),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${y0(ge)} \xB7 ${v0(de)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:vf(M,B=>v0(B,H)),buckets:Y0([{color:"var(--color-text-secondary)",data:x}],M,B=>`${u(s[B])} \xB7 ${v0(x[B],H)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${On(R)} \xB7 ${ee.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:vf(G,On),buckets:Y0([{color:"var(--span-tool)",data:h.map((B,oe)=>Math.max(0,B-g[oe]))},{color:"var(--color-error)",data:g}],G,B=>`${u(s[B])} \xB7 ${J2(Math.round(h[B]),"call")}`)}],F=(B,oe,ne)=>{let he=B==null?null:Wt(B);return he==null||he===0?"muted":oe&&oe(he)?"success":ne&&ne(he)?"error":"muted"},P=(B,oe,ne,he,tt,it,ve,ce)=>({label:B,value:oe,unit:ne,sub:he,delta:tt,deltaColor:mCe[it],spark:OQ(ve),sparkColor:ce});return{signals:[P("Requests",On(z),"",`${V.toFixed(1)} req/min`,fh(o.requests_pct),F(o.requests_pct,B=>B>0,null),p,"var(--color-token-in)"),P("Latency",zn(n.p50_ms),"p50",`p95 ${zn(n.p95_ms)} \xB7 p99 ${zn(n.p99_ms)}`,fh(o.p50_pct),F(o.p50_pct,B=>B<0,B=>B>0),b,"var(--color-token-in)"),P("Error rate",ie.toFixed(2),"%",`${J2(Math.round(K),"error")} \xB7 ${Math.round(L)} rate-limited`,fh(o.error_rate_pt," pt",1),F(o.error_rate_pt,B=>B<0,B=>B>0),f,"var(--color-error)"),P("Tokens",On(Ie),"",`in ${On(n.tokens_in)} \xB7 out ${On(n.tokens_out)}`,fh(o.tokens_pct),"muted",m.map((B,oe)=>B+y[oe]),"var(--color-token-in)"),P("Cost",y0(ge),"",`${v0(de)} per request`,fh(o.cost_pct),"muted",x,"var(--color-text-secondary)")],panels:te,xLabels:c,slowestP95:Ys(e.actions.map(B=>B.p95_ms)),errorTotal:hCe(e.errorsByType.map(B=>B.count))}}var Fe=Z(Q());var ACe=6e4,ECe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],zQ={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)"}},J0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),BQ=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,NCe=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 c3({onOpenServer:e}){let{darkMode:t}=ut(),[r,n]=(0,Fe.useState)(null),[o,a]=(0,Fe.useState)(!0),[i,s]=(0,Fe.useState)(null),[l,u]=(0,Fe.useState)("all"),[c,d]=(0,Fe.useState)(""),[p,f]=(0,Fe.useState)(168),[m,y]=(0,Fe.useState)(null),x=(0,Fe.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,Fe.useEffect)(()=>{let A=setTimeout(x,c?250:0);return()=>clearTimeout(A)},[x,c]),(0,Fe.useEffect)(()=>{let A=setInterval(x,ACe);return()=>clearInterval(A)},[x]);let h={bg:t?"transparent":"#f9fafb",cardBg:t?"rgba(255,255,255,0.05)":"#ffffff",border:t?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:t?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af",textCell:t?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:t?"rgba(239,68,68,0.2)":"#fef2f2",inputBg:t?"rgba(255,255,255,0.06)":"#ffffff"},g=A=>{let C=zQ[A]||zQ.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return Fe.default.createElement("div",{className:"flex items-center justify-center h-64"},Fe.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return Fe.default.createElement("div",{style:{padding:"24px"}},Fe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Fe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:h.errorBg,borderRadius:"8px",color:h.error,fontSize:"14px"}},"Failed to load tools: ",i));let{tools:v=[],summary:b={},origins:k={},sources:S={}}=r||{},w=!S.telemetry&&!S.generations&&!S.messages&&!S.declared,_=({label:A,value:C,hint:E,tone:I})=>Fe.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},Fe.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},A),Fe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:I||h.textPrimary}},C),E&&Fe.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},E));return Fe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},Fe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},Fe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},Fe.default.createElement("div",null,Fe.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Fe.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")),Fe.default.createElement("div",{style:{display:"flex",gap:"4px"}},ECe.map(A=>Fe.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))))),Fe.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},Fe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},Fe.default.createElement(_,{label:"Tools Detected",value:J0(b.total_tools),hint:`${b.active_tools||0} called in this window`}),Fe.default.createElement(_,{label:"Tool Calls",value:J0(b.total_calls),hint:`${BQ(b.avg_duration_ms)} average`}),Fe.default.createElement(_,{label:"Error Rate",value:`${b.error_rate||0}%`,tone:b.error_rate>5?h.error:h.textPrimary,hint:`${b.total_errors||0} failed call${b.total_errors===1?"":"s"}`}),Fe.default.createElement(_,{label:"From MCP",value:J0(b.mcp_tools),hint:`across ${b.mcp_servers_active||0} active server${b.mcp_servers_active===1?"":"s"}`}),Fe.default.createElement(_,{label:"Never Called",value:J0(b.unused_tools),hint:"offered or configured, unused"})),Fe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(k).map(([A,C])=>Fe.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)),Fe.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}})),Fe.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},v.length===0?Fe.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"):Fe.default.createElement("div",{style:{overflowX:"auto"}},Fe.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},Fe.default.createElement("thead",null,Fe.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),Fe.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),Fe.default.createElement("tbody",null,v.map((A,C)=>{let E=g(A.origin),I=m===A.name;return Fe.default.createElement(Fe.default.Fragment,{key:A.name},Fe.default.createElement("tr",{onClick:()=>y(I?null:A.name),style:{borderBottom:C{J.stopPropagation(),A.mcp_server&&e&&e(A.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:E.bg,color:E.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)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},J0(A.calls)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:A.errors>0?h.error:h.textCell}},A.errors),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},BQ(A.avg_duration_ms)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},NCe(A.last_seen))),I&&Fe.default.createElement("tr",{style:{borderBottom:CFe.default.createElement("span",{key:A,style:{color:S[A]?h.textSecondary:h.textMuted,opacity:S[A]?1:.5}},S[A]?"\u25CF":"\u25CB"," ",C)))))}function TCe({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>Fe.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},Fe.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),Fe.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return Fe.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}`}},Fe.default.createElement(o,{label:"Full name"},Fe.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&Fe.default.createElement(o,{label:"Description"},e.description),Fe.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?Fe.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):Fe.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),Fe.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):Fe.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&Fe.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),Fe.default.createElement(o,{label:"Call breakdown"},Fe.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&Fe.default.createElement(o,{label:"Last arguments"},Fe.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&Fe.default.createElement(o,{label:"Last error"},Fe.default.createElement("span",{style:{color:t.error}},e.last_error)),Fe.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var qe=Z(Q());var OCe=6e4,PCe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],MCe=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],ICe=["http","streamable_http","sse"],FQ={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)"}},Q0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function d3({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),[y,x]=(0,qe.useState)(null),[h,g]=(0,qe.useState)(null),v=(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)(()=>{v();let $=setInterval(v,OCe);return()=>clearInterval($)},[v]),(0,qe.useEffect)(()=>{e&&m(e)},[e]);let b={bg:r?"transparent":"#f9fafb",cardBg:r?"rgba(255,255,255,0.05)":"#ffffff",border:r?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:r?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:r?"#ffffff":"#111827",textSecondary:r?"rgba(255,255,255,0.6)":"#6b7280",textMuted:r?"rgba(255,255,255,0.4)":"#9ca3af",textCell:r?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:r?"rgba(239,68,68,0.2)":"#fef2f2",codeBg:r?"rgba(0,0,0,0.35)":"#f9fafb"},k=$=>{let U=FQ[$]||FQ.available;return{fg:r?U.dark:U.light,bg:r?U.bgDark:U.bgLight}},S=async $=>{x($.key),g(null);try{let U=await fetch(`/api/mcp_servers/${encodeURIComponent($.key)}/launch`,{method:"POST",headers:{"Content-Type":"application/json"}}),N=await U.json();if(!U.ok)throw new Error(N.reason||N.error||`Launch failed (${U.status})`);g({kind:"ok",text:`${$.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),v()}catch(U){g({kind:"error",text:U.message})}finally{x(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:b.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:b.errorBg,borderRadius:"8px",color:b.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:w=[],summary:_={},sandboxes:A=[],statuses:C={}}=n||{},E=u==="all"?w:w.filter($=>$.status===u),I=new Set(A.flatMap($=>$.mcp_servers||[])),J=({label:$,value:U,hint:N})=>qe.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${b.border}`}},qe.default.createElement("div",{style:{fontSize:"11px",color:b.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},$),qe.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:b.textPrimary}},U),N&&qe.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"8px"}},N));return qe.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:b.bg}},qe.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${b.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:b.textPrimary,margin:0}},"MCP Services"),qe.default.createElement("p",{style:{fontSize:"14px",color:b.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),qe.default.createElement("div",{style:{display:"flex",gap:"4px"}},PCe.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":b.border}`,background:d===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===$.value?"#ef4444":b.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(J,{label:"Active",value:Q0(_.active),hint:"called in this window"}),qe.default.createElement(J,{label:"Configured",value:Q0(_.configured),hint:"declared, no traffic yet"}),qe.default.createElement(J,{label:"Available",value:Q0(_.available),hint:"defaults you can connect"}),qe.default.createElement(J,{label:"Tool Calls",value:Q0(_.total_calls),hint:"through MCP servers"})),h&&qe.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?b.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?b.error:r?"#86efac":"#15803d"}},h.text),qe.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},MCe.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":b.border}`,background:u===$.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===$.value?"#ef4444":b.textSecondary}},$.label))),qe.default.createElement("div",{style:{display:"grid",gap:"12px"}},E.length===0?qe.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,textAlign:"center",padding:"48px 24px",color:b.textSecondary,fontSize:"14px"}},"No MCP services in this state"):E.map($=>{let U=k($.status),N=f===$.key,T=I.has($.key);return qe.default.createElement("div",{key:$.key,style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${N?U.fg:b.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:b.textPrimary}},$.name),qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:U.bg,color:U.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"),Xd($)&&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"),nv($)&&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"),tw($)&&qe.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:b.borderLight,color:b.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),T&&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:b.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:b.textPrimary}},Q0($.calls)),qe.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"calls")),qe.default.createElement("div",{style:{textAlign:"right"}},qe.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:$.errors>0?b.error:b.textPrimary}},$.errors||0),qe.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"errors")),$.launchable&&qe.default.createElement("button",{onClick:D=>{D.stopPropagation(),S($)},disabled:y===$.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:y===$.key?b.borderLight:"#ef4444",color:y===$.key?b.textMuted:"#ffffff",cursor:y===$.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${$.name} in a sandbox session`},y===$.key?"Starting\u2026":T?"Start another":"Start in sandbox"))),N&&qe.default.createElement(DCe,{server:$,colors:b,tone:U,onOpenTools:t}))})),A.length>0&&qe.default.createElement("div",{style:{marginTop:"24px",background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,padding:"20px"}},qe.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:b.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:b.textCell,flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontFamily:"monospace"}},($.mcp_servers||[]).join(", ")||$.sandbox_type),qe.default.createElement("span",{style:{color:b.textMuted}},$.status," \xB7 ",$.runs_count,"/",$.max_runs," runs \xB7 expires ",new Date($.expires_at).toLocaleTimeString())))))))}function DCe({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:ICe.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 re=Z(Q());var hd=Z(Q());var eA={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},Bn={log(...e){this.enabled&&(e.push(Date.now()),eA.logger.log("[ActionCable]",...e))}},eb=()=>new Date().getTime(),R2=e=>(eb()-e)/1e3,tb=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),Bn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=eb(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),Bn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=eb()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,Bn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=eb(),Bn.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()&&(Bn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${R2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?Bn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${R2(this.disconnectedAt)} s`):(Bn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return R2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&R2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(Bn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};tb.staleThreshold=6;tb.reconnectionBackoffRate=.15;var WQ={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:R0,protocols:p3}=WQ,jCe=p3.slice(0,p3.length-1),UQ=[].indexOf,rb=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new tb(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return Bn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...p3,...this.consumer.subprotocols||[]];return Bn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new eA.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(Bn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){Bn.log("Failed to reopen WebSocket",t)}finally{Bn.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 UQ.call(jCe,this.getProtocol())>=0}isState(...t){return UQ.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in eA.WebSocket)if(eA.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(){}}};rb.reopenDelay=500;rb.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 R0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case R0.disconnect:return Bn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case R0.ping:return null;case R0.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 R0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(Bn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return Bn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(Bn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){Bn.log("WebSocket onerror event")}};var $Ce=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},f3=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),$Ce(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)}},m3=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(Bn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):Bn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){Bn.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=>{Bn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},g3=class{constructor(t){this.consumer=t,this.guarantor=new m3(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new f3(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){Bn.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})}},h3=class{constructor(t){this._url=t,this.subscriptions=new g3(this),this.connection=new rb(this),this.subprotocols=[]}get url(){return LCe(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 LCe(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 HQ(e=zCe("url")||WQ.default_mount_path){return new h3(e)}function zCe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var tA=null;function BCe(){if(tA===null)try{tA=HQ()}catch{tA=!1}return tA||null}function jh(e,t,r,n=!0){let o=(0,hd.useRef)(null),a=(0,hd.useRef)(r);return(0,hd.useEffect)(()=>{a.current=r},[r]),(0,hd.useEffect)(()=>{if(!n||!e)return;let s=BCe();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,hd.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function $h(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var rA=[{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"}],FCe={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"}]},qQ={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function y3({initialType:e="playwright_mcp",onClose:t,showAgents:r=!1}){let[n,o]=(0,re.useState)(e),[a,i]=(0,re.useState)(null),[s,l]=(0,re.useState)(""),[u,c]=(0,re.useState)([]),[d,p]=(0,re.useState)(null),[f,m]=(0,re.useState)(!1),[y,x]=(0,re.useState)(!1),[h,g]=(0,re.useState)(null),[v,b]=(0,re.useState)(null),[k,S]=(0,re.useState)(!1),[w,_]=(0,re.useState)(null),[A,C]=(0,re.useState)(!1),E=(0,re.useRef)(null),[I,J]=(0,re.useState)(["anthropic"]),[$,U]=(0,re.useState)(!1),[N,T]=(0,re.useState)({}),[D,O]=(0,re.useState)([]),j=(0,re.useCallback)(async P=>{try{let Y=await fetch(`/api/sandboxes/${P}`);if(!Y.ok)return;let B=await Y.json();i(B.sandbox),c(B.sandbox.runs||[])}catch(Y){console.error("Could not refresh the sandbox session:",Y)}},[]),M=(0,re.useCallback)(P=>{!$h(P)||!a?.session_id||j(a.session_id)},[j,a?.session_id]);jh("SandboxChannel",{session_id:a?.session_id},M,!!a?.session_id),(0,re.useEffect)(()=>{G(),H()},[n]);let H=async()=>{try{let P=await fetch("/api/usage");if(P.ok){let Y=await P.json();_(Y.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,re.useEffect)(()=>{if(!a?.expires_at)return;let P=setInterval(()=>{let Y=new Date,B=new Date(a.expires_at),oe=Math.max(0,Math.floor((B-Y)/1e3));b(oe),oe===0&&(i(ne=>({...ne,status:"expired"})),clearInterval(P))},1e3);return()=>clearInterval(P)},[a?.expires_at]),(0,re.useEffect)(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[d?.result]);let G=async()=>{x(!0),g(null);try{let P=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:n})});if(!P.ok)throw new Error("Failed to create sandbox session");let Y=await P.json();i(Y.sandbox),c([]),p(null)}catch(P){g(P.message)}finally{x(!1)}},z=async()=>{!s.trim()||f||!a||($&&I.length>1?await K():await V(I[0]||"anthropic"))},V=async P=>{m(!0),p({status:"running",task:s,provider:P,result:"",started_at:new Date().toISOString()});try{let Y=await fetch(`/api/sandboxes/${a.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,provider:P})}),B=await Y.json();if(Y.status===402&&B.upgrade_required){_(B.usage),S(!0),p(oe=>({...oe,status:"failed",error:B.message||"Plan limit reached"})),m(!1);return}if(!Y.ok)throw new Error(B.error||"Task execution failed");B.usage&&_(B.usage),de(B.run_id)}catch(Y){p(B=>({...B,status:"failed",error:Y.message})),m(!1)}},K=async()=>{m(!0),O([...I]),T({});let P={};I.forEach(Y=>{P[Y]={status:"running",result:"",started_at:new Date().toISOString()}}),T(P);try{let Y=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:s,providers:I,sandbox_id:a?.session_id,sandbox_type:n})});if(!Y.ok){let oe=await Y.json();throw new Error(oe.error||"Comparison failed")}let B=await Y.json();B.sandbox&&i(B.sandbox),ie(I,B.sandbox?.session_id||a?.session_id,B.sandbox?.runs_count??a?.runs_count??0)}catch(Y){I.forEach(B=>{T(oe=>({...oe,[B]:{status:"failed",error:Y.message}}))}),m(!1),O([])}},ie=(P,Y,B)=>{if(!Y)return;let oe=async()=>{try{let ne=await fetch(`/api/sandboxes/${Y}`);if(!ne.ok)throw new Error(`HTTP ${ne.status}`);let he=await ne.json();i(he.sandbox);let tt=he.sandbox.runs||[];c(tt);let it=new Set;if(tt.slice(B).forEach(ve=>{ve.provider&&(T(ce=>({...ce,[ve.provider]:{...ve,provider:ve.provider}})),(ve.status==="completed"||ve.status==="failed")&&it.add(ve.provider))}),P.every(ve=>it.has(ve))){m(!1),O([]);return}setTimeout(oe,1e3)}catch(ne){console.error("Comparison polling failed:",ne),m(!1),O([])}};setTimeout(oe,1e3)},Ie=async()=>{if(a?.session_id)try{let Y=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(Y.sandbox),c(Y.sandbox.runs||[]),(Y.sandbox.runs||[]).forEach(ne=>{ne.provider&&T(he=>({...he,[ne.provider]:{...ne,provider:ne.provider}}))}),I.every(ne=>{let he=N[ne];return he?.status==="completed"||he?.status==="failed"})&&(m(!1),O([]))}catch(P){console.error("Polling error:",P)}},ge=P=>{J(Y=>Y.includes(P)?Y.length===1?Y:Y.filter(B=>B!==P):[...Y,P])},de=async P=>{let Y=async()=>{try{let oe=await(await fetch(`/api/sandboxes/${a.session_id}`)).json();i(oe.sandbox);let ne=oe.sandbox.runs||[],he=ne[ne.length-1];if(he&&(p(he),c(ne),he.status==="completed"||he.status==="failed")){m(!1);return}setTimeout(Y,1e3)}catch{m(!1)}};Y()},R=P=>{P.key==="Enter"&&(P.metaKey||P.ctrlKey)&&z()},ee=P=>{if(!P)return"--:--";let Y=Math.floor(P/60),B=P%60;return`${Y}:${B.toString().padStart(2,"0")}`},L=P=>{switch(P){case"completed":return"text-green-600 bg-green-100";case"failed":return"text-red-600 bg-red-100";case"running":return"text-blue-600 bg-blue-100";case"ready":return"text-emerald-600 bg-emerald-100";case"expired":return"text-orange-600 bg-orange-100";default:return"text-gray-600 bg-gray-100"}},te=a?.status==="ready"&&a?.runs_count{C(!0);try{await Oh({planSlug:"pro",billingInterval:P})}catch(Y){console.error("Checkout error:",Y),g(Y.message||"Failed to initiate checkout. Please try again."),C(!1)}};return re.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},r&&re.default.createElement("div",{className:"pb-6"},re.default.createElement(r0,{inline:!0})),re.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},re.default.createElement("div",{className:"flex items-center justify-between"},re.default.createElement("div",{className:"flex items-center space-x-4"},re.default.createElement(In,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),re.default.createElement("div",null,re.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),re.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),re.default.createElement("div",{className:"flex items-center space-x-4"},a&&re.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},re.default.createElement("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${L(a.status)}`},a.status),re.default.createElement("span",{className:"text-gray-500"},a.runs_count,"/",a.max_runs," runs"),re.default.createElement("span",{className:`font-mono ${v<60?"text-red-500":"text-gray-500"}`},ee(v))),t&&re.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},re.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),re.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},re.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},re.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("textarea",{value:s,onChange:P=>l(P.target.value),onKeyDown:R,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!te,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"}),re.default.createElement("div",{className:"flex items-center justify-between mt-3"},re.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",re.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",re.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),re.default.createElement("button",{onClick:z,disabled:!s.trim()||!te,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${s.trim()&&te?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},f?re.default.createElement(re.default.Fragment,null,re.default.createElement("span",{className:"animate-spin"},"\u25E0"),re.default.createElement("span",null,"Running...")):re.default.createElement(re.default.Fragment,null,re.default.createElement("span",null,"\u25B6"),re.default.createElement("span",null,"Run"))))),re.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},re.default.createElement("h3",{className:"font-medium text-gray-900"},$&&Object.keys(N).length>0?"Comparison Results":"Output"),d&&!$&&re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${L(d.status)}`},d.status),$&&D.length>0&&re.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",D.length," provider(s)...")),re.default.createElement("div",{ref:E,className:"flex-1 overflow-auto bg-gray-50"},y?re.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},re.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):h?re.default.createElement("div",{className:"text-red-600 p-4"},h):$&&Object.keys(N).length>0?re.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},I.map(P=>{let Y=rA.find(oe=>oe.id===P),B=N[P];return re.default.createElement("div",{key:P,className:"p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-2"},re.default.createElement("div",{className:"flex items-center space-x-2"},re.default.createElement("div",{className:`w-3 h-3 rounded-full ${Y?.color||"bg-gray-400"}`}),re.default.createElement("span",{className:"font-medium text-gray-900"},Y?.name||P),re.default.createElement("span",{className:"text-xs text-gray-500"},Y?.model)),B&&re.default.createElement("div",{className:"flex items-center space-x-2"},re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${L(B.status)}`},B.status),B.tokens&&re.default.createElement("span",{className:"text-xs text-gray-500"},B.tokens," tokens"),B.duration_ms&&re.default.createElement("span",{className:"text-xs text-gray-500"},(B.duration_ms/1e3).toFixed(1),"s"))),re.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},B?.status==="running"?re.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},re.default.createElement("span",{className:"animate-pulse"},"\u25CF"),re.default.createElement("span",null,"Processing...")):B?.error?re.default.createElement("div",{className:"text-red-600"},B.error):B?.result?re.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},B.result):re.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):d?re.default.createElement("div",{className:"p-4 font-mono text-sm"},d.provider&&re.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},re.default.createElement("div",{className:`w-2 h-2 rounded-full ${rA.find(P=>P.id===d.provider)?.color||"bg-gray-400"}`}),re.default.createElement("span",{className:"text-sm text-gray-600"},rA.find(P=>P.id===d.provider)?.name||d.provider)),d.status==="running"?re.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},re.default.createElement("span",{className:"animate-pulse"},"\u25CF"),re.default.createElement("span",null,"Executing task...")):d.error?re.default.createElement("div",{className:"text-red-600"},re.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),re.default.createElement("pre",{className:"whitespace-pre-wrap"},d.error)):re.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},d.result||"Processing...")):re.default.createElement("div",{className:"text-gray-400 text-center py-12"},re.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),re.default.createElement("p",{className:"text-xs"},$?`Compare results across ${I.length} providers`:"Task will execute using the selected provider"))))),re.default.createElement("div",{className:"space-y-4 overflow-auto"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-3"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),re.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},re.default.createElement("input",{type:"checkbox",checked:$,onChange:P=>U(P.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),re.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),re.default.createElement("div",{className:"space-y-2"},rA.map(P=>re.default.createElement("label",{key:P.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${I.includes(P.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},re.default.createElement("div",{className:"flex items-center space-x-3"},re.default.createElement("input",{type:"checkbox",checked:I.includes(P.id),onChange:()=>ge(P.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),re.default.createElement("div",{className:`w-2 h-2 rounded-full ${P.color}`}),re.default.createElement("span",{className:"text-sm font-medium text-gray-900"},P.name)),re.default.createElement("span",{className:"text-xs text-gray-500"},P.model)))),$&&I.length>1&&re.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},re.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",I.length," providers simultaneously"))),re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},re.default.createElement("div",{className:"flex items-center justify-between mb-3"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),$&&re.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")),re.default.createElement("div",{className:"space-y-2"},FCe[n]?.map((P,Y)=>re.default.createElement("button",{key:Y,onClick:()=>l(P.task),disabled:!te,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},re.default.createElement("div",{className:"font-medium text-sm text-gray-900"},P.name),re.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},P.description))))),re.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},re.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&&re.default.createElement("div",{className:"mb-4"},re.default.createElement("div",{className:"flex justify-between text-sm mb-1"},re.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),re.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),re.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},re.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&&re.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),re.default.createElement("dl",{className:"space-y-2 text-sm"},re.default.createElement("div",{className:"flex justify-between"},re.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),re.default.createElement("dd",{className:"text-gray-900"},a?.runs_count||0,"/",a?.max_runs||qQ.max_runs)),re.default.createElement("div",{className:"flex justify-between"},re.default.createElement("dt",{className:"text-gray-500"},"Timeout"),re.default.createElement("dd",{className:"text-gray-900"},qQ.timeout_seconds,"s per task"))),w?.plan==="free"&&re.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},re.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&&re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},re.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},re.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),re.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},u.slice().reverse().map((P,Y)=>re.default.createElement("div",{key:P.id||Y,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>p(P)},re.default.createElement("div",{className:"flex items-center justify-between mb-1"},re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${L(P.status||"completed")}`},P.status||"completed"),re.default.createElement("span",{className:"text-xs text-gray-400"},P.tokens||0," tokens")),re.default.createElement("p",{className:"text-sm text-gray-600 truncate"},P.task))))),a?.status==="expired"&&re.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&&re.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},re.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},re.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},re.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),re.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.")),re.default.createElement("div",{className:"p-6"},re.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},re.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},re.default.createElement("div",{className:"text-center mb-4"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),re.default.createElement("span",{className:"text-gray-500"},"/mo"))),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),re.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")),re.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},re.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},re.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),re.default.createElement("div",{className:"text-center mb-4 mt-2"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),re.default.createElement("span",{className:"text-gray-500"},"/mo")),re.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),re.default.createElement("button",{onClick:()=>F("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")),re.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},re.default.createElement("div",{className:"text-center mb-4"},re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),re.default.createElement("div",{className:"mt-2"},re.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),re.default.createElement("span",{className:"text-gray-500"},"/mo")),re.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),re.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),re.default.createElement("li",{className:"flex items-start"},re.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),re.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")))),re.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},re.default.createElement("button",{onClick:()=>S(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ht=Z(Q());var Mo=Z(Q());var v3=["message","llm","tool","browser"];function nA(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function KQ(e={}){let t=[];return v3.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 VQ(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 GQ(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function YQ(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 XQ(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 ZQ(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 x3(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 QQ(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 eR(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 Lh(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 oA(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 b3(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function UCe(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 tR(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=b3(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",UCe(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"}: ${b3(t.message??t.value)}`:e.kind==="marker"?`marker: ${b3(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function zh(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function WCe(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 HCe(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 rR(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(HCe(e,a));if(o())return{count:i,truncated:!1};let l=WCe(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 Fu=[{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)"}],nb=18,qCe=76,bf=(e,t)=>e.totalMs?t/e.totalMs*100:0,KCe=(0,Mo.memo)(function({axis:t,entries:r,recordings:n}){let o=XQ(t);return Mo.default.createElement(Mo.default.Fragment,null,o.map(a=>Mo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${oA(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${bf(t,a.axisStart)}%`,width:`${bf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Fu.map((a,i)=>Mo.default.createElement(Mo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=yd(t,s.startMs);return Mo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*nb+7,height:4,borderRadius:2,left:`${bf(t,l)}%`,width:`${Math.max(bf(t,yd(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=yd(t,s.startMs);return Mo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*nb+4,height:nb-8,borderRadius:2,left:`${bf(t,l)}%`,width:`max(3px, ${bf(t,yd(t,s.endMs)-l)}%)`,background:zh(s)?"var(--color-error)":a.color}})}))))});function w3({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,Mo.useRef)(null),i=Fu.length*nb,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 Mo.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},Mo.default.createElement("div",{style:{width:qCe,flexShrink:0}},Fu.map(u=>Mo.default.createElement("div",{key:u.lane,style:{height:nb,display:"flex",alignItems:"center",gap:6,fontFamily:W,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},Mo.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),Mo.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"}},Mo.default.createElement(KCe,{axis:e,entries:t,recordings:r}),Mo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${bf(e,n)}%`,background:"var(--color-text-primary)"}})))}var ra=Z(Q());var VCe=Object.fromEntries(Fu.map(e=>[e.lane,e])),GCe=(0,ra.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=VCe[t.lane],l=zh(t);return ra.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"}},ra.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Lh(t.startMs-r)),ra.default.createElement("span",{style:{fontFamily:W,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),ra.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},tR(t)),t.duration_ms>0&&ra.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),nR=(0,ra.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,ra.useRef)(null),l=(0,ra.useRef)(null);return(0,ra.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?ra.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>ra.default.createElement(GCe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):ra.default.createElement("div",{style:{padding:20,fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Pi=Z(Q());var YCe=Object.fromEntries(Fu.map(e=>[e.lane,e.label])),XCe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:W,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function ZCe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function JCe({label:e,value:t}){let r=ZCe(t);return r==null?null:Pi.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Pi.default.createElement(We,{size:10},e),Pi.default.createElement("pre",{style:XCe},r))}function QCe(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 S3({entry:e}){return e?Pi.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Pi.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Pi.default.createElement(Ce,{tone:zh(e)?"error":"muted"},YCe[e.lane]),e.role&&Pi.default.createElement(Ce,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Pi.default.createElement("span",{style:{fontFamily:W,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Pi.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,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&&Pi.default.createElement("div",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),QCe(e).map(([t,r])=>Pi.default.createElement(JCe,{key:t,label:t,value:r}))):Pi.default.createElement("div",{style:{padding:16,fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var lo=Z(Q());var oR="action-agent-session-player",aR="/session_player",iR="allow-scripts allow-same-origin";function sR(e,t={}){return{...t,channel:oR,type:e}}function lR(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===oR&&typeof e.data.type=="string"}async function e2e(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 t2e="the session player did not start",r2e={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 k3({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,lo.useRef)(null),s=(0,lo.useRef)(null),[l,u]=(0,lo.useState)(!1),[c,d]=(0,lo.useState)(!1),[p,f]=(0,lo.useState)(null),[m,y]=(0,lo.useState)({state:"loading"}),x=RQ(e,t),h=x?.id,g=p!==null&&p===s.current,v=x?eR(x,t):null,b=(w,_)=>{i.current?.contentWindow?.postMessage(sR(w,_),window.location.origin)};(0,lo.useEffect)(()=>{let w=_=>{if(!lR(_,i.current?.contentWindow,window.location.origin))return;let{type:A}=_.data;A==="ready"?d(!0):A==="loaded"?f(_.data.token):A==="error"&&y({state:"error",message:_.data.message})};return window.addEventListener("message",w),()=>window.removeEventListener("message",w)},[]),(0,lo.useEffect)(()=>{if(!l||c)return;let w=setTimeout(()=>y({state:"error",message:t2e}),5e3);return()=>clearTimeout(w)},[l,c]),(0,lo.useEffect)(()=>{if(!c||h==null)return;let w=!1,_=[],A=`${h}:${Date.now()}`;return s.current=A,f(null),y({state:"loading"}),rR(h,{fetchPage:e2e,isCancelled:()=>w,onEvents:C=>{if(_===null){b("append",{events:C});return}_=_.concat(C),!(_.length<2)&&(b("load",{events:_,token:A}),_=null)}}).then(({truncated:C})=>{w||y(_!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{w||y({state:"error",message:C.message})}),()=>{w=!0}},[c,h]);let k=v?.phase;(0,lo.useEffect)(()=>{!g||!v||b("seek",{offset:v.offsetMs,playing:n&&k==="during"})},[g,a,n,k]),(0,lo.useEffect)(()=>{g&&b("speed",{speed:o})},[g,o]);let S=m.state==="error"?m.message:k==="before"?`the browser recording starts at ${Lh(x.startMs-r)}`:r2e[m.state];return lo.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},lo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},lo.default.createElement(We,null,"browser"),x&&lo.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},x.name||`recording ${x.id}`,e.length>1?` \xB7 ${e.indexOf(x)+1} of ${e.length}`:""),S&&lo.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},S)),lo.default.createElement("iframe",{ref:i,title:"Browser recording",src:Re(aR),sandbox:iR,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 Ta=Z(Q());function _3(e){let[t,r]=(0,Ta.useState)(0),[n,o]=(0,Ta.useState)(!1),[a,i]=(0,Ta.useState)(1),[s,l]=(0,Ta.useState)(0),u=(0,Ta.useRef)(0),c=(0,Ta.useRef)(0),d=(0,Ta.useCallback)((y,x)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=JQ(e,h);return u.current=h,r(h),(x||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,Ta.useEffect)(()=>{if(!n)return;let y=null,x=performance.now(),h=g=>{let v=d(u.current+(g-x)*a,!1);if(x=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let p=(0,Ta.useCallback)(y=>d(y,!0),[d]),f=(0,Ta.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,Ta.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var n2e=[.5,1,2,4,8,16],o2e={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function a2e(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function i2e(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function s2e({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ht.useMemo)(()=>KQ(r.lanes),[r]),i=(0,ht.useMemo)(()=>VQ(r.recordings),[r]),s=(0,ht.useMemo)(()=>YQ(GQ(a,i)),[a,i]),l=_3(s),{seek:u,pause:c}=l,[d,p]=(0,ht.useState)(()=>new Set(v3)),[f,m]=(0,ht.useState)(null),y=ZQ(s,l.position)??s.startMs,x=(0,ht.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[x3(a,y)]||null,g=x[x3(x,y)]?.id??null,v=a.find(E=>E.id===f)||h,b=(0,ht.useMemo)(()=>i2e(a),[a]),k=(0,ht.useCallback)(E=>{c(),m(E.id),u(yd(s,E.startMs))},[s,c,u]),S=E=>{let I=QQ(x,y,E);I!==null&&(c(),m(null),u(yd(s,I)))},w=()=>{m(null),l.togglePlay()},_=E=>p(I=>{let J=new Set(I);return J.has(E)?J.delete(E):J.add(E),J}),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(pe,{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)"}},o2e[e]||"Session"," #",t),ht.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:W,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,oA(s.endMs-s.startMs)," long"),ht.default.createElement("span",null,b.message||0," messages \xB7 ",b.llm||0," model calls \xB7 ",b.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(Ce,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ht.default.createElement(ze,{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(ze,{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(pe,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>S(-1)},"|<"),ht.default.createElement(pe,{size:"sm",variant:"primary",testId:"replay-play",onClick:w,style:{minWidth:72}},l.playing?"Pause":"Play"),ht.default.createElement(pe,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>S(1)},">|"),ht.default.createElement("select",{"aria-label":"Playback speed",value:l.speed,onChange:E=>l.setSpeed(Number(E.target.value)),style:{padding:"6px 8px",borderRadius:8,fontFamily:W,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},n2e.map(E=>ht.default.createElement("option",{key:E,value:E},E,"x"))),ht.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:W,fontSize:12,color:"var(--color-text-primary)"}},Lh(y-s.startMs)),ht.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"},title:"Idle stretches longer than 10 seconds play as one second"},Number.isFinite(y)?new Date(y).toLocaleTimeString():"")),ht.default.createElement(w3,{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(ze,{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(We,{style:{marginRight:6}},"timeline"),Fu.map(E=>ht.default.createElement(Ln,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>_(E.lane)},E.label," ",b[E.lane]||0))),ht.default.createElement(nR,{entries:x,startMs:s.startMs,currentId:g,selectedId:f,playing:l.playing,onChoose:k})),ht.default.createElement(ze,{padding:0},ht.default.createElement(S3,{entry:v}))),i.length>0&&ht.default.createElement(ze,{padding:14},ht.default.createElement(k3,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function C3({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(a2e(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(s2e,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ht.default.createElement(pe,{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(pe,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ht.default.createElement(ze,{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 dt=Z(Q());function uR(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var E3=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],N3=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],ob=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),dR={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},A3=/^(\d{4})-(\d{2})-(\d{2})$/,l2e={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>E3.some(t=>t.value&&t.value===e),outcome:e=>N3.some(t=>t.value&&t.value===e),from:e=>A3.test(e),to:e=>A3.test(e)};function aA(e={}){let t={...ob};for(let r of Object.keys(ob)){let n=String(e[r]??"");n&&l2e[r](n)&&(t[r]=n)}return t}function T3(e={}){return Object.values(aA(e)).some(Boolean)}function pR(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(dR))r[n]=t.get(o)||"";return aA(r)}function fR(e={}){let t=new URLSearchParams,r=aA(e);for(let[o,a]of Object.entries(dR))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function cR(e,t=0){let[,r,n,o]=e.match(A3);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var mR=Object.freeze({openedFromSessions:!0});function gR(e){return e?.openedFromSessions===!0}function hR(e={},{before:t=null,perPage:r=25}={}){let n=aA(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",cR(n.from)),n.to&&o.set("to",cR(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var yR={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},u2e={failed:"error",passed:"success"},Bh={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 vR(e,t){let r=await fetch(hR(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 c2e(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 d2e({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return dt.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},dt.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:Bh},dt.default.createElement("option",{value:""},"Every agent"),r.map(a=>dt.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&&dt.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:Bh},dt.default.createElement("option",{value:""},"Run by anyone"),dt.default.createElement("option",{value:"me"},"Run by me")),dt.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:Bh},E3.map(a=>dt.default.createElement("option",{key:a.value,value:a.value},a.label))),dt.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:Bh},N3.map(a=>dt.default.createElement("option",{key:a.value,value:a.value},a.label))),dt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",dt.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:Bh})),dt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",dt.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:Bh})),T3(e)&&dt.default.createElement(pe,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(ob)},"Clear filters"))}function p2e({session:e}){let t=ch(e.kind,e.id),r=yR[e.source]||yR.agent,n=c2e(e);return dt.default.createElement("a",{href:Re(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),lt(t,mR))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},dt.default.createElement(Ce,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),dt.default.createElement("div",{style:{minWidth:0,flex:1}},dt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},dt.default.createElement("span",{style:{fontFamily:W,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&&dt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&&dt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&&dt.default.createElement("div",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&dt.default.createElement(Ce,{tone:u2e[e.outcome]||"muted"},e.outcome),dt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},wo(e.last_activity_at)),dt.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function O3({agents:e=[],user:t=null}){let[r,n]=(0,dt.useState)(()=>pR(window.location.search)),[o,a]=(0,dt.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,dt.useState)("loading"),[l,u]=(0,dt.useState)(null),[c,d]=(0,dt.useState)(!1),[p,f]=(0,dt.useState)(null),[m,y]=(0,dt.useState)(0),[x]=(0,dt.useState)(uR);(0,dt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${fR(r)}`);let v=x.next();return s("loading"),d(!1),f(null),vR(r,null).then(b=>{v()&&(a({sessions:b.sessions||[],total:b.total||0,nextBefore:b.next_before||null}),s("ready"))}).catch(b=>{v()&&(u(b.message),s("error"))}),()=>{x.next()}},[r,m]);let h=async()=>{let v=x.latest();d(!0),f(null);try{let b=await vR(r,o.nextBefore);if(!v())return;a(k=>({sessions:[...k.sessions,...b.sessions||[]],total:b.total??k.total,nextBefore:b.next_before||null}))}catch(b){v()&&f(b.message)}finally{v()&&d(!1)}},g=T3(r);return dt.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},dt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},dt.default.createElement("div",null,dt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),dt.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"&&dt.default.createElement(We,null,o.total," session",o.total===1?"":"s")),dt.default.createElement(d2e,{filters:r,onChange:n,agents:e,user:t}),dt.default.createElement(ze,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&dt.default.createElement(tn,null,"loading sessions\u2026"),i==="error"&&dt.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,dt.default.createElement(pe,{size:"sm",onClick:()=>y(v=>v+1)},"Retry")),i==="ready"&&o.sessions.length===0&&dt.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},g?dt.default.createElement(dt.default.Fragment,null,dt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),dt.default.createElement(pe,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(ob)},"Clear filters")):dt.default.createElement(dt.default.Fragment,null,dt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),dt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",marginTop:6}},"Every conversation in an agent's Run workbench and every evaluation replay appears here, ready to replay."))),i==="ready"&&o.sessions.map(v=>dt.default.createElement(p2e,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&&dt.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&&dt.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),dt.default.createElement(pe,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Oe=Z(Q());var qt=Z(Q());var f2e={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function xR(e){return f2e[e]||null}function iA(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function bR({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 m2e="Setting your own host needs permission to manage the organization's keys.";function wR({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?m2e:null}}var kR={openai:{label:"OpenAI",icon:"\u{1F916}",placeholder:"sk-\u2026"},anthropic:{label:"Anthropic",icon:"\u{1F9E0}",placeholder:"sk-ant-\u2026"},openrouter:{label:"OpenRouter",icon:"\u{1F500}",placeholder:"sk-or-\u2026"},ollama:{label:"Ollama",icon:"\u{1F999}",placeholder:"http://localhost:11434/v1"}};function sA({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,qt.useState)(null),[a,i]=(0,qt.useState)(""),[s,l]=(0,qt.useState)(""),[u,c]=(0,qt.useState)(!1),[d,p]=(0,qt.useState)({}),[f,m]=(0,qt.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,saveProviderKey:async(g,{hostBased:v=!1,clearApiKey:b=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let k={provider:g,credential:a.trim()};r&&(k.scope=r),v&&(s.trim()||b)&&(k.api_key=b?"":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,[g]:null})),gT(),await e()}catch(k){t(`Could not save the ${kR[g]?.label||g} credential${k.message!=="save failed"?`: ${k.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!f){m(g),t(null);try{let b={provider:g};r&&(b.scope=r),v&&(a.trim()&&(b.credential=a.trim()),s.trim()&&(b.api_key=s.trim()));let k=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)}),S=await k.json().catch(()=>({}));if(!k.ok)throw new Error(S.error||"test failed");p(w=>({...w,[g]:S}))}catch(b){p(k=>({...k,[g]:{ok:!1,models:[],error:b.message}}))}finally{m(null)}}},removeProviderKey:async g=>{if(await Wr(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(iA(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(k=>({...k,[g]:null})),gT(),await e()}catch{t("Could not remove the provider credential.")}}}}var SR={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:y,removeProviderKey:x}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=SR[r]||SR.default;return qt.default.createElement("div",{className:"border rounded-lg p-6",style:h},qt.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},g.title),qt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},g.description),!n&&qt.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),qt.default.createElement("div",{className:"space-y-4"},e.filter(({kind:v})=>v!=="connection").map(v=>{let{provider:b,host_based:k,configured:S,hint:w,api_key_configured:_,api_key_hint:A,platform_default:C}=v,E=kR[b]||{label:b,icon:"\u{1F511}",placeholder:""},I=a===b,J=p[b],$=f===b,U=k&&(I?s.trim():S||C),N=S?k?`${w}${_?` \xB7 key ${A}`:""}`:`Configured (${w})`:k&&C?`Platform default: ${C}`:"Not configured",T=r==="personal"?xR(v.effective_source):null,{canChange:D,canRemove:O,note:j}=wR({editable:n,scope:r,row:v}),M=r==="organization"&&S?bR(v):null;return qt.default.createElement("div",{key:b,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},qt.default.createElement("div",{className:"flex items-center justify-between"},qt.default.createElement("div",{className:"flex items-center space-x-3"},qt.default.createElement("span",{className:"text-xl"},E.icon),qt.default.createElement("div",null,qt.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},E.label),qt.default.createElement("p",{className:`text-sm ${S?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),M&&qt.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},M)),T&&qt.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"},T)),(D||O)&&qt.default.createElement("div",{className:"flex items-center space-x-2"},D&&k&&!I&&U&&qt.default.createElement("button",{onClick:()=>y(b),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"),O&&!I&&qt.default.createElement("button",{onClick:()=>x(b),className:`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Remove"),D&&qt.default.createElement("button",{onClick:()=>{i(I?null:b),l(!I&&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"}`},I?"Cancel":S?"Update":"Configure"))),j&&qt.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},j),I&&qt.default.createElement("div",{className:"mt-3 space-y-2"},qt.default.createElement("div",{className:"flex items-center space-x-2"},qt.default.createElement("input",{type:k?"text":"password","data-aa-secret":k?void 0:"",value:s,onChange:H=>l(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(b,{hostBased:k}),placeholder:k?E.placeholder:`${E.label} API key (${E.placeholder})`,"aria-label":k?`${E.label} host URL`:`${E.label} API key`,autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),k&&qt.default.createElement("button",{onClick:()=>y(b,{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"),qt.default.createElement("button",{onClick:()=>m(b,{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&&qt.default.createElement("div",{className:"flex items-center space-x-2"},qt.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:H=>c(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(b,{hostBased:k}),placeholder:_?`API key (stored: ${A} \u2014 type to replace)`:"API key (optional \u2014 only for remote servers that require one)","aria-label":`${E.label} API key`,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),_&&qt.default.createElement("button",{onClick:()=>m(b,{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&&I&&qt.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&&J&&qt.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:J.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:J.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},J.ok?qt.default.createElement(qt.default.Fragment,null,qt.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",J.host,typeof J.latency_ms=="number"?` in ${J.latency_ms} ms`:""," \xB7 ",J.models.length===0?"no models pulled yet (run `ollama pull ` on the server)":`${J.models.length} model${J.models.length===1?"":"s"}`,J.models.length>0&&qt.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},J.models.join(" \xB7 "))):qt.default.createElement(qt.default.Fragment,null,qt.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",J.error)))})))}async function _R(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 lA=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function P3({account:e,user:t,subscription:r,agentCount:n=0}){let{darkMode:o}=ut(),[a,i]=(0,Oe.useState)(null),[s,l]=(0,Oe.useState)(!1),[u,c]=(0,Oe.useState)(!1),[d,p]=(0,Oe.useState)({status:"idle",value:null,error:null}),[f,m]=(0,Oe.useState)(!1),[y,x]=(0,Oe.useState)(null),[h,g]=(0,Oe.useState)(null),[v,b]=(0,Oe.useState)([]),[k,S]=(0,Oe.useState)(!1),[w,_]=(0,Oe.useState)(null),A=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Oe.useEffect)(()=>{fetch("/api/usage").then(M=>M.ok?M.json():null).then(M=>i(M?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(M=>M.ok?M.json():null).then(M=>g(M?.members||[])).catch(()=>g([]))},[]);let C=(0,Oe.useCallback)(async()=>{try{let M=await fetch("/api/provider_keys?scope=organization");if(!M.ok)throw new Error("load failed");let H=await M.json();b(H.provider_keys||[]),S(!!H.can_manage_organization_keys),_(null)}catch{_("Could not load the organization's provider keys.")}},[]);(0,Oe.useEffect)(()=>{C()},[C]);let E=sA({onKeysChanged:C,onError:_,scope:"organization"}),I=async()=>{m(!0),x(null);try{await Oh({planSlug:"pro"})}catch(M){x(M.message),m(!1)}},J=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let M=await _R();return p({status:"ready",value:M,error:null}),M}catch(M){return p({status:"error",value:null,error:M.message}),null}},$=async()=>{u?c(!1):await J()&&c(!0)},U=async()=>{let M=await J();if(M)try{await navigator.clipboard.writeText(M),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,T={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},D=r?.plan_name||"Free",O={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=O[D.toLowerCase()]||O.free;return Oe.default.createElement("div",{className:"p-6 space-y-6"},Oe.default.createElement("div",null,Oe.default.createElement("h2",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},"Organization"),Oe.default.createElement("p",{className:`mt-1 ${o?"text-gray-400":"text-gray-500"}`},"Manage your workspace, team, and billing")),Oe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6"},Oe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Workspace"),Oe.default.createElement("div",{className:"space-y-3"},Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Name"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.name||"My Workspace")),Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Owner"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},t?.email||"you@example.com")),Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Created"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},e?.created_at?new Date(e.created_at).toLocaleDateString():"Today")))),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Oe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Oe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Current Plan"),Oe.default.createElement("span",{className:"px-3 py-1 bg-red-100 text-red-700 rounded-full text-sm font-medium"},D)),Oe.default.createElement("div",{className:"space-y-3"},Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Team Seats"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.seats)),Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Workspaces"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.workspaces)),Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Agents"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.agents)),Oe.default.createElement("div",{className:"flex justify-between items-center"},Oe.default.createElement("span",{className:o?"text-gray-400":"text-gray-500"},"Traces"),Oe.default.createElement("span",{className:`font-medium ${o?"text-white":"text-gray-900"}`},j.traces))),D.toLowerCase()!=="enterprise"&&Oe.default.createElement(Oe.default.Fragment,null,Oe.default.createElement("button",{onClick:I,disabled:f,className:"mt-4 w-full px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},f?"Redirecting to checkout\u2026":"Upgrade Plan"),y&&Oe.default.createElement("p",{className:"mt-2 text-sm text-red-500 text-center"},y)))),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Oe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Oe.default.createElement("h3",{className:`text-lg font-semibold ${o?"text-white":"text-gray-900"}`},"Team Members"),A&&Oe.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")),Oe.default.createElement("div",{className:"overflow-hidden"},Oe.default.createElement("table",{className:"min-w-full"},Oe.default.createElement("thead",null,Oe.default.createElement("tr",{className:o?"border-b border-gray-700":"border-b border-gray-200"},Oe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Member"),Oe.default.createElement("th",{className:`text-left py-3 px-4 text-sm font-medium ${o?"text-gray-400":"text-gray-500"}`},"Role"))),Oe.default.createElement("tbody",null,(h||[]).map(M=>Oe.default.createElement("tr",{key:M.id??M.email},Oe.default.createElement("td",{className:"py-3 px-4"},Oe.default.createElement("div",{className:"flex items-center space-x-3"},Oe.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},Oe.default.createElement("span",{className:"text-red-600 font-medium text-sm"},(M.name||M.email||"?").charAt(0).toUpperCase())),Oe.default.createElement("div",null,Oe.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},M.name||M.email,M.id!=null&&M.id===t?.id&&Oe.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),M.name&&M.email&&Oe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},M.email)))),Oe.default.createElement("td",{className:"py-3 px-4"},M.role?Oe.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(M.role).charAt(0).toUpperCase()+String(M.role).slice(1)):Oe.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Oe.default.createElement("div",{className:"space-y-2"},w&&Oe.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},w),Oe.default.createElement(ab,{providerKeys:v,editor:E,scope:"organization",editable:k})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},"Usage This Month"),Oe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4"},Oe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Oe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},n),Oe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Agents")),Oe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Oe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},lA(a?.traces_used),a?.traces_limit>0&&Oe.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",lA(a.traces_limit))),Oe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Traces")),Oe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Oe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},lA(a?.runs_used)),Oe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Executions")),Oe.default.createElement("div",{className:"text-center p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Oe.default.createElement("p",{className:`text-2xl font-bold ${o?"text-white":"text-gray-900"}`},lA(a?.tokens_used)),Oe.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},"Tokens")))),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${o?"text-white":"text-gray-900"}`},"Telemetry"),Oe.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"," ",Oe.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"),":"),Oe.default.createElement("pre",{className:`text-xs rounded-lg p-4 overflow-x-auto mb-4 ${o?"bg-black text-gray-300":"bg-gray-900 text-gray-100"}`},`telemetry: enabled: true endpoint: ${window.location.origin}/v1/traces - api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`),Te.default.createElement("div",{className:"flex items-center justify-between gap-3"},Te.default.createElement("div",{className:"min-w-0 flex-1"},Te.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Te.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))),Te.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Te.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"),Te.default.createElement("button",{onClick:F,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&&Te.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Oe=Z(J());var Ke=Z(J());var u2e=/^[A-Za-z_][A-Za-z0-9_]*$/,c2e=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,d2e={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},p2e=["sk_live_","rk_live_"],vR=8,xR=2e3;function nA(e){return e?u2e.test(e)?c2e.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 oA(e,t){let r=[],n=typeof t=="string"?t:"";return p2e.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||d2e[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function bR(e,t){return[...e,...tb([{name:t}])]}function wR({name:e,edited:t,fullName:r}){return t?e:r}function rb(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 $h(e){for(let t of e){let r=nA(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 SR({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 C3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function f2e(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function kR({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=f2e(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 aA={supported:"success",bootstrap:"info",unsupported:"error"};function _R(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 CR(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 AR={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function ER(e){return e?.sandbox_state==="booting"}function vf(e){return e==null?"/projects/new":`/projects/${e}`}function nb(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var NR=["overview","explorations","environment","browser","sessions"];function TR(e=""){let t=new URLSearchParams(e).get("tab");return NR.includes(t)?t:"overview"}function OR(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!NR.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function iA(e){if(!e?.project?.id)return null;let t=vf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function PR(e,t=[]){return e?.sandbox_state!=="ready"||!e.sandbox?.session_id||t.length===0?null:e.sandbox.browser?.status==="running"?{label:"Watch live",watch:!0}:{label:"Open browser",watch:!1}}var Mn=Z(J());function xf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,Mn.useState)(e.browser||null),[s,l]=(0,Mn.useState)(!1),[u,c]=(0,Mn.useState)(null),[d,p]=(0,Mn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,Mn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(k,A,C)=>{c(k),p(null);try{let E=await fetch(f,A),I=await E.json().catch(()=>({}));if(I.browser&&(i(I.browser),n?.(I.browser)),!E.ok)throw new Error(I.message||ot(I,`${C} (HTTP ${E.status}).`))}catch(E){p(E.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(zX({inWindow:s,modes:t}))},"Could not start the browser"),x=()=>m("stop",{method:"DELETE"},"Could not stop the browser"),h=o?"text-gray-400":"text-gray-500",g=o?"text-white":"text-gray-900",v=o?"border-gray-700":"border-gray-200",b=`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,S=$X(a),w=LX(a),_=a?.status==="running";return Mn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},Mn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Mn.default.createElement("div",{className:"flex items-center gap-2"},Mn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),S&&Mn.default.createElement(Ks,{tone:S.tone},S.label)),w?Mn.default.createElement("button",{type:"button",onClick:x,disabled:u!==null,className:b},u==="stop"?"Stopping\u2026":"Stop browser"):Mn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&Mn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},Mn.default.createElement("input",{type:"checkbox",checked:s,onChange:k=>l(k.target.checked),disabled:u!==null}),"Open a window on this machine"),Mn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:b},u==="start"?"Starting\u2026":"Start browser"))),d&&Mn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&Mn.default.createElement("p",{className:`text-xs ${h}`},"A browser of this sandbox's own, opened on its app and recorded. Agent runs against the sandbox can drive it."),_&&a.server_key&&Mn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",Mn.default.createElement("code",{className:"font-mono"},a.server_key),"."),_&&a.live_url&&Mn.default.createElement(y0,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),_&&!a.live_url&&Mn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var er=Z(J());var sn=Z(J());function MR(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function sA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var IR={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 bf({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(),[y,x]=(0,sn.useState)(""),[h,g]=(0,sn.useState)(!1),v=m?"text-gray-400":"text-gray-500",b=m?"text-white":"text-gray-900",S={backgroundColor:m?"#252525":"#f9fafb"},w=`w-full px-3 py-2 border rounded-lg text-sm ${m?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,_=MR(e,n);(0,sn.useEffect)(()=>{if(!h||!d)return;let C=()=>{g(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let k=c?sn.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>g(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,A=p?sn.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),C3(y)&&p(y)}},sn.default.createElement("input",{type:"text",value:y,onChange:C=>x(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:w,"data-testid":"repo-picker-typed-name"}),sn.default.createElement("button",{type:"submit",disabled:!C3(y),className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return sn.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},sn.default.createElement("p",{className:`text-sm ${v}`},IR[l]||IR.loading),C&&sn.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&sn.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Check again"),l==="empty"&&k,l==="empty"&&A,f&&sn.default.createElement("p",{className:"text-sm text-red-500"},f))}return sn.default.createElement("div",{className:"space-y-2"},sn.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:w}),sn.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},_.map(C=>sn.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:S},a==="single"?sn.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):sn.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),sn.default.createElement("span",{className:`text-sm font-mono ${b}`},C.full_name),C.private&&sn.default.createElement("span",{className:`text-xs ${v}`},"private"))),_.length===0&&sn.default.createElement("p",{className:`text-sm ${v}`},"No repositories match.")),(k||A)&&sn.default.createElement("div",{className:"space-y-2"},k,A,f&&sn.default.createElement("p",{className:"text-sm text-red-500"},f)))}var DR={linked:{tone:"success",text:"GitHub App installation linked. Choose the repositories this workspace may use on it."},pending:{tone:"success",text:"Installation requested. Once an owner of the organization approves it on GitHub, that owner has to link it from this page."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub App return expired or was not started here. Try again from this page."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try again."},missing_installation:{tone:"error",text:"GitHub did not say which installation to link. Try installing again."},not_found:{tone:"error",text:"Your GitHub account cannot reach that installation, so it was not linked."},not_admin:{tone:"error",text:"Only the account the App is installed on, or an admin of its organization, can link an installation."},taken:{tone:"error",text:"That installation is already linked to another workspace."},not_configured:{tone:"error",text:"No GitHub App is configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub App."},manifest_error:{tone:"error",text:"GitHub did not finish creating the App. Try again."},manifest_unavailable:{tone:"error",text:"Creating a GitHub App is not available on this dashboard."},error:{tone:"error",text:"Could not finish linking the GitHub App. Try again."}};function jR(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function lA(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 $R(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>lA(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 LR(e,t){let r=new Map;return(t||[]).forEach(n=>{lA(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 zR(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function BR(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function FR(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 A3({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=ut(),[a,i]=(0,er.useState)(null),[s,l]=(0,er.useState)(null),[u,c]=(0,er.useState)(new Set),[d,p]=(0,er.useState)(""),[f,m]=(0,er.useState)(!1),[y,x]=(0,er.useState)(null),[h,g]=(0,er.useState)(""),[v,b]=(0,er.useState)(!1);if(!e||!e.configured&&!e.manifest_available)return null;let S=o?"text-gray-400":"text-gray-500",w=o?"text-white":"text-gray-900",_={backgroundColor:o?"#252525":"#f9fafb"},k=`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,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"},E=async j=>{r(null);try{let T=await fetch(`/api/github_installations/${j.id}/repositories`),D=await T.json().catch(()=>({}));if(!T.ok)throw D.reinstall_required&&t(),new Error(D.error||"Could not list the installation's repositories.");l(D.repositories||[]),c(new Set((j.repositories||[]).map(M=>M.full_name))),p(""),i(j.id)}catch(T){r(T.message)}},I=async j=>{x(j.id),r(null);try{let T=await fetch(`/api/github_installations/${j.id}/repositories`),D=await T.json().catch(()=>({}));if(!T.ok)throw new Error(D.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${j.account_login} is active again.`})}catch(T){r(T.message)}finally{x(null),t()}},Q=()=>{i(null),l(null)},$=async()=>{m(!0),r(null);try{let j=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),T=await j.json().catch(()=>({}));if(!j.ok)throw new Error(T.error||"Could not save the selection.");Q(),n({tone:"success",text:"Repository selection saved."}),t()}catch(j){r(j.message)}finally{m(!1)}},F=async j=>{if(await Wr({title:`Unlink @${j.account_login}?`,message:"New sandboxes can no longer check out its repositories. The App stays installed on GitHub; uninstall it there to remove its access.",confirmLabel:"Unlink",danger:!0})){r(null);try{let T=await fetch(`/api/github_installations/${j.id}`,{method:"DELETE"});if(!T.ok&&T.status!==404)throw new Error("Could not unlink the installation.");a===j.id&&Q(),t()}catch(T){r(T.message)}}},N=async()=>{let j=h.trim();if(j&&!BR(j)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}b(!0),r(null);try{let T=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j?{organization:j}:{})}),D=await T.json().catch(()=>({}));if(!T.ok)throw new Error(D.error||"Could not start creating the GitHub App.");FR(document,D.url,D.manifest)}catch(T){r(T.message),b(!1)}};if(!e.configured)return er.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:_},er.default.createElement("p",{className:`text-sm font-medium ${w}`},"Use a GitHub App"),er.default.createElement("p",{className:`text-xs ${S}`},"A GitHub App gives each checkout a one-hour token limited to its one repository. Create one for this dashboard: GitHub registers it, and this page shows its settings once to add to your configuration."),er.default.createElement("div",{className:"flex items-center gap-2"},er.default.createElement("input",{type:"text",value:h,onChange:j=>g(j.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"}`}),er.default.createElement("button",{type:"button",onClick:N,disabled:v,className:`${k} disabled:opacity-50`},v?"Opening GitHub\u2026":"Create GitHub App")));let O=e.installations||[];return er.default.createElement("div",{className:"space-y-3"},er.default.createElement("div",{className:"flex items-center justify-between"},er.default.createElement("div",null,er.default.createElement("p",{className:`text-sm font-medium ${w}`},"GitHub App"),er.default.createElement("p",{className:`text-xs ${S}`},"Each checkout gets a one-hour token limited to its repository. When a repository is reachable both ways, the App is used.")),er.default.createElement("a",{href:tt("/api/github_installations/install"),className:"shrink-0 px-3 py-1 text-sm bg-red-500 text-white rounded hover:bg-red-600"},"Install the GitHub App")),O.length===0&&er.default.createElement("p",{className:`text-sm ${S}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),O.map(j=>{let T=lA(j),D=j.repositories||[];return er.default.createElement("div",{key:j.id,className:"p-3 rounded-lg space-y-2",style:_},er.default.createElement("div",{className:"flex items-center justify-between gap-3"},er.default.createElement("div",{className:"min-w-0"},er.default.createElement("p",{className:`text-sm font-mono ${w}`},jR(j)),er.default.createElement("p",{className:`text-xs ${T?C[T.tone]:S}`},T?T.label:`${D.length} selected for sandboxes`)),er.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===j.id?er.default.createElement(er.default.Fragment,null,er.default.createElement("button",{type:"button",onClick:Q,className:k},"Cancel"),er.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})`)):er.default.createElement(er.default.Fragment,null,T?er.default.createElement("button",{type:"button",onClick:()=>I(j),disabled:y===j.id,className:`${k} disabled:opacity-50`},y===j.id?"Checking\u2026":"Check again"):er.default.createElement("button",{type:"button",onClick:()=>E(j),className:k},"Choose repositories"),j.settings_url&&er.default.createElement("a",{href:j.settings_url,target:"_blank",rel:"noreferrer",className:k},"Access on GitHub"),er.default.createElement("button",{type:"button",onClick:()=>F(j),className:A},"Unlink")))),a===j.id&&s&&er.default.createElement(bf,{repositories:s,selection:u,onToggle:M=>c(K=>sA(K,M)),filter:d,onFilterChange:p}))}))}var g2e={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 E3({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,Ke.useState)(null),[i,s]=(0,Ke.useState)(null),[l,u]=(0,Ke.useState)(new Set),[c,d]=(0,Ke.useState)(""),[p,f]=(0,Ke.useState)(!1),[m,y]=(0,Ke.useState)(null),[x,h]=(0,Ke.useState)(g2e[e]||DR[t]||null),[g,v]=(0,Ke.useState)([]),[b,S]=(0,Ke.useState)(null),[w,_]=(0,Ke.useState)({}),[k,A]=(0,Ke.useState)(null),[C,E]=(0,Ke.useState)(null),[I,Q]=(0,Ke.useState)(0),[$,F]=(0,Ke.useState)({}),N=(0,Ke.useRef)({}),O=(0,Ke.useCallback)(async()=>{try{let ve=await fetch("/api/github_connection");if(!ve.ok)throw new Error("status failed");let ue=await ve.json();a(ue),u(new Set((ue.connection?.repositories||[]).map(Ue=>Ue.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Ke.useEffect)(()=>{O()},[O]);let j=(0,Ke.useCallback)(async()=>{try{let ve=await fetch("/api/sandboxes?sandbox_type=app_runtime"),ue=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ot(ue,`Could not list your sandboxes (HTTP ${ve.status}).`));v(ue.sandboxes||[]),S({codeSessions:!!ue.code_sessions_supported,claudeCode:{...RC(ue),sandboxes:ue.claude_code_sandboxes||[]},codex:e2(ue),pullRequests:ue.pull_requests_supported===!0,browserModes:Array.isArray(ue.browser_modes)?ue.browser_modes:[]})}catch(ve){y(ve.message)}},[]),T=o!==null,D=!!o?.connected;(0,Ke.useEffect)(()=>{T&&j()},[T,D,j,r]);let M=g.filter(ve=>ZC(ve)&&!$[ve.session_id]?.stopped).map(ve=>ve.session_id).join(" ");(0,Ke.useEffect)(()=>{if(!M)return;let ve=!1,ue=setTimeout(async()=>{let Ue=await Promise.all(M.split(" ").map(async rt=>{try{let Tt=await fetch(`/api/sandboxes/${encodeURIComponent(rt)}`);if(Tt.status===404)return{id:rt,gone:!0};let $t=await Tt.json().catch(()=>({}));return Tt.ok?{id:rt,sandbox:$t.sandbox||null}:{id:rt,status:Tt.status,error:ot($t,`Could not check on this sandbox (HTTP ${Tt.status}).`)}}catch{return{id:rt,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(ve)return;let Je={};Ue.forEach(({id:rt,status:Tt,error:$t})=>{if(!$t){delete N.current[rt],Je[rt]=null;return}let Hr=(N.current[rt]||0)+1;N.current[rt]=Hr,Je[rt]={message:$t,stopped:GC(Tt,Hr)}}),F(rt=>Object.entries(Je).reduce((Tt,[$t,Hr])=>{if(Hr)return{...Tt,[$t]:Hr};if(!($t in Tt))return Tt;let{[$t]:Po,...vs}=Tt;return vs},rt)),v(rt=>Ue.reduce((Tt,$t)=>$t.gone?Tt.filter(Hr=>Hr.session_id!==$t.id):$t.sandbox?IY(Tt,$t.sandbox,"session_id"):Tt,rt)),Q(rt=>rt+1)},2e3);return()=>{ve=!0,clearTimeout(ue)}},[M,I]);let K=ve=>{delete N.current[ve],F(ue=>{let{[ve]:Ue,...Je}=ue;return Je})},V=(ve,ue)=>{_(Ue=>({...Ue,[ve]:ue}))},L=async()=>{y(null);try{let ve=await fetch("/api/github_connection/repositories"),ue=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ue.error||"Could not list repositories.");s(ue.repositories||[])}catch(ve){y(ve.message)}},G=ve=>{u(ue=>sA(ue,ve))},W=async()=>{f(!0),y(null);try{let ve=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),ue=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ue.error||"Could not save the selection.");a(Ue=>({...Ue,connection:ue.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(ve){y(ve.message)}finally{f(!1)}},ie=async()=>{if(await Wr({title:"Disconnect GitHub?",message:"New checkout sandboxes can no longer clone its repositories. Sandboxes already running keep running until you stop them or they expire.",confirmLabel:"Disconnect",danger:!0}))try{if(!(await fetch("/api/github_connection",{method:"DELETE"})).ok)throw new Error("disconnect failed");s(null),h(null),await O()}catch{y("Could not disconnect GitHub.")}},Ie=async ve=>{A(ve),V(ve,null);try{let ue=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:ve})}),Ue=await ue.json().catch(()=>({}));if(!ue.ok)throw new Error(ot(Ue,`Could not start the sandbox (HTTP ${ue.status}).`));v(Je=>ad(Je,Ue.sandbox,"session_id"))}catch(ue){V(ve,ue.message)}finally{A(null)}},ge=async ve=>{if(!(ve.status!=="failed"&&!await Wr({title:"Stop this sandbox?",message:"Its app stops and its checkout is deleted, including any changes Claude Code made there.",confirmLabel:"Stop sandbox",danger:!0}))){E(ve.session_id),V(ve.repository,null);try{let ue=await fetch(`/api/sandboxes/${encodeURIComponent(ve.session_id)}`,{method:"DELETE"}),Ue=await ue.json().catch(()=>({}));if(!ue.ok&&ue.status!==404)throw new Error(ot(Ue,`Could not stop the sandbox (HTTP ${ue.status}).`));v(Je=>Je.filter(rt=>rt.session_id!==ve.session_id)),K(ve.session_id)}catch(ue){V(ve.repository,ue.message)}finally{E(null)}}},ce=n?"text-gray-400":"text-gray-500",R=n?"text-white":"text-gray-900",ee={backgroundColor:n?"#252525":"#f9fafb"},z=`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"}`,te=o?.connection,U=te?.repositories||[],P=o?.app?.configured?o.app.installations||[]:[],Y=LR(te,P),{byRepository:B,others:se}=jY(g,Y.map(ve=>ve.full_name)),ne=P.length>0,he=$R(P),et=n?"text-red-400":"text-red-600",it=(ve,{standalone:ue=!1}={})=>{let{label:Ue,tone:Je}=NY(ve.status),rt=ZC(ve),Tt=TY(ve),$t=Tt?EY(ve.expires_at):null,Hr=rt?$[ve.session_id]:null;return Ke.default.createElement("div",{key:ve.session_id,className:ue?"p-3 rounded-lg space-y-2":`mt-3 pt-3 border-t space-y-2 ${n?"border-gray-700":"border-gray-200"}`,style:ue?ee:void 0},Ke.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ke.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Ke.default.createElement(Ks,{tone:Je},Ue),Ke.default.createElement("span",{className:`font-mono truncate ${ce}`},ue?ve.repository:"","@",ve.repository_ref),$t&&Ke.default.createElement("span",{className:`shrink-0 ${ce}`},"\xB7 ",$t),iA(ve)&&Ke.default.createElement("a",{href:tt(iA(ve)),onClick:Po=>{Po.preventDefault(),lt(iA(ve))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:ve.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",ve.project.name," \u2192")),Ke.default.createElement("button",{onClick:()=>ge(ve),disabled:C===ve.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===ve.session_id?"Stopping\u2026":ve.status==="failed"?"Dismiss":"Stop")),rt&&!Hr?.stopped&&Ke.default.createElement("p",{className:`text-xs ${ce}`},"Checking out the repository and booting its app; this can take a few minutes."),Hr&&Ke.default.createElement("p",{className:`text-xs ${et}`},Hr.message," ",Hr.stopped?Ke.default.createElement(Ke.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Ke.default.createElement("button",{type:"button",onClick:()=>K(ve.session_id),className:"underline"},"Retry")):"Trying again\u2026"),ve.error_message&&Ke.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"}`},ve.error_message),ve.runtime_server_key&&Ke.default.createElement("p",{className:`text-xs ${ce}`},"Enable ",Ke.default.createElement("code",{className:"font-mono"},ve.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Tt&&b?.codeSessions&&Ke.default.createElement(g0,{sandbox:ve,claudeCode:b.claudeCode?.mode==="sandbox_login"?{...b.claudeCode,connected:!!b.claudeCode.sandboxes.find(Po=>Po.session_id===ve.session_id)?.credential_mode}:b.claudeCode,codex:b.codex,onRecheckConnection:j}),Tt&&b&&!b.codeSessions&&Ke.default.createElement("p",{className:`text-xs ${ce}`},"The configured sandbox backend cannot run Claude Code sessions."),Tt&&b?.pullRequests&&Ke.default.createElement(L0,{sandbox:ve}),Tt&&b?.browserModes.length>0&&Ke.default.createElement(xf,{sandbox:ve,modes:b.browserModes}))};return Ke.default.createElement("div",{className:"space-y-4"},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",{className:"flex items-center space-x-3"},Ke.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`font-medium ${R}`},"GitHub"),Ke.default.createElement("p",{className:`text-sm ${o?.connected||he.active>0?n?"text-green-400":"text-green-600":ce}`},o?[o.connected?`Connected as @${te.login}`:null,he.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Ke.default.createElement("button",{onClick:ie,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?Ke.default.createElement("a",{href:tt("/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&&Ke.default.createElement("p",{className:`text-sm ${ce}`},"The operator has not configured a GitHub OAuth app. Set ",Ke.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Ke.default.createElement("code",null,"github_client_secret")," (or ",Ke.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Ke.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Ke.default.createElement("code",null,tt("/api/github_connection/callback"))," as its callback URL."),x&&Ke.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${x.tone==="success"?n?"bg-green-900/20 border-green-800 text-green-300":"bg-green-50 border-green-200 text-green-800":n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},x.text),m&&Ke.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),Ke.default.createElement(A3,{app:o?.app,onChanged:O,onError:y,onNotice:h}),o?.connected&&Ke.default.createElement("div",{className:"space-y-3"},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},"OAuth connection"),Ke.default.createElement("p",{className:`text-xs ${ce}`},U.length," selected for sandboxes, cloned with @",te.login,"'s token.")),i?Ke.default.createElement("div",{className:"flex items-center space-x-2"},Ke.default.createElement("button",{onClick:()=>{s(null),u(new Set(U.map(ve=>ve.full_name)))},className:z},"Cancel"),Ke.default.createElement("button",{onClick:W,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})`)):Ke.default.createElement("button",{onClick:L,className:z},"Choose repositories")),i&&Ke.default.createElement(bf,{repositories:i,selection:l,onToggle:G,filter:c,onFilterChange:d})),(o?.connected||ne)&&!i&&Ke.default.createElement("div",{className:"space-y-3"},Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},"Available repositories"),Y.length===0?Ke.default.createElement("p",{className:`text-sm ${ce}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Ke.default.createElement("div",{className:"space-y-2"},Y.map(ve=>{let ue=B[ve.full_name]||[],Ue=ue.some(ZC),Je=o.app?.configured?` \xB7 via ${zR(ve)}`:"";return Ke.default.createElement("div",{key:ve.full_name,className:"p-3 rounded-lg",style:ee},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`text-sm font-mono ${R}`},ve.full_name),Ke.default.createElement("p",{className:`text-xs ${ce}`},ve.private?"private":"public"," \xB7 ",ve.default_branch,Je)),Ke.default.createElement("button",{onClick:()=>Ie(ve.full_name),disabled:k===ve.full_name||Ue,className:`${z} disabled:opacity-50`},k===ve.full_name?"Starting\u2026":Ue?"Booting\u2026":"Start sandbox")),w[ve.full_name]&&Ke.default.createElement("p",{className:`mt-2 text-xs ${et}`},w[ve.full_name]),ue.map(rt=>it(rt)))}))),!i&&se.length>0&&Ke.default.createElement("div",{className:"space-y-2"},Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},D||ne?"Other sandboxes":"Checkout sandboxes"),Ke.default.createElement("p",{className:`text-xs ${ce}`},D||ne?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),se.map(ve=>Ke.default.createElement(Ke.default.Fragment,{key:ve.session_id},w[ve.repository]&&Ke.default.createElement("p",{className:`text-xs ${et}`},w[ve.repository]),it(ve,{standalone:!0})))))}var Mt=Z(J());var N3="claude_code";function T3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Mt.useState)(null),[o,a]=(0,Mt.useState)(null),[i,s]=(0,Mt.useState)(!1),[l,u]=(0,Mt.useState)(""),[c,d]=(0,Mt.useState)(!1),[p,f]=(0,Mt.useState)(null),[m,y]=(0,Mt.useState)([]),[x,h]=(0,Mt.useState)(""),g=(0,Mt.useCallback)(async()=>{try{let[C,E]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!E.ok)throw new Error("load failed");let[I,Q]=await Promise.all([C.json(),E.json()]);n((I.provider_keys||[]).find(F=>F.provider===N3)||{configured:!1}),a(RC(Q));let $=(Q.sandboxes||[]).filter(F=>F.status==="ready");y($),h(F=>$.some(N=>N.session_id===F)?F:$[0]?.session_id||"")}catch{f("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,Mt.useEffect)(()=>{g()},[g]);let v=async()=>{if(!(!l.trim()||c)){d(!0),f(null);try{let C=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:N3,credential:l.trim()})});if(!C.ok){let E=await C.json().catch(()=>({}));throw new Error(Array.isArray(E.error)?E.error.join(", "):"Could not save the API key.")}s(!1),u(""),await g(),e?.()}catch(C){f(C.message)}finally{d(!1)}}},b=async()=>{if(await Wr({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/${N3}`,{method:"DELETE"})).ok)throw new Error("delete failed");await g(),e?.()}catch{f("Could not disconnect Claude Code.")}},S=t?"text-gray-400":"text-gray-500",w=YY(o,r),_=w.keyForm&&r?.configured,k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:S}[w.tone],A=`underline ${t?"text-gray-300":"text-gray-700"}`;return Mt.default.createElement("div",{className:"space-y-3"},Mt.default.createElement("div",{className:"flex items-center justify-between"},Mt.default.createElement("div",{className:"flex items-center space-x-3"},Mt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),Mt.default.createElement("div",null,Mt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),Mt.default.createElement("p",{className:`text-sm ${k}`},w.status))),w.keyForm&&Mt.default.createElement("div",{className:"flex items-center space-x-2"},_&&!i&&Mt.default.createElement("button",{onClick:b,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},w.view==="sandbox_login"?"Remove API key":"Disconnect"),Mt.default.createElement("button",{onClick:()=>{s(!i),u(""),f(null)},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},i?"Cancel":w.view==="sandbox_login"?_?"Update API key":"Add API key":w.needsReplacing?"Replace":_?"Update":"Connect")),w.view==="local_login"&&Mt.default.createElement("button",{onClick:()=>{f(null),g(),e?.()},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},"Check again")),w.view==="local_login"&&Mt.default.createElement("p",{className:`text-xs ${S}`},"Sessions run ",Mt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",w.loginHint&&Mt.default.createElement(Mt.default.Fragment,null,"Run ",Mt.default.createElement("code",{className:"font-mono"},w.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),w.needsReplacing&&!i&&Mt.default.createElement("p",{className:`text-xs ${t?"text-amber-300":"text-amber-700"}`},"The Claude subscription token stored here is no longer used: Anthropic does not allow third-party apps to hold Claude.ai credentials. Replace it with an Anthropic API key to run Claude Code sessions."),w.keyForm&&i&&Mt.default.createElement(Mt.default.Fragment,null,Mt.default.createElement("div",{className:"flex items-center space-x-2"},Mt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&v(),placeholder:KY,"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"}`}),Mt.default.createElement("button",{onClick:v,disabled:!l.trim()||c,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},c?"Saving\u2026":"Save")),Mt.default.createElement("p",{className:`text-xs ${S}`},"Paste an Anthropic API key from the"," ",Mt.default.createElement("a",{href:VY,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 (",Mt.default.createElement("a",{href:GY,target:"_blank",rel:"noreferrer",className:A},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),w.view==="sandbox_login"&&Mt.default.createElement("div",{className:"space-y-3"},m.length>0?Mt.default.createElement(Mt.default.Fragment,null,Mt.default.createElement("label",{className:`block text-xs ${S}`},"Sandbox",Mt.default.createElement("select",{"aria-label":"Claude subscription sandbox",value:x,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=>Mt.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===x)&&Mt.default.createElement(Qp,{key:x,sandbox:m.find(C=>C.session_id===x),onChange:()=>{g(),e?.()}})):Mt.default.createElement("p",{className:`text-sm ${S}`},"Start a checkout sandbox in ",Mt.default.createElement("a",{className:"underline",href:tt("/projects")},"Projects")," to connect your Claude subscription."),Mt.default.createElement("p",{className:`text-xs ${S}`},"Each member uses their own sandbox login. Sessions without a personal login use the account\u2019s Anthropic API key when one is connected.")),p&&Mt.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 Nr=Z(J());function O3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Nr.useState)(null),[o,a]=(0,Nr.useState)(null),[i,s]=(0,Nr.useState)(!1),[l,u]=(0,Nr.useState)(""),[c,d]=(0,Nr.useState)(!1),[p,f]=(0,Nr.useState)(null),m=(0,Nr.useCallback)(async()=>{let[w,_]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!w.ok||!_.ok)throw new Error("Could not load the Codex connection.");let[k,A]=await Promise.all([w.json(),_.json()]);n((k.provider_keys||[]).find(C=>C.provider==="codex")||{configured:!1}),a(e2(A))},[]);(0,Nr.useEffect)(()=>{m().catch(w=>f(w.message))},[m]);let y=async w=>{if(w.preventDefault(),!(c||!l.trim())){d(!0),f(null);try{let _=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:l.trim()})}),k=await _.json().catch(()=>({}));if(!_.ok)throw new Error(Array.isArray(k.error)?k.error.join(", "):k.error||"Could not save the API key.");u(""),s(!1),await m(),e?.()}catch(_){f(_.message)}finally{d(!1)}}},x=async()=>{if(await Wr({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(w){f(w.message)}finally{d(!1)}}},h=async()=>{f(null);try{await m(),e?.()}catch(w){f(w.message)}},g=t?"text-gray-400":"text-gray-500",v=`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-800"}`,b=JY(o,r),S={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:g}[b.tone];return Nr.default.createElement("div",{className:"space-y-3"},Nr.default.createElement("div",{className:"flex items-center justify-between gap-3"},Nr.default.createElement("div",null,Nr.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),Nr.default.createElement("p",{className:`text-sm ${S}`},b.status)),Nr.default.createElement("div",{className:"flex gap-2"},b.keyForm&&r?.configured&&!i&&Nr.default.createElement("button",{className:v,disabled:c,onClick:x},"Disconnect"),b.keyForm&&Nr.default.createElement("button",{className:v,disabled:c,onClick:()=>{s(!i),u(""),f(null)}},i?"Cancel":r?.configured?"Update":"Connect"),b.view==="local_login"&&Nr.default.createElement("button",{className:v,disabled:c,onClick:h},"Check again"))),b.view==="local_login"?Nr.default.createElement("p",{className:`text-xs ${g}`},"Sessions run ",Nr.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."," ",b.loginHint&&Nr.default.createElement(Nr.default.Fragment,null,"Run ",Nr.default.createElement("code",{className:"font-mono"},b.loginHint)," on this machine, as the user the dashboard runs as, then check again.")):Nr.default.createElement("p",{className:`text-sm ${g}`},"Run Codex in a repository checkout using an OpenAI API key. API usage is billed to that key's project."),b.keyForm&&i&&Nr.default.createElement("form",{onSubmit:y,className:"flex flex-wrap gap-2"},Nr.default.createElement("label",{className:`flex-1 text-sm ${g}`},"OpenAI API key for Codex",Nr.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:l,onChange:w=>u(w.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"}`})),Nr.default.createElement("button",{type:"submit",className:`${v} self-end`,disabled:c||!l.trim()},c?"Saving\u2026":"Save API key")),p&&Nr.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},p))}var UR=Z(J());var xn=Z(J());function P3({provider:e,title:t,description:r,credentialLabel:n,placeholder:o,onChange:a}){let{darkMode:i}=ut(),[s,l]=(0,xn.useState)(null),[u,c]=(0,xn.useState)(!1),[d,p]=(0,xn.useState)(""),[f,m]=(0,xn.useState)(!1),[y,x]=(0,xn.useState)(null),h=(0,xn.useCallback)(async()=>{let w=await fetch("/api/provider_keys");if(!w.ok)throw new Error(`Could not load the ${t} connection.`);let _=await w.json();l((_.provider_keys||[]).find(k=>k.provider===e)||{configured:!1})},[e,t]);(0,xn.useEffect)(()=>{h().catch(w=>x(w.message))},[h]);let g=async w=>{if(w.preventDefault(),!(f||!d.trim())){m(!0),x(null);try{let _=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,credential:d.trim()})}),k=await _.json().catch(()=>({}));if(!_.ok)throw new Error(Array.isArray(k.error)?k.error.join(", "):k.error||`Could not save the ${n}.`);p(""),c(!1),await h(),a?.()}catch(_){x(_.message)}finally{m(!1)}}},v=async()=>{if(await Wr({title:`Disconnect ${t}?`,message:`${t} will need its ${n} connected again.`,confirmLabel:"Disconnect",danger:!0})){m(!0),x(null);try{if(!(await fetch(`/api/provider_keys/${e}`,{method:"DELETE"})).ok)throw new Error(`Could not disconnect ${t}.`);await h(),a?.()}catch(w){x(w.message)}finally{m(!1)}}},b=i?"text-gray-400":"text-gray-500",S=`px-3 py-1 text-sm rounded ${i?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-800"}`;return xn.default.createElement("div",{className:"space-y-3"},xn.default.createElement("div",{className:"flex items-center justify-between gap-3"},xn.default.createElement("div",null,xn.default.createElement("p",{className:`font-medium ${i?"text-white":"text-gray-900"}`},t),xn.default.createElement("p",{className:`text-sm ${b}`},s==null?"Loading\u2026":s.configured?`Connected \xB7 ${s.hint}`:"Not connected")),xn.default.createElement("div",{className:"flex gap-2"},s?.configured&&!u&&xn.default.createElement("button",{className:S,disabled:f,onClick:v},"Disconnect"),xn.default.createElement("button",{className:S,disabled:f||s==null,onClick:()=>{c(!u),p(""),x(null)}},u?"Cancel":s?.configured?"Update":"Connect"))),xn.default.createElement("p",{className:`text-sm ${b}`},r),u&&xn.default.createElement("form",{onSubmit:g,className:"flex flex-wrap gap-2"},xn.default.createElement("label",{className:`flex-1 text-sm ${b}`},n,xn.default.createElement("input",{type:"password","data-aa-secret":"",autoComplete:"off",spellCheck:!1,value:d,onChange:w=>p(w.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"}`})),xn.default.createElement("button",{type:"submit",className:`${S} self-end`,disabled:f||!d.trim()},f?"Saving\u2026":"Save")),y&&xn.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},y))}function M3({onChange:e}){return UR.default.createElement(P3,{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 h2e=["profile","api-keys","integrations","notifications","billing"];function y2e(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:h2e.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function I3({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=ut(),[o]=(0,Oe.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:a,github:i,githubApp:s}]=(0,Oe.useState)(y2e),[l,u]=(0,Oe.useState)(a),[c,d]=(0,Oe.useState)(0),[p,f]=(0,Oe.useState)([]),[m,y]=(0,Oe.useState)([]),[x,h]=(0,Oe.useState)(!1),[g,v]=(0,Oe.useState)(""),[b,S]=(0,Oe.useState)(!1),[w,_]=(0,Oe.useState)(null),[k,A]=(0,Oe.useState)(!1),[C,E]=(0,Oe.useState)(null),I=(0,Oe.useCallback)(async()=>{try{let[T,D]=await Promise.all([fetch("/api/api_keys"),fetch(eA("/api/provider_keys",o))]);if(!T.ok||!D.ok)throw new Error("Failed to load keys");let M=await T.json(),K=await D.json();f(M.api_keys||[]),y(K.provider_keys||[]),E(null)}catch{E("Could not load API keys. Are you signed in?")}finally{h(!0)}},[o]);(0,Oe.useEffect)(()=>{l==="api-keys"&&!x&&I()},[l,x,I]);let Q=tA({onKeysChanged:I,onError:E,scope:o}),$=async()=>{if(!(!g.trim()||b)){S(!0),E(null);try{let T=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.trim()})});if(!T.ok)throw new Error("create failed");let D=await T.json();_(D.api_key),A(!1),v(""),await I()}catch{E("Could not create the API key.")}finally{S(!1)}}},F=async T=>{if(await Wr({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${T}`,{method:"DELETE"})).ok)throw new Error("delete failed");w&&w.id===T&&_(null),await I()}catch{E("Could not revoke the API key.")}},N=async T=>{try{await navigator.clipboard.writeText(T),A(!0),setTimeout(()=>A(!1),2e3)}catch{}},O={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return Oe.default.createElement("div",{className:"p-6 space-y-6"},Oe.default.createElement("div",null,Oe.default.createElement("h2",{className:`text-2xl font-bold ${r?"text-white":"text-gray-900"}`},"Settings"),Oe.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Oe.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Oe.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=>Oe.default.createElement("button",{key:T.id,onClick:()=>u(T.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${l===T.id?"border-red-500 text-red-500":`border-transparent ${r?"text-gray-400 hover:text-gray-300":"text-gray-500 hover:text-gray-700"}`}`},T.label)))),l==="profile"&&Oe.default.createElement("div",{className:"space-y-6"},Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Oe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Oe.default.createElement("div",null,Oe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Oe.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"}`})),Oe.default.createElement("div",null,Oe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Oe.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"}`})),Oe.default.createElement("div",{className:"md:col-span-2"},Oe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Oe.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"}`}))),Oe.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Oe.default.createElement("div",{className:"flex items-center justify-between"},Oe.default.createElement("div",null,Oe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Dark Mode"),Oe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Use dark theme across the dashboard")),Oe.default.createElement("button",{onClick:n,className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${r?"bg-red-500":"bg-gray-300"}`},Oe.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${r?"translate-x-6":"translate-x-1"}`}))))),l==="api-keys"&&Oe.default.createElement("div",{className:"space-y-6"},Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Oe.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Oe.default.createElement("div",{className:"flex items-center space-x-2"},Oe.default.createElement("input",{type:"text",value:g,onChange:T=>v(T.target.value),onKeyDown:T=>T.key==="Enter"&&$(),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"}`}),Oe.default.createElement("button",{onClick:$,disabled:!g.trim()||b,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},b?"Creating\u2026":"+ Create New Key"))),Oe.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"}`},Oe.default.createElement("p",{className:`text-sm ${r?"text-yellow-300":"text-yellow-800"}`},"\u26A0\uFE0F API keys are secrets. Never share them or commit them to version control.")),C&&Oe.default.createElement("div",{className:`p-4 rounded-lg mb-4 text-sm ${r?"bg-red-900/20 border border-red-800 text-red-300":"bg-red-50 border border-red-200 text-red-700"}`},C),w&&Oe.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"}`},Oe.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",w.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Oe.default.createElement("div",{className:"flex items-center space-x-2"},Oe.default.createElement("code",{"data-aa-secret":"",className:`flex-1 px-3 py-2 rounded text-sm font-mono break-all ${r?"bg-gray-900 text-green-300":"bg-white text-green-800 border border-green-200"}`},w.token),Oe.default.createElement("button",{onClick:()=>N(w.token),className:`px-3 py-2 text-sm rounded ${r?"bg-gray-700 text-gray-200 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},k?"Copied!":"Copy"),Oe.default.createElement("button",{onClick:()=>_(null),className:`px-3 py-2 text-sm rounded ${r?"text-gray-400 hover:text-gray-200":"text-gray-500 hover:text-gray-700"}`},"Dismiss"))),p.length===0?Oe.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Oe.default.createElement("p",null,x?"No API keys yet":"Loading\u2026"),x&&Oe.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Oe.default.createElement("div",{className:"space-y-2"},p.map(T=>Oe.default.createElement("div",{key:T.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Oe.default.createElement("div",null,Oe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.name),Oe.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},T.masked_token,Oe.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"))),Oe.default.createElement("button",{onClick:()=>F(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"))))),Oe.default.createElement(eb,{providerKeys:m,editor:Q,scope:o})),l==="integrations"&&Oe.default.createElement("div",{className:"space-y-6"},Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Oe.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."),Oe.default.createElement(E3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(T3,{onChange:()=>d(T=>T+1)})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(O3,{onChange:()=>d(T=>T+1)})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(M3,{onChange:()=>d(T=>T+1)}))),l==="notifications"&&Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Oe.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,D)=>Oe.default.createElement("div",{key:D,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Oe.default.createElement("div",null,Oe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},T.label),Oe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},T.desc)),Oe.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"}`},Oe.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${T.enabled?"translate-x-6":"translate-x-1"}`})))))),l==="billing"&&Oe.default.createElement("div",{className:"space-y-6"},Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Oe.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Oe.default.createElement("div",null,Oe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Oe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Oe.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Oe.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Oe.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")),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Oe.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var Xe=Z(J());var v2e=[{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."}],D3={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"},Xs={color:"var(--color-text-muted)",fontSize:12};function WR(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?tt(t):null}function x2e({card:e,onAsk:t,busy:r}){let n=WR(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Xe.default.createElement(ze,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Xe.default.createElement(Ce,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Xe.default.createElement(Ce,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Xe.default.createElement("span",{style:Xs},String(e.check_strength).replaceAll("_"," "))),Xe.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Xe.default.createElement("div",{style:{...Xs,fontFamily:H}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Xe.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Xe.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Xe.default.createElement("div",{style:Xs},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Xe.default.createElement("div",{style:Xs},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Xe.default.createElement("div",{style:Xs},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Xe.default.createElement("details",{style:Xs},Xe.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Xe.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Xe.default.createElement("li",{key:u},l)))),Xe.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Xe.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===tt("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Xe.default.createElement(pe,{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 b2e({draft:e,onReview:t}){return Xe.default.createElement(ze,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Xe.default.createElement(We,null,"Agent draft \xB7 not saved"),Xe.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Xe.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Xe.default.createElement("div",{style:{...Xs,fontFamily:H}},e.provider," / ",e.model),Xe.default.createElement("details",null,Xe.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Xe.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Xe.default.createElement("p",{style:Xs},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Xe.default.createElement(pe,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function j3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,Xe.useState)(null),[s,l]=(0,Xe.useState)(""),[u,c]=(0,Xe.useState)(!1),[d,p]=(0,Xe.useState)(null),[f,m]=(0,Xe.useState)(!1),y=(0,Xe.useRef)(null),x=(0,Xe.useRef)(null),h=(0,Xe.useRef)(e);h.current=e,(0,Xe.useEffect)(()=>{let k=new AbortController;return fetch("/api/dashboard_assistant",{signal:k.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})}),()=>{k.abort(),y.current?.abort()}},[]);let g=e.messages||[],v=e.provider||a?.defaults?.provider||"",b=e.model||"",S=a?.limits?.message_characters||8e3,w=a?.providers?.find(k=>k.id===v),_=async k=>{let A=k.trim();if(!A||u||!a||!o||!b.trim()||!f)return;let C=g.map(Q=>({role:Q.role,content:Q.content})).slice(-12);for(;C.reduce((Q,$)=>Q+$.content.length,0)>24e3;)C.shift();let E=[...g,{role:"user",content:A}];t({...e,messages:E}),l(""),p(null),c(!0);let I=new AbortController;y.current=I;try{let Q=await fetch("/api/dashboard_assistant",{method:"POST",signal:I.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:A,history:C,provider:v,model:b.trim(),allow_provider_processing:!0})}),$=await Q.json();if(!Q.ok){p({message:typeof $.error=="string"?$.error:"The assistant could not complete this request.",setup:$.setup_required,retry:A}),t({...e,messages:g}),l(A);return}t({...e,messages:[...E,{role:"assistant",content:$.answer,cards:$.cards||[],references:$.references||[],drafts:$.drafts||[],limitations:$.limitations||[]}]})}catch(Q){Q.name!=="AbortError"&&(p({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:g}),l(A))}finally{c(!1)}};return Xe.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Xe.default.createElement("div",null,Xe.default.createElement(We,null,"Workspace assistant"),Xe.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Xe.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),g.length>0&&Xe.default.createElement(pe,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!g.length&&Xe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},v2e.map(k=>Xe.default.createElement("button",{key:k.label,onClick:()=>{l(k.message),x.current?.querySelector("textarea")?.focus()},style:{textAlign:"left",padding:20,background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border)",borderRadius:12,cursor:"pointer"}},Xe.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},k.label," \u2197"),Xe.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},k.message)))),Xe.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((k,A)=>Xe.default.createElement("div",{key:A,style:{display:"grid",gap:12}},Xe.default.createElement(We,{color:k.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},k.role==="user"?"You":"ActiveAgents"),Xe.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},k.content),k.cards?.map(C=>Xe.default.createElement(x2e,{key:C.id,card:C,onAsk:E=>{l(E),x.current?.querySelector("textarea")?.focus()},busy:u})),k.references?.length>0&&Xe.default.createElement("div",{"aria-label":"Evidence references",style:{...Xs,display:"flex",gap:12,flexWrap:"wrap"}},k.references.map(C=>{let E=WR(C);return E&&Xe.default.createElement("a",{key:C.id,href:E,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},C.id)})),k.drafts?.map(C=>Xe.default.createElement(b2e,{key:C.id,draft:C,onReview:r})),k.limitations?.length>0&&Xe.default.createElement("details",{style:Xs},Xe.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Xe.default.createElement("ul",{style:{paddingLeft:18}},k.limitations.map((C,E)=>Xe.default.createElement("li",{key:E},C)))))),u&&Xe.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Xe.default.createElement(ze,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Xe.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Xe.default.createElement(pe,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Xe.default.createElement(ze,{padding:18},Xe.default.createElement("form",{ref:x,onSubmit:k=>{k.preventDefault(),_(s)},style:{display:"grid",gap:14}},Xe.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Xe.default.createElement("textarea",{id:"assistant-question",placeholder:"Ask about your evals, or describe an agent to build\u2026",value:s,onChange:k=>l(k.target.value),maxLength:S,rows:3,disabled:u,style:{...D3,resize:"vertical",boxSizing:"border-box"}}),Xe.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Xe.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Xe.default.createElement("select",{"aria-label":"Assistant provider",value:v,disabled:u||!a,onChange:k=>{let A=a.providers.find(C=>C.id===k.target.value);m(!1),t({...e,provider:A?.id||"",model:A?.default_model||""})},style:D3},Xe.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(k=>Xe.default.createElement("option",{key:k.id,value:k.id},k.id,k.configured?"":" \xB7 setup needed")))),Xe.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Xe.default.createElement("input",{"aria-label":"Assistant model",value:b,disabled:u||!a,maxLength:160,onChange:k=>{m(!1),t({...e,model:k.target.value})},style:D3})),Xe.default.createElement(pe,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!b.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Xe.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Xe.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:k=>m(k.target.checked),style:{marginTop:4}}),Xe.default.createElement("span",null,"Allow ",v||"the selected provider"," / ",b||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Xe.default.createElement("div",{style:{...Xs,lineHeight:1.5}},o?w&&!w.configured?"This provider needs a credential in Settings before the assistant can respond.":"Uses your configured model provider. Agent drafts are reviewed before saving.":"Agent execution is disabled on this dashboard."," ","Reloading or starting a new conversation clears this conversation view. Your provider's data retention settings still apply."))))}var ga=Z(J());var vt=Z(J());var ra=Z(J());function w2e(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 $3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,ra.useState)(r),a=w2e(t);return ra.default.createElement(Rr,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},ra.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"}},ra.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),ra.default.createElement("span",{"data-testid":"capabilities-summary"},a),ra.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&ra.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>ra.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)"}},ra.default.createElement(Na,{kind:i.ok?"pass":i.blocking?"fault":"info"}),ra.default.createElement("div",{style:{minWidth:0,flex:1}},ra.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},ra.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&ra.default.createElement(We,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&ra.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&ra.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:H,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var tn=Z(J());var HR={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:H,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,tn.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?nA(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return tn.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&tn.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=nA(s.name),c=s.useOrganizationKey?[]:oA(s.name,s.value);return tn.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},tn.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},tn.default.createElement("span",{style:{fontFamily:H,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&tn.default.createElement(Ce,{tone:"warning"},"required"),s.set&&tn.default.createElement(Ce,{tone:"success"},"set"),s.sources?.length>0&&tn.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&tn.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?tn.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):tn.default.createElement(tn.default.Fragment,null,!s.useOrganizationKey&&tn.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:{...HR,marginTop:6}}),s.organizationKey&&tn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},tn.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&&tn.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)"}},tn.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=>tn.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),tn.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},tn.default.createElement("div",{style:{flex:1}},tn.default.createElement(We,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),tn.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...HR,marginTop:4}}),i&&tn.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),tn.default.createElement(pe,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(bR(e,n)),o("")}},"Add")))}var qR={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 S2e({repository:e,preflight:t}){return t?vt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},vt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},vt.default.createElement("span",{style:{fontFamily:H,fontSize:13,color:"var(--color-text-primary)"}},e),vt.default.createElement(Ce,{tone:aA[t.status]||"muted"},t.summary)),vt.default.createElement("div",{style:{fontFamily:H,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=>vt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>vt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function L3({onCreated:e,onCancel:t}){let[r,n]=(0,vt.useState)(null),[o,a]=(0,vt.useState)(null),[i,s]=(0,vt.useState)(!1),[l,u]=(0,vt.useState)(""),[c,d]=(0,vt.useState)(null),[p,f]=(0,vt.useState)(null),[m,y]=(0,vt.useState)(null),[x,h]=(0,vt.useState)(!1),[g,v]=(0,vt.useState)([]),[b,S]=(0,vt.useState)(""),[w,_]=(0,vt.useState)(!1),[k,A]=(0,vt.useState)("/"),[C,E]=(0,vt.useState)(!1),[I,Q]=(0,vt.useState)(null),$=(0,vt.useCallback)(async()=>{let M=await fetch("/api/projects/capabilities"),K=await M.json().catch(()=>({}));if(!M.ok)throw new Error(ot(K,`Could not check what this dashboard can do (HTTP ${M.status}).`));return n(K),K},[]),F=(0,vt.useCallback)(async()=>{a(null);let M=await fetch("/api/github_connection/repositories"),K=await M.json().catch(()=>({}));if(K.reconnect_required){s(!0);return}if(!M.ok)throw new Error(ot(K,`Could not list repositories (HTTP ${M.status}).`));s(!1),a(K.repositories||[])},[]);(0,vt.useEffect)(()=>{$().then(M=>M.github?.connected?F():null).catch(M=>Q(M.message))},[$,F]);let N=(0,vt.useCallback)(async(M,{typed:K=!1}={})=>{Q(null),f(null),h(!0);try{let V=`repository=${encodeURIComponent(M)}`,L=await fetch(`/api/projects/preflight?${V}`),G=await L.json().catch(()=>({}));if(G.reconnect_required){s(!0);return}if(!L.ok){let Ie=ot(G,`Could not check ${M} (HTTP ${L.status}).`);K?f(Ie):Q(Ie);return}if(d(G.repository.full_name),y(G.preflight),S(Ie=>wR({name:Ie,edited:w,fullName:G.repository.full_name})),v([]),G.preflight.status==="unsupported")return;let W=await fetch(`/api/projects/discover_secrets?${V}`),ie=await W.json().catch(()=>({}));if(!W.ok)throw new Error(ot(ie,`Could not read ${M}'s environment variables (HTTP ${W.status}).`));v(tb(ie.variables||[]))}catch(V){Q(V.message)}finally{h(!1)}},[w]),O=async()=>{E(!0),Q(null);try{let M=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:b,start_url:k,secrets:rb(g)})}),K=await M.json().catch(()=>({}));if(!M.ok)throw new Error(ot(K,`Could not create the project (HTTP ${M.status}).`));e(K.project)}catch(M){Q(M.message)}finally{E(!1)}},j=r?.github,T=SR({github:j,repositories:o,reconnectRequired:i,pendingApproval:j?.pending_approval===!0}),D=x?"Checking the repository\u2026":kR({capabilities:r,preflight:m,secretsProblem:$h(g)});return vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},vt.default.createElement("div",{style:{flex:1}},vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),vt.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.")),vt.default.createElement(pe,{onClick:t},"Cancel")),I&&vt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},I),vt.default.createElement(ze,null,vt.default.createElement(We,null,"Repository"),vt.default.createElement("div",{style:{marginTop:8}},vt.default.createElement(bf,{mode:"single",state:T,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:M=>N(M),settingsHref:tt("/settings?tab=integrations"),missingRepositoryUrl:j?.access_settings_url,onRefresh:()=>F().catch(M=>Q(M.message)),onTypeName:M=>N(M,{typed:!0}),typedNameError:p})),m&&vt.default.createElement("div",{style:{marginTop:12}},vt.default.createElement(S2e,{repository:c,preflight:m}))),r&&vt.default.createElement($3,{capabilities:r}),m&&m.status!=="unsupported"&&vt.default.createElement(ze,null,vt.default.createElement(We,null,"Project"),vt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},vt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",vt.default.createElement("input",{type:"text",value:b,onChange:M=>{S(M.target.value),_(M.target.value!=="")},style:{...qR,marginTop:4}})),vt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",vt.default.createElement("input",{type:"text",value:k,onChange:M=>A(M.target.value),style:{...qR,marginTop:4,fontFamily:H}}))),vt.default.createElement("div",{style:{marginTop:16}},vt.default.createElement(We,null,"Secrets the boot needs"),vt.default.createElement("div",{style:{marginTop:8}},vt.default.createElement(ob,{rows:g,onChange:v,repository:c})))),vt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},D&&vt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},D),vt.default.createElement(pe,{variant:"primary",onClick:O,disabled:!!D||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var Ve=Z(J());var Lr=Z(J());var k2e={success:"success",error:"error",progress:"info",neutral:"muted"};function z3({project:e}){let[t,r]=(0,Lr.useState)(null),[n,o]=(0,Lr.useState)(null),[a,i]=(0,Lr.useState)(""),[s,l]=(0,Lr.useState)(!1),u=e.sandbox,c=e.sandbox_state==="ready"&&!!u?.session_id,d=(0,Lr.useCallback)(async()=>{let m=await fetch(`/api/interactions?project_id=${e.id}`),y=await m.json().catch(()=>({}));if(!m.ok){o(ot(y,`Could not list the conversations (HTTP ${m.status}).`));return}r(y.interactions||[])},[e.id]);(0,Lr.useEffect)(()=>{d()},[d]);let p=async m=>{m.preventDefault();let y=a.trim();if(!(!y||!c)){l(!0),o(null);try{let x=await fetch(`/api/sandboxes/${encodeURIComponent(u.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:y,origin:"chat"})}),h=await x.json().catch(()=>({}));if(!x.ok)throw new Error(ot(h,`The conversation did not start (HTTP ${x.status}).`));lt(fs(h.code_session.id))}catch(x){o(x.message),l(!1)}}},f={margin:0,fontSize:13,color:"var(--color-text-secondary)"};return Lr.default.createElement("div",{style:{display:"grid",gap:12},"data-testid":"project-sessions"},Lr.default.createElement(ze,null,Lr.default.createElement("form",{onSubmit:p,style:{display:"grid",gap:8}},Lr.default.createElement(We,{as:"label",htmlFor:`project-${e.id}-chat`},"Chat with Claude Code"),Lr.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)"}}),Lr.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8}},Lr.default.createElement("p",{style:f},"It edits the checkout and never commits or pushes. The conversation opens with the sandbox's browser beside it."),Lr.default.createElement(pe,{variant:"primary",type:"submit",disabled:!c||s||!a.trim(),testId:"project-start-conversation"},s?"Starting\u2026":"Start")),n&&Lr.default.createElement("p",{role:"alert",style:{...f,color:"var(--color-error-text)"}},n))),Lr.default.createElement(ze,null,Lr.default.createElement(We,null,"Conversations"),t===null&&!n&&Lr.default.createElement("p",{style:f},"Loading\u2026"),t?.length===0&&Lr.default.createElement("p",{style:f},"No conversations yet."),Lr.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0,display:"grid",gap:8}},(t||[]).map(m=>{let y=ps(m.status),x=fs(Zp(m.id));return Lr.default.createElement("li",{key:m.id},Lr.default.createElement("a",{href:tt(x),onClick:h=>{h.preventDefault(),lt(x)},style:{display:"grid",gap:2,textDecoration:"none",color:"var(--color-text-primary)"},"data-testid":"project-conversation"},Lr.default.createElement("span",{style:{display:"flex",gap:8,alignItems:"center"}},Lr.default.createElement(Ce,{tone:k2e[y.tone]||"muted"},y.label),Lr.default.createElement("span",{style:{fontSize:13}},m.preview?.input||m.display_name)),Lr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:H}},r2(m))))}))))}var sr=Z(J());function KR(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function B3(e){return(e?.options||[]).map(t=>{if(t&&typeof t=="object"){let r=String(t.value??t.label??"");return{value:r,label:String(t.label??r)}}return{value:String(t),label:String(t)}})}function VR(e,t){if(!e||e.kind==="confirm")return null;let r=typeof t=="string"?t:"";return r.trim()?e.kind==="secret"&&r.length<8?"A secret is at least 8 characters.":e.kind==="choice"&&!B3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function GR(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function YR(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 XR(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||F3(e)||(Number(e?.pending_input_requests)||0)>0}var _2e=6e4;function ZR(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<_2e}function F3(e){return["queued","running"].includes(e?.setup?.claude_code?.last_session?.status)}function JR(e){let t=e?.setup?.claude_code;if(!t)return null;let r=t.failed_step||"the failed step",n=t.last_session;return n?.status==="queued"?`Claude Code is starting on ${r}\u2026`:n?.status==="running"?`Claude Code is fixing ${r}\u2026`:t.resume_error?`Claude Code changed the checkout, but the boot did not resume: ${t.resume_error}`:n?.status==="succeeded"?e?.sandbox_state==="failed"?`Claude Code finished on ${r} without a change that got the boot through.`:`Claude Code fixed ${r} and the boot resumed.`:n?.status==="failed"?`Claude Code could not fix ${r}${n.error_message?`: ${n.error_message}`:"."}`:t.available?e?.setup?.auto===!1?"Claude Code fixes a failed boot when you ask for it.":"When a boot fails, Claude Code fixes the step that failed in its checkout, then the boot resumes.":`Claude Code does not fix failed boots here: ${t.reason||"it is not available"}.`}function U3(e){return!e?.setup?.claude_code?.available||e?.sandbox_state!=="failed"?!1:!F3(e)&&!["pending","running","awaiting_input"].includes(e.setup.last_run?.status)}function QR(e){let t=e?.setup;return!t?.available||e?.sandbox_state!=="failed"?!1:!F3(e)&&!["pending","running","awaiting_input"].includes(t.last_run?.status)}function RR(e=[]){let t={};for(let r of e)t[r.model]={filterable:new Set(r.filterable||[]),returns:new Set(r.returns||[])};return t}function eee(e,t,r,n){let o=e[t]||{filterable:new Set,returns:new Set},a={filterable:new Set(o.filterable),returns:new Set(o.returns)};a[r].has(n)?a[r].delete(n):a[r].add(n);let i={...e,[t]:a};return a.filterable.size===0&&a.returns.size===0&&delete i[t],i}function W3(e,t=[]){let r=new Map(t.map((n,o)=>[n.name,o]));return Object.keys(e).sort((n,o)=>(r.get(n)??1/0)-(r.get(o)??1/0)||n.localeCompare(o)).map(n=>{let o=(t.find(i=>i.name===n)?.columns||[]).map(i=>i.name),a=i=>[...i].sort((s,l)=>(o.indexOf(s)+1||1/0)-(o.indexOf(l)+1||1/0));return{model:n,filterable:a(e[n].filterable),returns:a(e[n].returns)}})}function tee(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(W3(e,r))!==n(t)}function ree(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 nee(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function oee(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 aee(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 iee(e){return e.json().catch(()=>({}))}function H3({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,sr.useState)(null),[a,i]=(0,sr.useState)({}),[s,l]=(0,sr.useState)(null),[u,c]=(0,sr.useState)(!1),d=e.schema_tools||[],p=(0,sr.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await iee(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(ot(y,`Could not list the app's models (HTTP ${m.status}).`));o(y.models||[]),i(RR(y.schema_tools||[]))},[e.id]);(0,sr.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=async(m,y=!1)=>{c(!0),l(null);try{let x=await fetch(`/api/projects/${e.id}/schema_tools`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema_tools:W3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await iee(x);if(x.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!x.ok)throw new Error(ot(h,`Could not save what the assistant may read (HTTP ${x.status}).`));t?.(h.project)}catch(x){l(x.message)}finally{c(!1)}};return sr.default.createElement(C2e,{listed:e.app_models_listed,models:n,selection:a,changed:n?tee(a,d,n):!1,busy:u,error:s,onToggle:(m,y,x)=>i(h=>eee(h,m,y,x)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function C2e({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,sr.useMemo)(()=>Object.keys(r||{}),[r]);return sr.default.createElement(Rr,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},sr.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&&sr.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&&sr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&sr.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 sr.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"}},sr.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},sr.default.createElement("span",{style:{fontFamily:H,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),sr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&sr.default.createElement(Ce,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),sr.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},sr.default.createElement("thead",null,sr.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},sr.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),sr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),sr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),sr.default.createElement("tbody",null,c.columns.map(p=>sr.default.createElement("tr",{key:p.name},sr.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:H,color:"var(--color-text-primary)"}},p.name," ",sr.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>sr.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},sr.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&&sr.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},sr.default.createElement(pe,{size:"sm",onClick:s,disabled:o||!n},"Save"),sr.default.createElement(pe,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var ei=Z(J());function q3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return ei.default.createElement(Rr,{title:"Boot",meta:KR(o)||n||"none",testId:"project-boot-progress"},a.length===0&&ei.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},n==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet."),a.length>0&&ei.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>ei.default.createElement("li",{key:i.name,"data-testid":`boot-step-${i.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},ei.default.createElement(Ce,{tone:AR[i.status]||"muted"},i.status),ei.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},_R(i.name)," ",ei.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},i.name)),ei.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),ei.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":CR(i.duration_ms))))),r&&ei.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&&ei.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},ei.default.createElement("div",{style:{padding:"6px 12px",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),ei.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:H,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Nl=Z(J());var see="/settings?tab=integrations";function K3({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=Nl.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=Nl.default.createElement(Nl.default.Fragment,null,Nl.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 ",Nl.default.createElement("span",{style:{fontFamily:H}},"browser:",o.session_id),"."),Nl.default.createElement(xf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Nl.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."),Nl.default.createElement(Rr,{title:"Browser",meta:Nl.default.createElement(vn,{href:tt(see),onClick:()=>lt(see)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Fn=Z(J());var A2e=e=>e?new Date(e).toLocaleString():"\u2014",E2e={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function V3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,Fn.useState)(null),[i,s]=(0,Fn.useState)(""),[l,u]=(0,Fn.useState)(!1),c=o?oA(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return Fn.default.createElement(Rr,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&Fn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&Fn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),Fn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>Fn.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Fn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},Fn.default.createElement("span",{style:{fontFamily:H,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),Fn.default.createElement(Ce,{tone:p.source==="organization_key"?"info":"muted"},E2e[p.source]?.(p)||"entered"),Fn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",A2e(p.updated_at)),Fn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&Fn.default.createElement(pe,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),Fn.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&Fn.default.createElement("div",{style:{marginTop:4,fontFamily:H,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&Fn.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("")})}},Fn.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:H,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Fn.default.createElement(pe,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Fn.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>Fn.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var Un=Z(J());var gd=Z(J());var N2e=["proposed","edited"],X3={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."}},uA={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},lee={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function cee(e){return e?.status==="pending"||e?.status==="running"}function cA(e){return N2e.includes(e.state)}function Z3(e=[],t=null){let r=e.filter(n=>cA(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function dee(e=[],t=[]){let r=new Set(t.filter(cA).map(n=>n.id));return e.filter(n=>r.has(n))}function uee(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function pee(e={},t={}){return Object.keys(lee).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:lee[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${uee(r,o)} / ${uee(r,n)}`}]})}function fee(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 mee({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 gee(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 G3(e){return(e||[]).join(", ")}function Y3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function hee(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:G3(t.tools),contains:G3(t.contains),not_contains:G3(t.not_contains)}}function yee(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:Y3(e.tools),contains:Y3(e.contains),not_contains:Y3(e.not_contains)}}function dA(e){return`/explorations/${e}`}function pA(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function wf({explorations:e,onOpen:t,selectedId:r=null}){return gd.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 gd.default.createElement(ze,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},gd.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},gd.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),gd.default.createElement(Ce,{tone:uA[n.status]||"muted"},n.status),gd.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),gd.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",xo(n.created_at))))}))}var _t=Z(J());var Sf=Z(J());function J3({budget:e,usage:t}){let r=pee(e,t);return r.length===0?null:Sf.default.createElement(Rr,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?vo.error:n.ratio>=.8?vo.warning:vo.info;return Sf.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},Sf.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),Sf.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Sf.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),Sf.default.createElement("span",{style:{fontFamily:H,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var It=Z(J());var T2e={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},Lh={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 zh({label:e,children:t}){return It.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function Q3({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,It.useState)(null),c=X3[e.verdict]||X3.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=fee(e),y=cA(e),x=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,yee(l))&&u(null)};return It.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}},It.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!y||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),It.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},It.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},It.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),It.default.createElement(Ce,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),It.default.createElement(Ce,{tone:T2e[e.state]||"muted"},e.state),e.group&&It.default.createElement(Ce,null,e.group),e.scenario_key&&It.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?It.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},It.default.createElement(zh,{label:"Prompt"},It.default.createElement("input",{style:Lh,value:l.prompt,onChange:x("prompt")})),It.default.createElement(zh,{label:"Rubric: what a good answer does (the judge grades against it)"},It.default.createElement("textarea",{style:{...Lh,minHeight:60},value:l.rubric,onChange:x("rubric")})),It.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},It.default.createElement(zh,{label:"Group"},It.default.createElement("input",{style:Lh,value:l.group,onChange:x("group")})),It.default.createElement(zh,{label:"Tools (comma-separated)"},It.default.createElement("input",{style:Lh,value:l.tools,onChange:x("tools")})),It.default.createElement(zh,{label:"Contains"},It.default.createElement("input",{style:Lh,value:l.contains,onChange:x("contains")})),It.default.createElement(zh,{label:"Does not contain"},It.default.createElement("input",{style:Lh,value:l.not_contains,onChange:x("not_contains")}))),It.default.createElement("div",{style:{display:"flex",gap:8}},It.default.createElement(pe,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),It.default.createElement(pe,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):It.default.createElement(It.default.Fragment,null,It.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)&&It.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:H,fontSize:11}},(d.tools||[]).map(g=>It.default.createElement(Ce,{key:g,tone:p.has(g)?"warning":"muted",title:p.has(g)?"The agent cannot call this tool":void 0},p.has(g)?`missing ${g}`:g)),(d.contains||[]).map(g=>It.default.createElement(Ce,{key:`c-${g}`},"contains \u201C",g,"\u201D")),(d.not_contains||[]).map(g=>It.default.createElement(Ce,{key:`n-${g}`},"not \u201C",g,"\u201D")))),i&&It.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)&&It.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},It.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),f.urls?.length>0&&It.default.createElement("div",{style:{marginTop:4,fontFamily:H,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&It.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((g,v)=>It.default.createElement("li",{key:v},g))),f.screenshots?.length>0&&It.default.createElement("div",{style:{marginTop:4,fontFamily:H,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&It.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&It.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&It.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&It.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>u(hee(e)),disabled:a},"Edit"),y&&It.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&It.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var R3={minutes:15,steps:150},vee={minutes:120,steps:1e3,cost:100},xee={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function wee(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:`${xee[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>vee[r])return{error:`${xee[r]} may be at most ${vee[r]}.`};t[r]=o}return{budget:t}}var bee={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 See(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&bee[t.code]?bee[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var O2e={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 kee(e){return e?O2e[e]||e:null}var P2e={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function _ee(e){return e?{tone:P2e[e.status]||"muted",text:e.message||e.status}:null}function Cee(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 ej(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function Aee(e){return e.json().catch(()=>({}))}var I2e={explorer:"explorer agent",external:"submitted from outside the dashboard"};function kf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,_t.useState)(null),[s,l]=(0,_t.useState)(null),[u,c]=(0,_t.useState)([]),[d,p]=(0,_t.useState)(!1),[f,m]=(0,_t.useState)(!1),[y,x]=(0,_t.useState)({}),[h,g]=(0,_t.useState)(null),[v,b]=(0,_t.useState)(null),S=(0,_t.useRef)(t);S.current=t;let w=(0,_t.useCallback)(async()=>{let M=await fetch(`/api/explorations/${e}`),K=await Aee(M);if(!M.ok)throw new Error(ot(K,`Could not load the exploration (HTTP ${M.status}).`));return i(K),S.current?.(K),K},[e]);(0,_t.useEffect)(()=>{w().catch(M=>l(M.message))},[w]);let _=a?.candidates||[];(0,_t.useEffect)(()=>{a&&c(M=>d?dee(M,_):Z3(_,a.preselect_limit))},[a,d]);let k=cee(a?.exploration);(0,_t.useEffect)(()=>{if(!k)return;let M=setInterval(()=>w().catch(K=>l(K.message)),3e3);return()=>clearInterval(M)},[k,w]),Ph("ExplorationChannel",{exploration_id:e},M=>{Mh(M)&&w().catch(()=>{})},!!e);let A=async(M,K,V)=>{m(!0),l(null);try{let L=await fetch(M,{method:K,headers:{"Content-Type":"application/json"},body:JSON.stringify(V||{})}),G=await Aee(L);return{res:L,data:G}}finally{m(!1)}},C=async(M,K)=>{let{res:V,data:L}=await A(`/api/explorations/${e}/candidates/${M}`,"PATCH",K);return V.ok?(x({...y,[M]:null}),await w(),!0):(x({...y,[M]:ot(L,`Could not save the candidate (HTTP ${V.status}).`)}),!1)},E=async(M,K)=>C(M,{state:K}),I=M=>{p(!0),c(K=>K.includes(M)?K.filter(V=>V!==M):[...K,M])},Q=async()=>{let M={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:K,data:V}=await A(`/api/explorations/${e}/accept`,"POST",M);return K.ok?(x({}),g({accepted:V.accepted,evaluation:r?null:V.evaluation,scenarioSet:V.scenario_set||null}),o?.(V),p(!1),i(V),S.current?.(V),V):(x(V.problems||{}),l(ot(V,`Could not accept the candidates (HTTP ${K.status}).`)),null)},$=async(M,K,{confirm:V=!1}={})=>{let L=K?`/api/projects/${K.id}/run_evaluation`:`/api/evaluations/${M.id}/run`,{res:G,data:W}=await A(L,"POST",V?{confirm:!0}:{});if(G.status===409&&W.code==="confirmation_required"){b({question:W.confirmation,evaluation:M,project:K});return}if(!G.ok){l(ot(W,`The scenarios were accepted, but the run did not start (HTTP ${G.status}).`));return}b(null),lt(`/evaluations/${W.run?.evaluation_id||M.id}/runs/${W.run.id}`)},F=async()=>{let M=await Q();M?.evaluation&&await $(M.evaluation,M.project)},N=async()=>{let{res:M,data:K}=await A(`/api/explorations/${e}/stop`,"POST");if(!M.ok&&M.status!==409){l(ot(K,`Could not stop the exploration (HTTP ${M.status}).`));return}await w()};if(!a)return s?_t.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):_t.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:O}=a,j=O.counts||{},T=mee({evaluation:a.evaluation,candidates:_,selectedIds:u}),D=Z3(_);return _t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(We,null,"Exploration ",O.id),_t.default.createElement(Ce,{tone:uA[O.status]||"muted",testId:"exploration-status"},O.status),_t.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},I2e[O.source]||O.source," \xB7 ",xo(O.created_at),O.start_url?` \xB7 from ${O.start_url}`:""),k&&_t.default.createElement(pe,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),O.stop_reason&&_t.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},kee(O.stop_reason)),O.error_message&&_t.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},O.error_message),_t.default.createElement(J3,{budget:O.budget,usage:O.usage}),s&&_t.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&_t.default.createElement(ze,{padding:12,testId:"exploration-accepted"},_t.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&&_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&_t.default.createElement(ze,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},_t.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),_t.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},_t.default.createElement(pe,{variant:"primary",onClick:()=>$(v.evaluation,v.project,{confirm:!0}),disabled:f},"Run it on this machine"),_t.default.createElement(pe,{onClick:()=>b(null)},"Cancel"))),_t.default.createElement(Rr,{title:"Found so far",meta:`${j.total||0} found \xB7 ${j.answerable||0} answerable \xB7 ${j.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},_.length===0?_t.default.createElement("div",{style:{padding:"12px 0",fontSize:13,color:"var(--color-text-secondary)"}},k?"Nothing yet. Candidates appear here as they are found.":"This exploration found nothing."):_t.default.createElement("ul",{style:{margin:0,padding:0}},_.map(M=>_t.default.createElement(Q3,{key:M.id,candidate:M,selected:u.includes(M.id),onToggle:I,onSave:C,onState:E,busy:f,problem:y?.[M.id]||y?.[String(M.id)],agentId:a.target_agent?.id})))),_.length>0&&_t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(D)},disabled:f},"Select every answerable"),_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&D.length>a.preselect_limit&&_t.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(pe,{variant:"primary",onClick:Q,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&_t.default.createElement(_t.default.Fragment,null,_t.default.createElement(pe,{onClick:F,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),_t.default.createElement("span",{style:{fontFamily:H,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},gee(T,a.runs_remaining))))))}var ti=Z(J());var D2e={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:H,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function ab({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,ti.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,ti.useState)(null),[s,l]=(0,ti.useState)(!1),{error:u,budget:c}=wee(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(See(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,y)=>ti.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},ti.default.createElement(We,null,m),ti.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:y,onChange:x=>o({...n,[f]:x.target.value}),"aria-label":m,style:D2e}));return ti.default.createElement(Rr,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},ti.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."),ti.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(R3.minutes)),p("steps","Browser steps",String(R3.steps)),p("cost","Cost cap ($)","none"),ti.default.createElement(pe,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&ti.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)&&ti.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var Yt=Z(J());var j2e={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:H,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},$2e=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],Eee=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 tj({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,Yt.useState)(null),[a,i]=(0,Yt.useState)(null),[s,l]=(0,Yt.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,Yt.useState)(null),[d,p]=(0,Yt.useState)(null),[f,m]=(0,Yt.useState)(null),[y,x]=(0,Yt.useState)(!1),h=(0,Yt.useCallback)(async()=>{let $=await _f(`/api/projects/${e}/sign_in`,"GET");o($.sign_in);let F=$.sign_in?.credentials;F&&l(N=>({...N,login_url:F.login_url||"",login:F.login||"",...F.fields})),i(N=>N||(F?"credentials":$.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,Yt.useEffect)(()=>{h().catch($=>p($.message))},[h]);let g=async $=>{x(!0),p(null),m(null);try{await $()}catch(F){p(F.message)}finally{x(!1)}},v=n?.credentials,{error:b,payload:S}=Cee(s,{passwordSaved:!!v?.password_set}),w=_ee(u),_=()=>g(async()=>{let $=await _f(`/api/projects/${e}/sign_in`,"PUT",S);o($.sign_in),l(F=>({...F,password:""})),m($.warnings?.length?$.warnings.map(F=>F.message).join(" "):"Saved. The explorer signs in with them.")}),k=()=>g(async()=>{let $=await _f(`/api/projects/${e}/sign_in/check`,"POST");c($.result),o($.sign_in)}),A=()=>g(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=()=>g(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.")}),E=()=>g(async()=>{await _f(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),I=()=>g(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.")}),Q=($,F,N="text",O="")=>Yt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},Yt.default.createElement(We,null,F),Yt.default.createElement("input",{type:N,autoComplete:"off",value:s[$],placeholder:O,onChange:j=>l({...s,[$]:j.target.value}),"aria-label":F,style:j2e}));return Yt.default.createElement(Rr,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Yt.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."),Yt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v&&Yt.default.createElement(Ce,{tone:"success"},"credentials saved ",Eee(v.updated_at)),n?.storage_state&&Yt.default.createElement(Ce,{tone:"success"},"browser sign-in saved ",Eee(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&Yt.default.createElement(Ce,null,"no sign-in")),Yt.default.createElement(ds,{options:$2e,value:a||"none",onChange:i}),a==="credentials"&&Yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Q("login_url","Login URL","text","/users/sign_in"),Q("login","Login","text","dev@example.com"),Q("password","Password","password",v?.password_set?"Saved; leave empty to keep it":"")),Yt.default.createElement("details",null,Yt.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},Q("login_field","Login field","text","#user_email"),Q("password_field","Password field","text","#user_password"),Q("submit_field","Submit button","text","button[type=submit]"))),Yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Yt.default.createElement(pe,{variant:"primary",size:"sm",onClick:_,disabled:y||!!b},"Save credentials"),Yt.default.createElement(pe,{size:"sm",onClick:k,disabled:y||!v||!r,testId:"sign-in-check"},"Check sign-in"),b&&Yt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},b))),a==="by_hand"&&Yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},Yt.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."),Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Yt.default.createElement(pe,{size:"sm",onClick:A,disabled:y||!r||n?.browser_running},"Open a browser window"),Yt.default.createElement(pe,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&Yt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:E,disabled:y},"Stop the browser"))),a==="none"&&(v||n?.storage_state)&&Yt.default.createElement("div",null,Yt.default.createElement(pe,{size:"sm",variant:"danger",onClick:I,disabled:y},"Remove the saved sign-in")),w&&Yt.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:vo[w.tone]?.text||"var(--color-text-secondary)"}},w.text),f&&Yt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&Yt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function rj({projectId:e,project:t,onCount:r}){let[n,o]=(0,Un.useState)(null),[a,i]=(0,Un.useState)(null),[s,l]=(0,Un.useState)(null),u=(0,Un.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,Un.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=Un.default.createElement(Un.default.Fragment,null,Un.default.createElement(ab,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),Un.default.createElement(tj,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return Un.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return Un.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return Un.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,Un.default.createElement(ze,{testId:"project-explorations-empty"},Un.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 Un.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,Un.default.createElement(wf,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),Un.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},Un.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(dA(p))},"Open on its own page")),Un.default.createElement(kf,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var dr=Z(J());var L2e={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function Nee(e){return e.json().catch(()=>({}))}function nj({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,dr.useState)(null),[i,s]=(0,dr.useState)(null),l=(0,dr.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await Nee(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,dr.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 Nee(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:dr.default.createElement(Rr,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&dr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>dr.default.createElement(z2e,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function z2e({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,dr.useState)(""),[a,i]=(0,dr.useState)(!1),[s,l]=(0,dr.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 dr.default.createElement(B2e,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",GR(e,c)),onDecline:()=>u("decline")})}function B2e({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=VR(e,r),u=`project-answer-${e.id}`;return dr.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)}},dr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},dr.default.createElement(Ce,{tone:e.kind==="secret"?"warning":"info"},L2e[e.kind]||e.kind),dr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),dr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:H,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),dr.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&dr.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)"}},dr.default.createElement("option",{value:""},"Choose\u2026"),B3(e).map(c=>dr.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&dr.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"?H:"inherit"}}),e.kind==="secret"&&dr.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."),dr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?dr.default.createElement(dr.default.Fragment,null,dr.default.createElement(pe,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),dr.default.createElement(pe,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):dr.default.createElement(dr.default.Fragment,null,dr.default.createElement(pe,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),dr.default.createElement(pe,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&dr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&dr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var Bt=Z(J());async function fA(e){return e.json().catch(()=>({}))}function oj({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,Bt.useState)(null),[i,s]=(0,Bt.useState)(null),[l,u]=(0,Bt.useState)(null),[c,d]=(0,Bt.useState)(0),[p,f]=(0,Bt.useState)(!1),m=(0,Bt.useCallback)(async()=>{let h=await fetch(n),g=await fA(h);if(!h.ok)throw new Error(ot(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,Bt.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await m();if(h)return;a(b),s(null),b.project&&t?.(b.project);let S=nee(b.pull_request);S&&(g=setTimeout(v,S))}catch(b){h||s(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[m,c]);let y=async h=>{f(!0),s(null);try{let g=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await fA(g);if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));d(b=>b+1)}catch(g){s(g.message)}finally{f(!1)}},x=o?.pull_request||null;return e.install_state==="installed"&&!x?null:Bt.default.createElement(Bt.default.Fragment,null,Bt.default.createElement(F2e,{project:e,pullRequest:x,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:y}),l&&Bt.default.createElement(U2e,{project:e,base:n,pullRequest:x,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function F2e({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=ree(t),{canOpen:c,canUpdate:d,openBranch:p}=oee(t);return Bt.default.createElement(ze,{testId:"project-install-pull-request"},Bt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Bt.default.createElement(We,null,"Install pull request"),Bt.default.createElement(Ce,{tone:u},l),t?.url&&Bt.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),Bt.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&Bt.default.createElement(pe,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Bt.default.createElement(pe,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&Bt.default.createElement(pe,{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"))),Bt.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&&Bt.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:H,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&Bt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&Bt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&Bt.default.createElement("details",{style:{marginTop:6}},Bt.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),Bt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:H,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>Bt.default.createElement("li",{key:f},f)))),o&&Bt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function U2e({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,Bt.useState)(null),[c,d]=(0,Bt.useState)(null),[p,f]=(0,Bt.useState)(!0),[m,y]=(0,Bt.useState)(null),[x,h]=(0,Bt.useState)(new Set),[g,v]=(0,Bt.useState)(s?r?.title||"":"Install ActiveAgent"),[b,S]=(0,Bt.useState)(""),[w,_]=(0,Bt.useState)(s&&r?.branch||""),[k,A]=(0,Bt.useState)(k2),[C,E]=(0,Bt.useState)(!1),[I,Q]=(0,Bt.useState)(0);(0,Bt.useEffect)(()=>{let F=!1,N=null;f(!0);let O=async(j=!1)=>{try{let T=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j?{confirm:!0}:{})}),D=await fA(T);if(F)return;if(T.status===409&&D.code==="confirmation_required"){o?.(D.confirmation,()=>O(!0));return}if(T.status===202){y(D.error),N=setTimeout(()=>O(),3e3);return}if(!T.ok)throw new Error(ot(D,`Could not read the sandbox's changes (HTTP ${T.status}).`));y(null),u(D.preview),d(D.publishing),h(C2(D.preview.files)),_(M=>M||D.preview.suggested_branch||""),f(!1)}catch(T){F||(y(T.message),f(!1))}};return O(),()=>{F=!0,clearTimeout(N)}},[t,I]);let $=async()=>{E(!0),y(null);try{let F=E2({files:l?.files,selection:x,title:g,body:b,branch:w,message:k,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F)}),O=await fA(N);if(!N.ok)throw _2(O.code)&&Q(j=>j+1),new Error(ot(O,`Could not publish (HTTP ${N.status}).`));i(O.pull_request)}catch(F){y(F.message)}finally{E(!1)}};return Bt.default.createElement(fD,{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:x,onToggle:F=>h(N=>A2(N,F)),fields:{title:g,body:b,branch:w,message:k,allowlist:""},onField:(F,N)=>({title:v,body:S,branch:_,message:A})[F]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:$,onCancel:a,patchHref:(F,N)=>aee(e.id,F,N)})}var ln=Z(J());var W2e={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},H2e={progress:"info",success:"success",error:"error",neutral:"muted"};function aj({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 ln.default.createElement(ze,{testId:"project-setup"},ln.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ln.default.createElement(We,null,"Setup"),ln.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},ln.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},ln.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&ln.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},ln.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ln.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&ln.default.createElement(Ce,{tone:"muted"},"not used"),l&&ln.default.createElement(Ce,{tone:H2e[ps(l.status).tone]||"muted"},ps(l.status).label),U3(e)&&n&&ln.default.createElement(pe,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),ln.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},JR(e)),l?.id&&ln.default.createElement("a",{href:tt(fs(l.id)),onClick:u=>{u.preventDefault(),lt(fs(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&&ln.default.createElement(g0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),ln.default.createElement("div",{style:{marginTop:12}},ln.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},ln.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&ln.default.createElement(Ce,{tone:"muted"},"unavailable"),i&&ln.default.createElement(Ce,{tone:W2e[i.status]||"muted"},i.status.replace("_"," ")),ln.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&ln.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),QR(e)&&ln.default.createElement(pe,{size:"sm",variant:U3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),ln.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},YR(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."),ln.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 Tee="/settings?tab=integrations",q2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},K2e={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function Zs(e){return e.json().catch(()=>({}))}function ij({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,Ve.useState)(null),[a,i]=(0,Ve.useState)(null),[s,l]=(0,Ve.useState)([]),[u,c]=(0,Ve.useState)(()=>TR(window.location.search)),[d,p]=(0,Ve.useState)(!1),[f,m]=(0,Ve.useState)(null),[y,x]=(0,Ve.useState)(null),[h,g]=(0,Ve.useState)(null),[v,b]=(0,Ve.useState)(!1),[S,w]=(0,Ve.useState)(null),[_,k]=(0,Ve.useState)(null),[A,C]=(0,Ve.useState)(null),E=(0,Ve.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/boot`),Y=await Zs(P);if(!P.ok)throw new Error(ot(Y,`Could not load the project (HTTP ${P.status}).`));o(Y.project),i(Y)},[e]),I=(0,Ve.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/secrets`),Y=await Zs(P);if(!P.ok)throw new Error(ot(Y,`Could not list the project's secrets (HTTP ${P.status}).`));l(Y.secrets||[])},[e]);(0,Ve.useEffect)(()=>{E().catch(P=>m(P.message)),I().catch(P=>x(P.message))},[E,I]);let Q=P=>{c(P),P!=="browser"&&p(!1);let{pathname:Y,search:B}=window.location;window.history.replaceState(window.history.state,"",`${Y}${OR(B,P)}`)},$=n?.sandbox_state==="failed",[F,N]=(0,Ve.useState)(null);(0,Ve.useEffect)(()=>{N($?Date.now():null)},[$,n?.sandbox?.session_id]);let O=ER(n),j=O||XR(n)||ZR(n,F);(0,Ve.useEffect)(()=>{if(!j)return;let P=setTimeout(()=>E().catch(Y=>m(Y.message)),xR);return()=>clearTimeout(P)},[j,a,E]);let T=n?.sandbox?.session_id;Ph("SandboxChannel",{session_id:T},P=>{Mh(P)&&E().catch(()=>{})},!!T);let D=async(P,{confirm:Y=!1,onDone:B}={})=>{b(!0),m(null);try{let se=await fetch(P,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Y?{confirm:!0}:{})}),ne=await Zs(se);if(se.status===409&&ne.code==="confirmation_required")return g({question:ne.confirmation,retry:()=>D(P,{confirm:!0,onDone:B})}),null;if(!se.ok)throw new Error(ot(ne,`The request failed (HTTP ${se.status}).`));return g(null),ne.project&&o(ne.project),await E(),B?.(ne),ne}catch(se){return m(se.message),null}finally{b(!1)}},M=()=>D(`/api/projects/${e}/run_evaluation`,{onDone:P=>{P.run&&w(P.run)}}),K=(P,Y)=>g({question:P,retry:Y}),V=async(P,Y,B="setup")=>{b(!0),m(null);try{let se=await fetch(`/api/projects/${e}/${B}`,{method:P,headers:{"Content-Type":"application/json"},body:JSON.stringify(Y||{})}),ne=await Zs(se);if(!se.ok)throw new Error(ot(ne,`The setup request failed (HTTP ${se.status}).`));ne.project&&o(ne.project),await E()}catch(se){m(se.message)}finally{b(!1)}},L=async()=>{m(null);let P=await fetch(`/api/projects/${e}/synced_agents`),Y=await Zs(P);if(!P.ok){m(ot(Y,`Could not list the checkout's agents (HTTP ${P.status}).`));return}k(Y.synced_agents||[])},G=async P=>{b(!0);try{let Y=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(P)}),B=await Zs(Y);if(!Y.ok)throw new Error(ot(B,`Could not choose the agent (HTTP ${Y.status}).`));o(B.project),k(null)}catch(Y){m(Y.message)}finally{b(!1)}},W=async P=>{x(null);let Y=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:P})}),B=await Zs(Y);return Y.ok?(l(B.secrets||[]),!0):(x(ot(B,`Could not save the secrets (HTTP ${Y.status}).`)),!1)},ie=async(P,Y)=>{x(null);let B=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(P)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:Y})}),se=await Zs(B);if(!B.ok){let ne=ot(se,`Could not replace ${P} (HTTP ${B.status}).`);throw x(ne),new Error(ne)}await I()},Ie=async P=>{x(null);let Y=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(P)}`,{method:"DELETE"});if(!Y.ok){x(ot(await Zs(Y),`Could not delete ${P} (HTTP ${Y.status}).`));return}await I()},ge=async()=>{x(null);let P=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,Y=await fetch(`/api/projects/discover_secrets?${P}`),B=await Zs(Y);if(!Y.ok){x(ot(B,`Could not read the repository's environment variables (HTTP ${Y.status}).`));return}C(tb(B.variables||[],s))},ce=async()=>{if(!await Wr({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 P=await fetch(`/api/projects/${e}`,{method:"DELETE"});P.ok?r():m(ot(await Zs(P),`Could not delete the project (HTTP ${P.status}).`))};if(!n)return f?Ve.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):Ve.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let R=a?.browser_modes||[],ee=PR(n,R),z=P=>{P&&p(!0),Q("browser")},te=n.target_agent,U=!te&&n.install_state==="installed";return Ve.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},Ve.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},Ve.default.createElement("div",{style:{flex:1,minWidth:260}},Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),Ve.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),Ve.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},Ve.default.createElement("span",{style:{fontFamily:H,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),Ve.default.createElement(Ce,{tone:q2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),Ve.default.createElement(Ce,{tone:aA[n.install_state==="installed"?"supported":"bootstrap"]},K2e[n.install_state]),Ve.default.createElement(vn,{href:tt(Tee),onClick:()=>lt(Tee),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),Ve.default.createElement("div",{style:{display:"flex",gap:8}},Ve.default.createElement(pe,{onClick:()=>D(`/api/projects/${e}/boot`),disabled:v||O,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":O?"Booting\u2026":"Boot sandbox"),ee&&Ve.default.createElement(pe,{onClick:()=>z(ee.watch),testId:"project-watch-live"},ee.label),Ve.default.createElement(pe,{variant:"primary",onClick:()=>M(),disabled:v||!te,testId:"run-project-evaluation",title:te?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&Ve.default.createElement(ze,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},Ve.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),Ve.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Ve.default.createElement(pe,{variant:"primary",onClick:()=>{let{retry:P}=h;g(null),P?.()},disabled:v},"Run it on this machine"),Ve.default.createElement(pe,{onClick:()=>g(null)},"Cancel"))),f&&Ve.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),Ve.default.createElement(ds,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${ej(s).length})`},...R.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[],{value:"sessions",label:"Sessions"}],value:u,onChange:Q}),u==="overview"&&Ve.default.createElement(Ve.default.Fragment,null,Ve.default.createElement(q3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),Ve.default.createElement(nj,{projectId:e,setupAgentId:n.setup?.agent_id,version:`${n.pending_input_requests}:${n.setup?.last_run?.id}:${n.setup?.last_run?.status}`,onSettled:()=>E().catch(()=>{})}),Ve.default.createElement(aj,{project:n,busy:v,onAsk:()=>V("POST"),onFixWithClaudeCode:()=>V("POST",null,"setup/claude_code"),onToggleAuto:P=>V("PATCH",{auto:P})}),Ve.default.createElement(ze,null,Ve.default.createElement(We,null,"Agent under evaluation"),te&&Ve.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Ve.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},te.name),Ve.default.createElement(Ce,{tone:"accent"},te.kind==="app_assistant"?"App assistant":`synced agent ${te.synced_agent}`),Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${te.id}/edit`)},"Open agent"),n.evaluation&&Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&Ve.default.createElement(pe,{size:"sm",onClick:L},"Change")),U&&!_&&Ve.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.",Ve.default.createElement("div",{style:{marginTop:8}},Ve.default.createElement(pe,{size:"sm",onClick:L,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),_&&Ve.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},_.length===0&&Ve.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),_.map(P=>Ve.default.createElement("li",{key:P.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},Ve.default.createElement("span",{style:{fontFamily:H,fontSize:13}},P.tool),Ve.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},P.description),Ve.default.createElement(pe,{size:"sm",onClick:()=>G({synced_agent:P.slug}),disabled:v},"Evaluate this agent")))),S&&Ve.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",S.id," is ",S.status,O?": it starts once the sandbox is ready":"","."," ",Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${S.evaluation_id}/runs/${S.id}`)},"Open run"))),te?.kind==="app_assistant"&&Ve.default.createElement(H3,{project:n,onSaved:P=>{P&&o(P),E().catch(()=>{})},onConfirmationRequired:K}),Ve.default.createElement(oj,{project:n,onProjectChanged:P=>o(Y=>Y&&P.install_state!==Y.install_state?P:Y),onConfirmationRequired:K}),Ve.default.createElement("div",null,Ve.default.createElement(pe,{variant:"danger",size:"sm",onClick:ce},"Delete project"))),u==="explorations"&&Ve.default.createElement(rj,{projectId:e,project:n}),u==="browser"&&Ve.default.createElement(K3,{project:n,modes:R,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="sessions"&&Ve.default.createElement(z3,{project:n}),u==="environment"&&Ve.default.createElement(Ve.default.Fragment,null,Ve.default.createElement(V3,{secrets:ej(s),onReplace:ie,onDelete:Ie,error:y}),A?Ve.default.createElement(ze,null,Ve.default.createElement(We,null,"Add secrets"),Ve.default.createElement("div",{style:{marginTop:8}},Ve.default.createElement(ob,{rows:A,onChange:C,repository:n.repository})),Ve.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},Ve.default.createElement(pe,{variant:"primary",disabled:!!$h(A)||rb(A).length===0,onClick:async()=>{await W(rb(A))&&C(null)}},"Save secrets"),Ve.default.createElement(pe,{onClick:()=>C(null)},"Cancel"),$h(A)&&Ve.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},$h(A)))):Ve.default.createElement("div",null,Ve.default.createElement(pe,{size:"sm",onClick:ge},"Add secrets"))))}var ma=Z(J());var V2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function sj({projects:e,onOpen:t,onNew:r}){return ma.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},ma.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},ma.default.createElement("div",{style:{flex:1}},ma.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),ma.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.")),ma.default.createElement(pe,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&ma.default.createElement(ze,null,ma.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=>ma.default.createElement(ze,{key:n.id,padding:14,testId:`project-${n.id}`},ma.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},ma.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),ma.default.createElement("span",{style:{fontFamily:H,fontSize:12,color:"var(--color-text-muted)"}},n.repository),ma.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},ma.default.createElement(Ce,{tone:V2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&ma.default.createElement(Ce,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function lj({visit:e=0}){let[t,r]=(0,ga.useState)(()=>nb(Jn())),[n,o]=(0,ga.useState)(null),[a,i]=(0,ga.useState)(null);(0,ga.useEffect)(()=>{r(nb(Jn()))},[e]),(0,ga.useEffect)(()=>{let u=()=>r(nb(Jn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,ga.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,ga.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{od(u),r(nb(u))};return t.creating?ga.default.createElement(L3,{onCreated:u=>l(vf(u.id)),onCancel:()=>l("/projects")}):t.projectId?ga.default.createElement(ij,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?ga.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?ga.default.createElement(sj,{projects:n,onOpen:u=>l(vf(u.id)),onNew:()=>l(vf(null))}):ga.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Gr=Z(J());function uj({visit:e=0}){let[t,r]=(0,Gr.useState)(()=>pA(Jn())),[n,o]=(0,Gr.useState)(null),[a,i]=(0,Gr.useState)(null),[s,l]=(0,Gr.useState)(null);(0,Gr.useEffect)(()=>{r(pA(Jn()))},[e]),(0,Gr.useEffect)(()=>{let c=()=>r(pA(Jn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Gr.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,Gr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Gr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Gr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Gr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(vf(c.id)),style:{padding:0}},"\u2190 ",c.name):Gr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Gr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${d.id}`)},"Open ",d.name)),Gr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Gr.default.createElement(kf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Gr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Gr.default.createElement("div",null,Gr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Gr.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&&Gr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Gr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Gr.default.createElement(ze,null,Gr.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&&Gr.default.createElement(wf,{explorations:n,onOpen:c=>lt(dA(c.id))}))}var xt=Z(J());var ye=Z(J());var ri=Z(J());var cj=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?H:void 0}),Oee={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},Pee=e=>typeof e=="string"?e:void 0;function bn({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,ri.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":Pee(e),"data-testid":s};return ri.default.createElement("div",{style:Oee},ri.default.createElement("label",{htmlFor:l},e),a?ri.default.createElement("textarea",{...u,rows:i,style:{...cj(o),resize:"vertical"}}):ri.default.createElement("input",{...u,style:cj(o)}))}function hd({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,ri.useId)();return ri.default.createElement("div",{style:Oee},ri.default.createElement("label",{htmlFor:a},e),ri.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":Pee(e),style:cj(!1),"data-testid":o},n))}function ib({label:e,checked:t,onChange:r}){return ri.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},ri.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function ha({tone:e="info",children:t}){let r=e==="error";return ri.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 Qn(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 Mee(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var G2e=["collections","generate","import"],Y2e=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function dj(e=""){let r=String(e).match(Y2e)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function Iee({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!G2e.includes(e)?"/scenarios":`/scenarios/${e}`}function pj(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 mA(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function Dee(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 jee(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:mA(e.tools),contains:mA(e.contains),not_contains:mA(e.notContains)},tags:mA(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function $ee(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 Lee(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 X2e=["create","update","remove","keep"],Z2e={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function zee(e){let t=e?.changes||[];return X2e.map(r=>({action:r,label:Z2e[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function Bee(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 Fee(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function Uee(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function fj({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,ye.useState)(null),[u,c]=(0,ye.useState)(null),[d,p]=(0,ye.useState)(null),[f,m]=(0,ye.useState)({productIds:[],setIds:[],scenarioIds:[]}),[y,x]=(0,ye.useState)(!1),[h,g]=(0,ye.useState)(!1),v=`/api/scenario_catalogs/${e}`,b=(0,ye.useCallback)(async()=>{try{let E=await Qn(v,{fallback:"Could not open the collection"});l(E.catalog),c(null)}catch(E){c(E.message)}},[v]);(0,ye.useEffect)(()=>{b()},[b]);let S=async(E,I,Q,$)=>{let F=await Qn(`${v}${E}`,{method:I,body:Q,fallback:$});return F.catalog?l(F.catalog):await b(),a?.(),F},w=async E=>{c(null),p(null);try{await E()}catch(I){c(I.message)}},_=f.productIds.length+f.setIds.length+f.scenarioIds.length,k=(E,I)=>m(Q=>({...Q,[E]:Uee(Q[E],I)})),A=E=>w(async()=>{let I=await Mee(pj(e,E,{inline:!0})),Q=await w2(I);p(Q?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(pj(e,E),"_blank");return s?ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ye.default.createElement(J2e,{collection:s,onCancel:()=>x(!1),onSave:async E=>{await S("","PATCH",{catalog:E},"Could not save the collection"),x(!1)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},ye.default.createElement("div",null,ye.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),ye.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},ye.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),ye.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")),ye.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>x(!0)},"Rename"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>A({})},"Copy YAML"),n&&ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>w(async()=>{await S("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>w(async()=>{await Wr({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 Qn(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ye.default.createElement(ha,{tone:"error"},u),d&&ye.default.createElement(ha,null,d),_>0&&ye.default.createElement(ze,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},_," selected"),ye.default.createElement(pe,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>A(f)},"Copy YAML"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),ye.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&&ye.default.createElement(ze,{testId:"scenarios-collection-empty"},ye.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No products yet. A product is what its sets run against: an agent, or a project whose booted app the replays reach.")),(s.products||[]).map(E=>ye.default.createElement(Q2e,{key:E.id,product:E,collection:s,agents:t,projects:r,selection:f,onToggle:k,change:S,act:w,setNotice:p})),h?ye.default.createElement(Hee,{agents:t,projects:r,onCancel:()=>g(!1),onSave:async E=>{await S("/products","POST",{product:E},"Could not add the product"),g(!1)}}):ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ye.default.createElement(ha,{tone:"error"},u):ye.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function J2e({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(e.name||""),[a,i]=(0,ye.useState)(e.description||"");return ye.default.createElement(gA,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ye.default.createElement(bn,{label:"Name",value:n,onChange:o}),ye.default.createElement(bn,{label:"Description",value:a,onChange:i}))}function Q2e({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,ye.useState)(!1),[d,p]=(0,ye.useState)(!1),f=`/products/${e.id}`;return ye.default.createElement(ze,{testId:"scenarios-product"},u?ye.default.createElement(Hee,{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)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},ye.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}}),ye.default.createElement("div",null,ye.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ye.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},ye.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&&ye.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),ye.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await Wr({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"))),ye.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>ye.default.createElement(R2e,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?ye.default.createElement(qee,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function R2e({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,ye.useState)((e.scenarios||[]).length<=5),[p,f]=(0,ye.useState)(!1),[m,y]=(0,ye.useState)(null),x=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,g]=(0,ye.useState)(x),v=`/sets/${e.id}`,b=()=>l(async()=>{let[S,w]=h.split(":"),_=S==="project"?{project_id:Number(w)}:S==="agent"?{agent_id:Number(w)}:{},k=await Qn(`/api/scenario_catalogs/${r.id}${v}/run`,{method:"POST",body:_,fallback:"The run could not start"});u(`Run #${k.run.id} of ${e.name} started; it shows under Evaluations as ${k.evaluation.name}.`)});return ye.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?ye.default.createElement(qee,{set:e,onCancel:()=>f(!1),onSave:async S=>{await s(v,"PATCH",{set:S},"Could not save the set"),f(!1)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ye.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),ye.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&ye.default.createElement(Ce,null,`judge ${e.judge.kind}`),e.evaluation&&ye.default.createElement("a",{href:"#",style:{fontSize:12},onClick:S=>{S.preventDefault(),lt(`/evaluations/${e.evaluation.id}`)}},"evaluation",e.latest_run?` (latest run ${e.latest_run.status})`:"")),ye.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("select",{value:h,onChange:S=>g(S.target.value),style:{fontSize:12,padding:4,borderRadius:6,border:"1px solid var(--color-border)",background:"var(--color-surface)",color:"var(--color-text-primary)"}},ye.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&ye.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(S=>ye.default.createElement("option",{key:`project-${S.id}`,value:`project:${S.id}`},S.name))),n.length>0&&ye.default.createElement("optgroup",{label:"Agents"},n.map(S=>ye.default.createElement("option",{key:`agent-${S.id}`,value:`agent:${S.id}`},S.name)))),ye.default.createElement(pe,{size:"sm",onClick:b,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>d(S=>!S)},c?"Hide":"Scenarios"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await Wr({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(v,"DELETE",void 0,"Could not delete the set")})},"Delete"))),c&&ye.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(S=>m===S.id?ye.default.createElement("li",{key:S.id},ye.default.createElement(Wee,{scenario:S,onCancel:()=>y(null),onSave:async w=>{await s(`${v}/scenarios/${S.id}`,"PATCH",w,"Could not save the scenario"),y(null)}})):ye.default.createElement(eAe,{key:S.id,scenario:S,selected:a.scenarioIds.includes(S.id),onToggle:()=>i("scenarioIds",S.id),onEdit:()=>y(S.id),onDelete:()=>l(async()=>{await Wr({title:`Delete scenario ${S.key}?`,confirmLabel:"Delete scenario",danger:!0})&&await s(`${v}/scenarios/${S.id}`,"DELETE",void 0,"Could not delete the scenario")})})),ye.default.createElement("li",null,m==="new"?ye.default.createElement(Wee,{onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios`,"POST",S,"Could not add the scenario"),y(null)}}):ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function eAe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=Lee(e.expectations);return ye.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},ye.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),ye.default.createElement("div",{style:{flex:1,minWidth:0}},ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},ye.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&ye.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&ye.default.createElement("span",{style:{fontFamily:H}},a)),ye.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>ye.default.createElement(Ce,{key:i},i)),e.production_only&&ye.default.createElement(Ce,{tone:"warning"},"production only"),!e.enabled&&ye.default.createElement(Ce,null,"disabled"))),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:n},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function gA({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,ye.useState)(!1),[s,l]=(0,ye.useState)(null);return ye.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&&ye.default.createElement(ha,{tone:"error"},s),ye.default.createElement("div",{style:{display:"flex",gap:8}},ye.default.createElement(pe,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function Hee({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,ye.useState)(e?.name||""),[s,l]=(0,ye.useState)(e?.key||""),[u,c]=(0,ye.useState)(e?.description||""),[d,p]=(0,ye.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,ye.useState)(e?.project?String(e.project.id):"");return ye.default.createElement(gA,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(bn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ye.default.createElement(bn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(hd,{label:"Agent",value:d,onChange:p},ye.default.createElement("option",{value:""},"None"),t.map(y=>ye.default.createElement("option",{key:y.id,value:y.id},y.name))),ye.default.createElement(hd,{label:"Project",value:f,onChange:m},ye.default.createElement("option",{value:""},"None"),r.map(y=>ye.default.createElement("option",{key:y.id,value:y.id},y.name)))),ye.default.createElement(bn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function qee({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(e?.name||""),[a,i]=(0,ye.useState)(e?.key||""),[s,l]=(0,ye.useState)(e?.description||""),[u,c]=(0,ye.useState)(e?.judge?.kind||"");return ye.default.createElement(gA,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(bn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ye.default.createElement(bn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(hd,{label:"Judge",value:u,onChange:c},ye.default.createElement("option",{value:""},"The evaluation's default"),ye.default.createElement("option",{value:"rules"},"Rules (expectations only)"),ye.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),ye.default.createElement(bn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function Wee({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(()=>Dee(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ye.default.createElement(gA,{onCancel:r,onSave:()=>t(jee(n)),problem:$ee(n),testId:"scenarios-scenario-form"},ye.default.createElement(bn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ye.default.createElement(bn,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(bn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ye.default.createElement(bn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ye.default.createElement(bn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ye.default.createElement(bn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ye.default.createElement(bn,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),ye.default.createElement("div",{style:{display:"flex",gap:16}},ye.default.createElement(ib,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ye.default.createElement(ib,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Et=Z(J());function mj({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,Et.useState)(""),[a,i]=(0,Et.useState)(null),[s,l]=(0,Et.useState)(null),[u,c]=(0,Et.useState)({sandbox:null,modes:[]}),[d,p]=(0,Et.useState)([]),[f,m]=(0,Et.useState)(null),[y,x]=(0,Et.useState)({collectionId:"",setId:""}),[h,g]=(0,Et.useState)(null),[v,b]=(0,Et.useState)(null),S=(0,Et.useCallback)(async()=>{if(n)try{let[E,I,Q,$]=await Promise.all([Qn(`/api/projects/${n}`,{fallback:"Could not load the project"}),Qn("/api/projects/capabilities").catch(()=>({})),Qn("/api/sandboxes").catch(()=>({})),Qn(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),F=E.project;i(F),l((I.items||[]).find(O=>O.key==="model_credentials")||null);let N=F?.sandbox?.session_id;c({sandbox:(Q.sandboxes||[]).find(O=>O.session_id===N)||null,modes:Q.browser_modes||[]}),p($.explorations||[]),b(null)}catch(E){b(E.message)}},[n]);(0,Et.useEffect)(()=>{i(null),m(null),S()},[S]),(0,Et.useEffect)(()=>{if(!y.collectionId){g(null);return}Qn(`/api/scenario_catalogs/${y.collectionId}`).then(E=>g(E.catalog)).catch(E=>b(E.message))},[y.collectionId]);let w=(h?.products||[]).flatMap(E=>(E.sets||[]).map(I=>({...I,product:E}))),_=w.find(E=>String(E.id)===String(y.setId)),k=async()=>{try{let I=(await Qn("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,Q=await Qn(`/api/scenario_catalogs/${I}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),$=await Qn(`/api/scenario_catalogs/${I}/products/${Q.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),x({collectionId:String(I),setId:String($.set.id)})}catch(E){b(E.message)}},A=a?.sandbox_state==="ready",C=f||d[0]?.id;return Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},Et.default.createElement(ze,null,Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Et.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."),Et.default.createElement(hd,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},Et.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.name))),e.length===0&&Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/projects/new")}},"Create one")," from a repository first."))),v&&Et.default.createElement(ha,{tone:"error"},v),a&&Et.default.createElement(Et.default.Fragment,null,s&&!s.ok&&Et.default.createElement(ha,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!A&&Et.default.createElement(ha,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Et.default.createElement(ab,{projectId:a.id,sandboxReady:A,onStarted:E=>{m(E.id),S()}}),A&&u.sandbox&&u.modes.length>0&&Et.default.createElement(Rr,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Et.default.createElement(xf,{sandbox:u.sandbox,modes:u.modes})),Et.default.createElement(Rr,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},Et.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Et.default.createElement(hd,{label:"Collection",value:y.collectionId,onChange:E=>x({collectionId:E,setId:""})},Et.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.name))),Et.default.createElement(hd,{label:"Set",value:y.setId,onChange:E=>x(I=>({...I,setId:E}))},Et.default.createElement("option",{value:""},h&&w.length===0?"The collection has no sets yet":"Choose a set\u2026"),w.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.product.name," / ",E.name)))),Et.default.createElement("div",null,Et.default.createElement(pe,{size:"sm",variant:"ghost",onClick:k},"New collection for ",a.name))),d.length===0?Et.default.createElement(ze,null,Et.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.")):Et.default.createElement(Et.default.Fragment,null,Et.default.createElement(wf,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!_&&Et.default.createElement(ha,null,"Choose the set to accept into, above."),Et.default.createElement(kf,{key:`${C}-${_?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:_?{id:_.id,label:`${_.product.name} / ${_.name}`}:null,onAccepted:()=>r?.()}))))}var Kt=Z(J());var tAe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],rAe=`catalog: support_desk + api_key: <%= ENV["ACTIVEAGENTS_API_KEY"] %>`),Oe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Oe.default.createElement("div",{className:"min-w-0 flex-1"},Oe.default.createElement("p",{className:`text-xs uppercase tracking-wide mb-1 ${o?"text-gray-500":"text-gray-400"}`},"API Key"),Oe.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))),Oe.default.createElement("div",{className:"flex gap-2 flex-shrink-0 self-end"},Oe.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"),Oe.default.createElement("button",{onClick:U,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&&Oe.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Pe=Z(Q());var Ke=Z(Q());var g2e=/^[A-Za-z_][A-Za-z0-9_]*$/,h2e=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,y2e={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},v2e=["sk_live_","rk_live_"],CR=8,AR=2e3;function uA(e){return e?g2e.test(e)?h2e.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 cA(e,t){let r=[],n=typeof t=="string"?t:"";return v2e.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||y2e[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function ER(e,t){return[...e,...ib([{name:t}])]}function NR({name:e,edited:t,fullName:r}){return t?e:r}function sb(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 Fh(e){for(let t of e){let r=uA(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 TR({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 M3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function x2e(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function OR({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=x2e(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 dA={supported:"success",bootstrap:"info",unsupported:"error"};function PR(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 MR(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 IR={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function DR(e){return e?.sandbox_state==="booting"}function wf(e){return e==null?"/projects/new":`/projects/${e}`}function lb(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var jR=["overview","explorations","environment","browser","sessions"];function $R(e=""){let t=new URLSearchParams(e).get("tab");return jR.includes(t)?t:"overview"}function LR(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!jR.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function pA(e){if(!e?.project?.id)return null;let t=wf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function zR(e,t=[]){return e?.sandbox_state!=="ready"||!e.sandbox?.session_id||t.length===0?null:e.sandbox.browser?.status==="running"?{label:"Watch live",watch:!0}:{label:"Open browser",watch:!1}}var Mn=Z(Q());function Sf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,Mn.useState)(e.browser||null),[s,l]=(0,Mn.useState)(!1),[u,c]=(0,Mn.useState)(null),[d,p]=(0,Mn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,Mn.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(_,A,C)=>{c(_),p(null);try{let E=await fetch(f,A),I=await E.json().catch(()=>({}));if(I.browser&&(i(I.browser),n?.(I.browser)),!E.ok)throw new Error(I.message||ot(I,`${C} (HTTP ${E.status}).`))}catch(E){p(E.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(qX({inWindow:s,modes:t}))},"Could not start the browser"),x=()=>m("stop",{method:"DELETE"},"Could not stop the browser"),h=o?"text-gray-400":"text-gray-500",g=o?"text-white":"text-gray-900",v=o?"border-gray-700":"border-gray-200",b=`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,k=WX(a),S=HX(a),w=a?.status==="running";return Mn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},Mn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Mn.default.createElement("div",{className:"flex items-center gap-2"},Mn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),k&&Mn.default.createElement(Ks,{tone:k.tone},k.label)),S?Mn.default.createElement("button",{type:"button",onClick:x,disabled:u!==null,className:b},u==="stop"?"Stopping\u2026":"Stop browser"):Mn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&Mn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},Mn.default.createElement("input",{type:"checkbox",checked:s,onChange:_=>l(_.target.checked),disabled:u!==null}),"Open a window on this machine"),Mn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:b},u==="start"?"Starting\u2026":"Start browser"))),d&&Mn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!S&&!d&&Mn.default.createElement("p",{className:`text-xs ${h}`},"A browser of this sandbox's own, opened on its app and recorded. Agent runs against the sandbox can drive it."),w&&a.server_key&&Mn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",Mn.default.createElement("code",{className:"font-mono"},a.server_key),"."),w&&a.live_url&&Mn.default.createElement(w0,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),w&&!a.live_url&&Mn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var tr=Z(Q());var un=Z(Q());function BR(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function fA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var FR={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 kf({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(),[y,x]=(0,un.useState)(""),[h,g]=(0,un.useState)(!1),v=m?"text-gray-400":"text-gray-500",b=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=BR(e,n);(0,un.useEffect)(()=>{if(!h||!d)return;let C=()=>{g(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let _=c?un.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>g(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,A=p?un.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),M3(y)&&p(y)}},un.default.createElement("input",{type:"text",value:y,onChange:C=>x(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:S,"data-testid":"repo-picker-typed-name"}),un.default.createElement("button",{type:"submit",disabled:!M3(y),className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return un.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},un.default.createElement("p",{className:`text-sm ${v}`},FR[l]||FR.loading),C&&un.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&un.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${b}`},"Check again"),l==="empty"&&_,l==="empty"&&A,f&&un.default.createElement("p",{className:"text-sm text-red-500"},f))}return un.default.createElement("div",{className:"space-y-2"},un.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:S}),un.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},w.map(C=>un.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:k},a==="single"?un.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):un.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),un.default.createElement("span",{className:`text-sm font-mono ${b}`},C.full_name),C.private&&un.default.createElement("span",{className:`text-xs ${v}`},"private"))),w.length===0&&un.default.createElement("p",{className:`text-sm ${v}`},"No repositories match.")),(_||A)&&un.default.createElement("div",{className:"space-y-2"},_,A,f&&un.default.createElement("p",{className:"text-sm text-red-500"},f)))}var UR={linked:{tone:"success",text:"GitHub App installation linked. Choose the repositories this workspace may use on it."},pending:{tone:"success",text:"Installation requested. Once an owner of the organization approves it on GitHub, that owner has to link it from this page."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub App return expired or was not started here. Try again from this page."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try again."},missing_installation:{tone:"error",text:"GitHub did not say which installation to link. Try installing again."},not_found:{tone:"error",text:"Your GitHub account cannot reach that installation, so it was not linked."},not_admin:{tone:"error",text:"Only the account the App is installed on, or an admin of its organization, can link an installation."},taken:{tone:"error",text:"That installation is already linked to another workspace."},not_configured:{tone:"error",text:"No GitHub App is configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub App."},manifest_error:{tone:"error",text:"GitHub did not finish creating the App. Try again."},manifest_unavailable:{tone:"error",text:"Creating a GitHub App is not available on this dashboard."},error:{tone:"error",text:"Could not finish linking the GitHub App. Try again."}};function WR(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function mA(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 HR(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>mA(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 qR(e,t){let r=new Map;return(t||[]).forEach(n=>{mA(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 KR(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function VR(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function GR(e,t,r){let n=e.createElement("form");n.method="post",n.action=t,n.style.display="none";let o=e.createElement("input");return o.type="hidden",o.name="manifest",o.value=JSON.stringify(r),n.appendChild(o),e.body.appendChild(n),n.submit(),n}function I3({app:e,onChanged:t,onError:r,onNotice:n}){let{darkMode:o}=ut(),[a,i]=(0,tr.useState)(null),[s,l]=(0,tr.useState)(null),[u,c]=(0,tr.useState)(new Set),[d,p]=(0,tr.useState)(""),[f,m]=(0,tr.useState)(!1),[y,x]=(0,tr.useState)(null),[h,g]=(0,tr.useState)(""),[v,b]=(0,tr.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"},E=async D=>{r(null);try{let O=await fetch(`/api/github_installations/${D.id}/repositories`),j=await O.json().catch(()=>({}));if(!O.ok)throw j.reinstall_required&&t(),new Error(j.error||"Could not list the installation's repositories.");l(j.repositories||[]),c(new Set((D.repositories||[]).map(M=>M.full_name))),p(""),i(D.id)}catch(O){r(O.message)}},I=async D=>{x(D.id),r(null);try{let O=await fetch(`/api/github_installations/${D.id}/repositories`),j=await O.json().catch(()=>({}));if(!O.ok)throw new Error(j.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${D.account_login} is active again.`})}catch(O){r(O.message)}finally{x(null),t()}},J=()=>{i(null),l(null)},$=async()=>{m(!0),r(null);try{let D=await fetch(`/api/github_installations/${a}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...u]})}),O=await D.json().catch(()=>({}));if(!D.ok)throw new Error(O.error||"Could not save the selection.");J(),n({tone:"success",text:"Repository selection saved."}),t()}catch(D){r(D.message)}finally{m(!1)}},U=async D=>{if(await Wr({title:`Unlink @${D.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 O=await fetch(`/api/github_installations/${D.id}`,{method:"DELETE"});if(!O.ok&&O.status!==404)throw new Error("Could not unlink the installation.");a===D.id&&J(),t()}catch(O){r(O.message)}}},N=async()=>{let D=h.trim();if(D&&!VR(D)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}b(!0),r(null);try{let O=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D?{organization:D}:{})}),j=await O.json().catch(()=>({}));if(!O.ok)throw new Error(j.error||"Could not start creating the GitHub App.");GR(document,j.url,j.manifest)}catch(O){r(O.message),b(!1)}};if(!e.configured)return tr.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:w},tr.default.createElement("p",{className:`text-sm font-medium ${S}`},"Use a GitHub App"),tr.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."),tr.default.createElement("div",{className:"flex items-center gap-2"},tr.default.createElement("input",{type:"text",value:h,onChange:D=>g(D.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"}`}),tr.default.createElement("button",{type:"button",onClick:N,disabled:v,className:`${_} disabled:opacity-50`},v?"Opening GitHub\u2026":"Create GitHub App")));let T=e.installations||[];return tr.default.createElement("div",{className:"space-y-3"},tr.default.createElement("div",{className:"flex items-center justify-between"},tr.default.createElement("div",null,tr.default.createElement("p",{className:`text-sm font-medium ${S}`},"GitHub App"),tr.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.")),tr.default.createElement("a",{href:Re("/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")),T.length===0&&tr.default.createElement("p",{className:`text-sm ${k}`},"No installation is linked yet. Install the App on the repositories this workspace should use."),T.map(D=>{let O=mA(D),j=D.repositories||[];return tr.default.createElement("div",{key:D.id,className:"p-3 rounded-lg space-y-2",style:w},tr.default.createElement("div",{className:"flex items-center justify-between gap-3"},tr.default.createElement("div",{className:"min-w-0"},tr.default.createElement("p",{className:`text-sm font-mono ${S}`},WR(D)),tr.default.createElement("p",{className:`text-xs ${O?C[O.tone]:k}`},O?O.label:`${j.length} selected for sandboxes`)),tr.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===D.id?tr.default.createElement(tr.default.Fragment,null,tr.default.createElement("button",{type:"button",onClick:J,className:_},"Cancel"),tr.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})`)):tr.default.createElement(tr.default.Fragment,null,O?tr.default.createElement("button",{type:"button",onClick:()=>I(D),disabled:y===D.id,className:`${_} disabled:opacity-50`},y===D.id?"Checking\u2026":"Check again"):tr.default.createElement("button",{type:"button",onClick:()=>E(D),className:_},"Choose repositories"),D.settings_url&&tr.default.createElement("a",{href:D.settings_url,target:"_blank",rel:"noreferrer",className:_},"Access on GitHub"),tr.default.createElement("button",{type:"button",onClick:()=>U(D),className:A},"Unlink")))),a===D.id&&s&&tr.default.createElement(kf,{repositories:s,selection:u,onToggle:M=>c(H=>fA(H,M)),filter:d,onFilterChange:p}))}))}var w2e={connected:{tone:"success",text:"GitHub connected. Choose the repositories this workspace may use."},denied:{tone:"error",text:"GitHub authorization was cancelled."},invalid_state:{tone:"error",text:"That GitHub sign-in expired or was not started here. Try connecting again."},missing_code:{tone:"error",text:"GitHub did not return an authorization code. Try connecting again."},not_configured:{tone:"error",text:"GitHub OAuth is not configured on this dashboard."},forbidden:{tone:"error",text:"You do not have permission to change the GitHub connection."},error:{tone:"error",text:"Could not finish connecting GitHub. Try again."}};function D3({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,Ke.useState)(null),[i,s]=(0,Ke.useState)(null),[l,u]=(0,Ke.useState)(new Set),[c,d]=(0,Ke.useState)(""),[p,f]=(0,Ke.useState)(!1),[m,y]=(0,Ke.useState)(null),[x,h]=(0,Ke.useState)(w2e[e]||UR[t]||null),[g,v]=(0,Ke.useState)([]),[b,k]=(0,Ke.useState)(null),[S,w]=(0,Ke.useState)({}),[_,A]=(0,Ke.useState)(null),[C,E]=(0,Ke.useState)(null),[I,J]=(0,Ke.useState)(0),[$,U]=(0,Ke.useState)({}),N=(0,Ke.useRef)({}),T=(0,Ke.useCallback)(async()=>{try{let ve=await fetch("/api/github_connection");if(!ve.ok)throw new Error("status failed");let ce=await ve.json();a(ce),u(new Set((ce.connection?.repositories||[]).map(Ue=>Ue.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,Ke.useEffect)(()=>{T()},[T]);let D=(0,Ke.useCallback)(async()=>{try{let ve=await fetch("/api/sandboxes?sandbox_type=app_runtime"),ce=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ot(ce,`Could not list your sandboxes (HTTP ${ve.status}).`));v(ce.sandboxes||[]),k({codeSessions:!!ce.code_sessions_supported,claudeCode:{...a2(ce),sandboxes:ce.claude_code_sandboxes||[]},codex:i2(ce),pullRequests:ce.pull_requests_supported===!0,browserModes:Array.isArray(ce.browser_modes)?ce.browser_modes:[]})}catch(ve){y(ve.message)}},[]),O=o!==null,j=!!o?.connected;(0,Ke.useEffect)(()=>{O&&D()},[O,j,D,r]);let M=g.filter(ve=>r2(ve)&&!$[ve.session_id]?.stopped).map(ve=>ve.session_id).join(" ");(0,Ke.useEffect)(()=>{if(!M)return;let ve=!1,ce=setTimeout(async()=>{let Ue=await Promise.all(M.split(" ").map(async nt=>{try{let Tt=await fetch(`/api/sandboxes/${encodeURIComponent(nt)}`);if(Tt.status===404)return{id:nt,gone:!0};let Lt=await Tt.json().catch(()=>({}));return Tt.ok?{id:nt,sandbox:Lt.sandbox||null}:{id:nt,status:Tt.status,error:ot(Lt,`Could not check on this sandbox (HTTP ${Tt.status}).`)}}catch{return{id:nt,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(ve)return;let Je={};Ue.forEach(({id:nt,status:Tt,error:Lt})=>{if(!Lt){delete N.current[nt],Je[nt]=null;return}let Hr=(N.current[nt]||0)+1;N.current[nt]=Hr,Je[nt]={message:Lt,stopped:RC(Tt,Hr)}}),U(nt=>Object.entries(Je).reduce((Tt,[Lt,Hr])=>{if(Hr)return{...Tt,[Lt]:Hr};if(!(Lt in Tt))return Tt;let{[Lt]:Io,...vs}=Tt;return vs},nt)),v(nt=>Ue.reduce((Tt,Lt)=>Lt.gone?Tt.filter(Hr=>Hr.session_id!==Lt.id):Lt.sandbox?BY(Tt,Lt.sandbox,"session_id"):Tt,nt)),J(nt=>nt+1)},2e3);return()=>{ve=!0,clearTimeout(ce)}},[M,I]);let H=ve=>{delete N.current[ve],U(ce=>{let{[ve]:Ue,...Je}=ce;return Je})},G=(ve,ce)=>{w(Ue=>({...Ue,[ve]:ce}))},z=async()=>{y(null);try{let ve=await fetch("/api/github_connection/repositories"),ce=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ce.error||"Could not list repositories.");s(ce.repositories||[])}catch(ve){y(ve.message)}},V=ve=>{u(ce=>fA(ce,ve))},K=async()=>{f(!0),y(null);try{let ve=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),ce=await ve.json().catch(()=>({}));if(!ve.ok)throw new Error(ce.error||"Could not save the selection.");a(Ue=>({...Ue,connection:ce.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(ve){y(ve.message)}finally{f(!1)}},ie=async()=>{if(await Wr({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 T()}catch{y("Could not disconnect GitHub.")}},Ie=async ve=>{A(ve),G(ve,null);try{let ce=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:ve})}),Ue=await ce.json().catch(()=>({}));if(!ce.ok)throw new Error(ot(Ue,`Could not start the sandbox (HTTP ${ce.status}).`));v(Je=>id(Je,Ue.sandbox,"session_id"))}catch(ce){G(ve,ce.message)}finally{A(null)}},ge=async ve=>{if(!(ve.status!=="failed"&&!await Wr({title:"Stop this sandbox?",message:"Its app stops and its checkout is deleted, including any changes Claude Code made there.",confirmLabel:"Stop sandbox",danger:!0}))){E(ve.session_id),G(ve.repository,null);try{let ce=await fetch(`/api/sandboxes/${encodeURIComponent(ve.session_id)}`,{method:"DELETE"}),Ue=await ce.json().catch(()=>({}));if(!ce.ok&&ce.status!==404)throw new Error(ot(Ue,`Could not stop the sandbox (HTTP ${ce.status}).`));v(Je=>Je.filter(nt=>nt.session_id!==ve.session_id)),H(ve.session_id)}catch(ce){G(ve.repository,ce.message)}finally{E(null)}}},de=n?"text-gray-400":"text-gray-500",R=n?"text-white":"text-gray-900",ee={backgroundColor:n?"#252525":"#f9fafb"},L=`px-3 py-1 text-sm rounded ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,te=o?.connection,F=te?.repositories||[],P=o?.app?.configured?o.app.installations||[]:[],Y=qR(te,P),{byRepository:B,others:oe}=UY(g,Y.map(ve=>ve.full_name)),ne=P.length>0,he=HR(P),tt=n?"text-red-400":"text-red-600",it=(ve,{standalone:ce=!1}={})=>{let{label:Ue,tone:Je}=DY(ve.status),nt=r2(ve),Tt=jY(ve),Lt=Tt?IY(ve.expires_at):null,Hr=nt?$[ve.session_id]:null;return Ke.default.createElement("div",{key:ve.session_id,className:ce?"p-3 rounded-lg space-y-2":`mt-3 pt-3 border-t space-y-2 ${n?"border-gray-700":"border-gray-200"}`,style:ce?ee:void 0},Ke.default.createElement("div",{className:"flex items-center justify-between gap-3"},Ke.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},Ke.default.createElement(Ks,{tone:Je},Ue),Ke.default.createElement("span",{className:`font-mono truncate ${de}`},ce?ve.repository:"","@",ve.repository_ref),Lt&&Ke.default.createElement("span",{className:`shrink-0 ${de}`},"\xB7 ",Lt),pA(ve)&&Ke.default.createElement("a",{href:Re(pA(ve)),onClick:Io=>{Io.preventDefault(),lt(pA(ve))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:ve.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",ve.project.name," \u2192")),Ke.default.createElement("button",{onClick:()=>ge(ve),disabled:C===ve.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===ve.session_id?"Stopping\u2026":ve.status==="failed"?"Dismiss":"Stop")),nt&&!Hr?.stopped&&Ke.default.createElement("p",{className:`text-xs ${de}`},"Checking out the repository and booting its app; this can take a few minutes."),Hr&&Ke.default.createElement("p",{className:`text-xs ${tt}`},Hr.message," ",Hr.stopped?Ke.default.createElement(Ke.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",Ke.default.createElement("button",{type:"button",onClick:()=>H(ve.session_id),className:"underline"},"Retry")):"Trying again\u2026"),ve.error_message&&Ke.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"}`},ve.error_message),ve.runtime_server_key&&Ke.default.createElement("p",{className:`text-xs ${de}`},"Enable ",Ke.default.createElement("code",{className:"font-mono"},ve.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),Tt&&b?.codeSessions&&Ke.default.createElement(x0,{sandbox:ve,claudeCode:b.claudeCode?.mode==="sandbox_login"?{...b.claudeCode,connected:!!b.claudeCode.sandboxes.find(Io=>Io.session_id===ve.session_id)?.credential_mode}:b.claudeCode,codex:b.codex,onRecheckConnection:D}),Tt&&b&&!b.codeSessions&&Ke.default.createElement("p",{className:`text-xs ${de}`},"The configured sandbox backend cannot run Claude Code sessions."),Tt&&b?.pullRequests&&Ke.default.createElement(W0,{sandbox:ve}),Tt&&b?.browserModes.length>0&&Ke.default.createElement(Sf,{sandbox:ve,modes:b.browserModes}))};return Ke.default.createElement("div",{className:"space-y-4"},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",{className:"flex items-center space-x-3"},Ke.default.createElement("span",{className:"text-xl"},"\u{1F419}"),Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`font-medium ${R}`},"GitHub"),Ke.default.createElement("p",{className:`text-sm ${o?.connected||he.active>0?n?"text-green-400":"text-green-600":de}`},o?[o.connected?`Connected as @${te.login}`:null,he.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?Ke.default.createElement("button",{onClick:ie,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?Ke.default.createElement("a",{href:Re("/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&&Ke.default.createElement("p",{className:`text-sm ${de}`},"The operator has not configured a GitHub OAuth app. Set ",Ke.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",Ke.default.createElement("code",null,"github_client_secret")," (or ",Ke.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",Ke.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",Ke.default.createElement("code",null,Re("/api/github_connection/callback"))," as its callback URL."),x&&Ke.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${x.tone==="success"?n?"bg-green-900/20 border-green-800 text-green-300":"bg-green-50 border-green-200 text-green-800":n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},x.text),m&&Ke.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),Ke.default.createElement(I3,{app:o?.app,onChanged:T,onError:y,onNotice:h}),o?.connected&&Ke.default.createElement("div",{className:"space-y-3"},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},"OAuth connection"),Ke.default.createElement("p",{className:`text-xs ${de}`},F.length," selected for sandboxes, cloned with @",te.login,"'s token.")),i?Ke.default.createElement("div",{className:"flex items-center space-x-2"},Ke.default.createElement("button",{onClick:()=>{s(null),u(new Set(F.map(ve=>ve.full_name)))},className:L},"Cancel"),Ke.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})`)):Ke.default.createElement("button",{onClick:z,className:L},"Choose repositories")),i&&Ke.default.createElement(kf,{repositories:i,selection:l,onToggle:V,filter:c,onFilterChange:d})),(o?.connected||ne)&&!i&&Ke.default.createElement("div",{className:"space-y-3"},Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},"Available repositories"),Y.length===0?Ke.default.createElement("p",{className:`text-sm ${de}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):Ke.default.createElement("div",{className:"space-y-2"},Y.map(ve=>{let ce=B[ve.full_name]||[],Ue=ce.some(r2),Je=o.app?.configured?` \xB7 via ${KR(ve)}`:"";return Ke.default.createElement("div",{key:ve.full_name,className:"p-3 rounded-lg",style:ee},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("p",{className:`text-sm font-mono ${R}`},ve.full_name),Ke.default.createElement("p",{className:`text-xs ${de}`},ve.private?"private":"public"," \xB7 ",ve.default_branch,Je)),Ke.default.createElement("button",{onClick:()=>Ie(ve.full_name),disabled:_===ve.full_name||Ue,className:`${L} disabled:opacity-50`},_===ve.full_name?"Starting\u2026":Ue?"Booting\u2026":"Start sandbox")),S[ve.full_name]&&Ke.default.createElement("p",{className:`mt-2 text-xs ${tt}`},S[ve.full_name]),ce.map(nt=>it(nt)))}))),!i&&oe.length>0&&Ke.default.createElement("div",{className:"space-y-2"},Ke.default.createElement("p",{className:`text-sm font-medium ${R}`},j||ne?"Other sandboxes":"Checkout sandboxes"),Ke.default.createElement("p",{className:`text-xs ${de}`},j||ne?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),oe.map(ve=>Ke.default.createElement(Ke.default.Fragment,{key:ve.session_id},S[ve.repository]&&Ke.default.createElement("p",{className:`text-xs ${tt}`},S[ve.repository]),it(ve,{standalone:!0})))))}var It=Z(Q());var j3="claude_code";function $3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,It.useState)(null),[o,a]=(0,It.useState)(null),[i,s]=(0,It.useState)(!1),[l,u]=(0,It.useState)(""),[c,d]=(0,It.useState)(!1),[p,f]=(0,It.useState)(null),[m,y]=(0,It.useState)([]),[x,h]=(0,It.useState)(""),g=(0,It.useCallback)(async()=>{try{let[C,E]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!E.ok)throw new Error("load failed");let[I,J]=await Promise.all([C.json(),E.json()]);n((I.provider_keys||[]).find(U=>U.provider===j3)||{configured:!1}),a(a2(J));let $=(J.sandboxes||[]).filter(U=>U.status==="ready");y($),h(U=>$.some(N=>N.session_id===U)?U:$[0]?.session_id||"")}catch{f("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,It.useEffect)(()=>{g()},[g]);let v=async()=>{if(!(!l.trim()||c)){d(!0),f(null);try{let C=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:j3,credential:l.trim()})});if(!C.ok){let E=await C.json().catch(()=>({}));throw new Error(Array.isArray(E.error)?E.error.join(", "):"Could not save the API key.")}s(!1),u(""),await g(),e?.()}catch(C){f(C.message)}finally{d(!1)}}},b=async()=>{if(await Wr({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/${j3}`,{method:"DELETE"})).ok)throw new Error("delete failed");await g(),e?.()}catch{f("Could not disconnect Claude Code.")}},k=t?"text-gray-400":"text-gray-500",S=eX(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 It.default.createElement("div",{className:"space-y-3"},It.default.createElement("div",{className:"flex items-center justify-between"},It.default.createElement("div",{className:"flex items-center space-x-3"},It.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),It.default.createElement("div",null,It.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),It.default.createElement("p",{className:`text-sm ${_}`},S.status))),S.keyForm&&It.default.createElement("div",{className:"flex items-center space-x-2"},w&&!i&&It.default.createElement("button",{onClick:b,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},S.view==="sandbox_login"?"Remove API key":"Disconnect"),It.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"&&It.default.createElement("button",{onClick:()=>{f(null),g(),e?.()},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},"Check again")),S.view==="local_login"&&It.default.createElement("p",{className:`text-xs ${k}`},"Sessions run ",It.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",S.loginHint&&It.default.createElement(It.default.Fragment,null,"Run ",It.default.createElement("code",{className:"font-mono"},S.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),S.needsReplacing&&!i&&It.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&&It.default.createElement(It.default.Fragment,null,It.default.createElement("div",{className:"flex items-center space-x-2"},It.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&v(),placeholder:JY,"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"}`}),It.default.createElement("button",{onClick:v,disabled:!l.trim()||c,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},c?"Saving\u2026":"Save")),It.default.createElement("p",{className:`text-xs ${k}`},"Paste an Anthropic API key from the"," ",It.default.createElement("a",{href:QY,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 (",It.default.createElement("a",{href:RY,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"&&It.default.createElement("div",{className:"space-y-3"},m.length>0?It.default.createElement(It.default.Fragment,null,It.default.createElement("label",{className:`block text-xs ${k}`},"Sandbox",It.default.createElement("select",{"aria-label":"Claude subscription sandbox",value:x,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=>It.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===x)&&It.default.createElement(tf,{key:x,sandbox:m.find(C=>C.session_id===x),onChange:()=>{g(),e?.()}})):It.default.createElement("p",{className:`text-sm ${k}`},"Start a checkout sandbox in ",It.default.createElement("a",{className:"underline",href:Re("/projects")},"Projects")," to connect your Claude subscription."),It.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&&It.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 Nr=Z(Q());function L3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Nr.useState)(null),[o,a]=(0,Nr.useState)(null),[i,s]=(0,Nr.useState)(!1),[l,u]=(0,Nr.useState)(""),[c,d]=(0,Nr.useState)(!1),[p,f]=(0,Nr.useState)(null),m=(0,Nr.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(i2(A))},[]);(0,Nr.useEffect)(()=>{m().catch(S=>f(S.message))},[m]);let y=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)}}},x=async()=>{if(await Wr({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)}},g=t?"text-gray-400":"text-gray-500",v=`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-200":"bg-gray-200 text-gray-800"}`,b=nX(o,r),k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:g}[b.tone];return Nr.default.createElement("div",{className:"space-y-3"},Nr.default.createElement("div",{className:"flex items-center justify-between gap-3"},Nr.default.createElement("div",null,Nr.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),Nr.default.createElement("p",{className:`text-sm ${k}`},b.status)),Nr.default.createElement("div",{className:"flex gap-2"},b.keyForm&&r?.configured&&!i&&Nr.default.createElement("button",{className:v,disabled:c,onClick:x},"Disconnect"),b.keyForm&&Nr.default.createElement("button",{className:v,disabled:c,onClick:()=>{s(!i),u(""),f(null)}},i?"Cancel":r?.configured?"Update":"Connect"),b.view==="local_login"&&Nr.default.createElement("button",{className:v,disabled:c,onClick:h},"Check again"))),b.view==="local_login"?Nr.default.createElement("p",{className:`text-xs ${g}`},"Sessions run ",Nr.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."," ",b.loginHint&&Nr.default.createElement(Nr.default.Fragment,null,"Run ",Nr.default.createElement("code",{className:"font-mono"},b.loginHint)," on this machine, as the user the dashboard runs as, then check again.")):Nr.default.createElement("p",{className:`text-sm ${g}`},"Run Codex in a repository checkout using an OpenAI API key. API usage is billed to that key's project."),b.keyForm&&i&&Nr.default.createElement("form",{onSubmit:y,className:"flex flex-wrap gap-2"},Nr.default.createElement("label",{className:`flex-1 text-sm ${g}`},"OpenAI API key for Codex",Nr.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"}`})),Nr.default.createElement("button",{type:"submit",className:`${v} self-end`,disabled:c||!l.trim()},c?"Saving\u2026":"Save API key")),p&&Nr.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},p))}var YR=Z(Q());var wn=Z(Q());function z3({provider:e,title:t,description:r,credentialLabel:n,placeholder:o,onChange:a}){let{darkMode:i}=ut(),[s,l]=(0,wn.useState)(null),[u,c]=(0,wn.useState)(!1),[d,p]=(0,wn.useState)(""),[f,m]=(0,wn.useState)(!1),[y,x]=(0,wn.useState)(null),h=(0,wn.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,wn.useEffect)(()=>{h().catch(S=>x(S.message))},[h]);let g=async S=>{if(S.preventDefault(),!(f||!d.trim())){m(!0),x(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){x(w.message)}finally{m(!1)}}},v=async()=>{if(await Wr({title:`Disconnect ${t}?`,message:`${t} will need its ${n} connected again.`,confirmLabel:"Disconnect",danger:!0})){m(!0),x(null);try{if(!(await fetch(`/api/provider_keys/${e}`,{method:"DELETE"})).ok)throw new Error(`Could not disconnect ${t}.`);await h(),a?.()}catch(S){x(S.message)}finally{m(!1)}}},b=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 wn.default.createElement("div",{className:"space-y-3"},wn.default.createElement("div",{className:"flex items-center justify-between gap-3"},wn.default.createElement("div",null,wn.default.createElement("p",{className:`font-medium ${i?"text-white":"text-gray-900"}`},t),wn.default.createElement("p",{className:`text-sm ${b}`},s==null?"Loading\u2026":s.configured?`Connected \xB7 ${s.hint}`:"Not connected")),wn.default.createElement("div",{className:"flex gap-2"},s?.configured&&!u&&wn.default.createElement("button",{className:k,disabled:f,onClick:v},"Disconnect"),wn.default.createElement("button",{className:k,disabled:f||s==null,onClick:()=>{c(!u),p(""),x(null)}},u?"Cancel":s?.configured?"Update":"Connect"))),wn.default.createElement("p",{className:`text-sm ${b}`},r),u&&wn.default.createElement("form",{onSubmit:g,className:"flex flex-wrap gap-2"},wn.default.createElement("label",{className:`flex-1 text-sm ${b}`},n,wn.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"}`})),wn.default.createElement("button",{type:"submit",className:`${k} self-end`,disabled:f||!d.trim()},f?"Saving\u2026":"Save")),y&&wn.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},y))}function B3({onChange:e}){return YR.default.createElement(z3,{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 S2e=["profile","api-keys","integrations","notifications","billing"];function k2e(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:S2e.includes(t)?t:"profile",github:e.get("github"),githubApp:e.get("github_app")}}function F3({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=ut(),[o]=(0,Pe.useState)(()=>window.ACTIVE_AGENT_DASHBOARD?.meta?.personalProviderKeys?"personal":void 0),[{tab:a,github:i,githubApp:s}]=(0,Pe.useState)(k2e),[l,u]=(0,Pe.useState)(a),[c,d]=(0,Pe.useState)(0),[p,f]=(0,Pe.useState)([]),[m,y]=(0,Pe.useState)([]),[x,h]=(0,Pe.useState)(!1),[g,v]=(0,Pe.useState)(""),[b,k]=(0,Pe.useState)(!1),[S,w]=(0,Pe.useState)(null),[_,A]=(0,Pe.useState)(!1),[C,E]=(0,Pe.useState)(null),I=(0,Pe.useCallback)(async()=>{try{let[O,j]=await Promise.all([fetch("/api/api_keys"),fetch(iA("/api/provider_keys",o))]);if(!O.ok||!j.ok)throw new Error("Failed to load keys");let M=await O.json(),H=await j.json();f(M.api_keys||[]),y(H.provider_keys||[]),E(null)}catch{E("Could not load API keys. Are you signed in?")}finally{h(!0)}},[o]);(0,Pe.useEffect)(()=>{l==="api-keys"&&!x&&I()},[l,x,I]);let J=sA({onKeysChanged:I,onError:E,scope:o}),$=async()=>{if(!(!g.trim()||b)){k(!0),E(null);try{let O=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.trim()})});if(!O.ok)throw new Error("create failed");let j=await O.json();w(j.api_key),A(!1),v(""),await I()}catch{E("Could not create the API key.")}finally{k(!1)}}},U=async O=>{if(await Wr({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/${O}`,{method:"DELETE"})).ok)throw new Error("delete failed");S&&S.id===O&&w(null),await I()}catch{E("Could not revoke the API key.")}},N=async O=>{try{await navigator.clipboard.writeText(O),A(!0),setTimeout(()=>A(!1),2e3)}catch{}},T={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};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 ${r?"text-white":"text-gray-900"}`},"Settings"),Pe.default.createElement("p",{className:`mt-1 ${r?"text-gray-400":"text-gray-500"}`},"Manage your account and preferences")),Pe.default.createElement("div",{className:"border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Pe.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(O=>Pe.default.createElement("button",{key:O.id,onClick:()=>u(O.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors ${l===O.id?"border-red-500 text-red-500":`border-transparent ${r?"text-gray-400 hover:text-gray-300":"text-gray-500 hover:text-gray-700"}`}`},O.label)))),l==="profile"&&Pe.default.createElement("div",{className:"space-y-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Profile Information"),Pe.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},Pe.default.createElement("div",null,Pe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"First Name"),Pe.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"}`})),Pe.default.createElement("div",null,Pe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Last Name"),Pe.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"}`})),Pe.default.createElement("div",{className:"md:col-span-2"},Pe.default.createElement("label",{className:`block text-sm font-medium mb-1 ${r?"text-gray-300":"text-gray-700"}`},"Email"),Pe.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"}`}))),Pe.default.createElement("button",{className:"mt-4 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Save Changes")),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Appearance"),Pe.default.createElement("div",{className:"flex items-center justify-between"},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Dark Mode"),Pe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Use dark theme across the dashboard")),Pe.default.createElement("button",{onClick:n,className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${r?"bg-red-500":"bg-gray-300"}`},Pe.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${r?"translate-x-6":"translate-x-1"}`}))))),l==="api-keys"&&Pe.default.createElement("div",{className:"space-y-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("div",{className:"flex items-center justify-between mb-4"},Pe.default.createElement("h3",{className:`text-lg font-semibold ${r?"text-white":"text-gray-900"}`},"API Keys"),Pe.default.createElement("div",{className:"flex items-center space-x-2"},Pe.default.createElement("input",{type:"text",value:g,onChange:O=>v(O.target.value),onKeyDown:O=>O.key==="Enter"&&$(),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"}`}),Pe.default.createElement("button",{onClick:$,disabled:!g.trim()||b,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},b?"Creating\u2026":"+ Create New Key"))),Pe.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"}`},Pe.default.createElement("p",{className:`text-sm ${r?"text-yellow-300":"text-yellow-800"}`},"\u26A0\uFE0F API keys are secrets. Never share them or commit them to version control.")),C&&Pe.default.createElement("div",{className:`p-4 rounded-lg mb-4 text-sm ${r?"bg-red-900/20 border border-red-800 text-red-300":"bg-red-50 border border-red-200 text-red-700"}`},C),S&&Pe.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"}`},Pe.default.createElement("p",{className:`text-sm font-medium mb-2 ${r?"text-green-300":"text-green-800"}`},"Key \u201C",S.name,"\u201D created. Copy it now \u2014 it won't be shown again."),Pe.default.createElement("div",{className:"flex items-center space-x-2"},Pe.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"}`},S.token),Pe.default.createElement("button",{onClick:()=>N(S.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"}`},_?"Copied!":"Copy"),Pe.default.createElement("button",{onClick:()=>w(null),className:`px-3 py-2 text-sm rounded ${r?"text-gray-400 hover:text-gray-200":"text-gray-500 hover:text-gray-700"}`},"Dismiss"))),p.length===0?Pe.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Pe.default.createElement("p",null,x?"No API keys yet":"Loading\u2026"),x&&Pe.default.createElement("p",{className:"text-sm"},"Create your first API key to authenticate requests")):Pe.default.createElement("div",{className:"space-y-2"},p.map(O=>Pe.default.createElement("div",{key:O.id,className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},O.name),Pe.default.createElement("p",{className:`text-sm font-mono ${r?"text-gray-400":"text-gray-500"}`},O.masked_token,Pe.default.createElement("span",{className:"font-sans"}," \xB7 created ",new Date(O.created_at).toLocaleDateString(),O.last_used_at?` \xB7 last used ${new Date(O.last_used_at).toLocaleDateString()}`:" \xB7 never used"))),Pe.default.createElement("button",{onClick:()=>U(O.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"))))),Pe.default.createElement(ab,{providerKeys:m,editor:J,scope:o})),l==="integrations"&&Pe.default.createElement("div",{className:"space-y-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-1 ${r?"text-white":"text-gray-900"}`},"Integrations"),Pe.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."),Pe.default.createElement(D3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement($3,{onChange:()=>d(O=>O+1)})),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement(L3,{onChange:()=>d(O=>O+1)})),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement(B3,{onChange:()=>d(O=>O+1)}))),l==="notifications"&&Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Email Notifications"),Pe.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((O,j)=>Pe.default.createElement("div",{key:j,className:"flex items-center justify-between py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},O.label),Pe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},O.desc)),Pe.default.createElement("button",{className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors ${O.enabled?"bg-red-500":r?"bg-gray-700":"bg-gray-300"}`},Pe.default.createElement("span",{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${O.enabled?"translate-x-6":"translate-x-1"}`})))))),l==="billing"&&Pe.default.createElement("div",{className:"space-y-6"},Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Subscription"),Pe.default.createElement("div",{className:"flex items-center justify-between p-4 rounded-lg",style:{backgroundColor:r?"#252525":"#f9fafb"}},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`font-medium ${r?"text-white":"text-gray-900"}`},"Free Plan"),Pe.default.createElement("p",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},"Current plan")),Pe.default.createElement("button",{className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600"},"Upgrade to Pro"))),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Payment Method"),Pe.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No payment method on file"),Pe.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")),Pe.default.createElement("div",{className:"border rounded-lg p-6",style:T},Pe.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${r?"text-white":"text-gray-900"}`},"Invoices"),Pe.default.createElement("p",{className:`${r?"text-gray-400":"text-gray-500"}`},"No invoices yet"))))}var Xe=Z(Q());var _2e=[{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."}],U3={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"},Xs={color:"var(--color-text-muted)",fontSize:12};function XR(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?Re(t):null}function C2e({card:e,onAsk:t,busy:r}){let n=XR(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Xe.default.createElement(ze,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Xe.default.createElement(Ce,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Xe.default.createElement(Ce,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Xe.default.createElement("span",{style:Xs},String(e.check_strength).replaceAll("_"," "))),Xe.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Xe.default.createElement("div",{style:{...Xs,fontFamily:W}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Xe.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Xe.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Xe.default.createElement("div",{style:Xs},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Xe.default.createElement("div",{style:Xs},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Xe.default.createElement("div",{style:Xs},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Xe.default.createElement("details",{style:Xs},Xe.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Xe.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Xe.default.createElement("li",{key:u},l)))),Xe.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Xe.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===Re("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Xe.default.createElement(pe,{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 A2e({draft:e,onReview:t}){return Xe.default.createElement(ze,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Xe.default.createElement(We,null,"Agent draft \xB7 not saved"),Xe.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Xe.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Xe.default.createElement("div",{style:{...Xs,fontFamily:W}},e.provider," / ",e.model),Xe.default.createElement("details",null,Xe.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Xe.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Xe.default.createElement("p",{style:Xs},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Xe.default.createElement(pe,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function W3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[a,i]=(0,Xe.useState)(null),[s,l]=(0,Xe.useState)(""),[u,c]=(0,Xe.useState)(!1),[d,p]=(0,Xe.useState)(null),[f,m]=(0,Xe.useState)(!1),y=(0,Xe.useRef)(null),x=(0,Xe.useRef)(null),h=(0,Xe.useRef)(e);h.current=e,(0,Xe.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(),y.current?.abort()}},[]);let g=e.messages||[],v=e.provider||a?.defaults?.provider||"",b=e.model||"",k=a?.limits?.message_characters||8e3,S=a?.providers?.find(_=>_.id===v),w=async _=>{let A=_.trim();if(!A||u||!a||!o||!b.trim()||!f)return;let C=g.map(J=>({role:J.role,content:J.content})).slice(-12);for(;C.reduce((J,$)=>J+$.content.length,0)>24e3;)C.shift();let E=[...g,{role:"user",content:A}];t({...e,messages:E}),l(""),p(null),c(!0);let I=new AbortController;y.current=I;try{let J=await fetch("/api/dashboard_assistant",{method:"POST",signal:I.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:A,history:C,provider:v,model:b.trim(),allow_provider_processing:!0})}),$=await J.json();if(!J.ok){p({message:typeof $.error=="string"?$.error:"The assistant could not complete this request.",setup:$.setup_required,retry:A}),t({...e,messages:g}),l(A);return}t({...e,messages:[...E,{role:"assistant",content:$.answer,cards:$.cards||[],references:$.references||[],drafts:$.drafts||[],limitations:$.limitations||[]}]})}catch(J){J.name!=="AbortError"&&(p({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:g}),l(A))}finally{c(!1)}};return Xe.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Xe.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Xe.default.createElement("div",null,Xe.default.createElement(We,null,"Workspace assistant"),Xe.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Xe.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:14}},"Find evaluation evidence. Understand failures. Build the next agent.")),g.length>0&&Xe.default.createElement(pe,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!g.length&&Xe.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},_2e.map(_=>Xe.default.createElement("button",{key:_.label,onClick:()=>{l(_.message),x.current?.querySelector("textarea")?.focus()},style:{textAlign:"left",padding:20,background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border)",borderRadius:12,cursor:"pointer"}},Xe.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},_.label," \u2197"),Xe.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},_.message)))),Xe.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((_,A)=>Xe.default.createElement("div",{key:A,style:{display:"grid",gap:12}},Xe.default.createElement(We,{color:_.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},_.role==="user"?"You":"ActiveAgents"),Xe.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},_.content),_.cards?.map(C=>Xe.default.createElement(C2e,{key:C.id,card:C,onAsk:E=>{l(E),x.current?.querySelector("textarea")?.focus()},busy:u})),_.references?.length>0&&Xe.default.createElement("div",{"aria-label":"Evidence references",style:{...Xs,display:"flex",gap:12,flexWrap:"wrap"}},_.references.map(C=>{let E=XR(C);return E&&Xe.default.createElement("a",{key:C.id,href:E,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--color-accent-ui)"}},C.id)})),_.drafts?.map(C=>Xe.default.createElement(A2e,{key:C.id,draft:C,onReview:r})),_.limitations?.length>0&&Xe.default.createElement("details",{style:Xs},Xe.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Xe.default.createElement("ul",{style:{paddingLeft:18}},_.limitations.map((C,E)=>Xe.default.createElement("li",{key:E},C)))))),u&&Xe.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Xe.default.createElement(ze,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Xe.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Xe.default.createElement(pe,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Xe.default.createElement(ze,{padding:18},Xe.default.createElement("form",{ref:x,onSubmit:_=>{_.preventDefault(),w(s)},style:{display:"grid",gap:14}},Xe.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Xe.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:{...U3,resize:"vertical",boxSizing:"border-box"}}),Xe.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Xe.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Xe.default.createElement("select",{"aria-label":"Assistant provider",value:v,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:U3},Xe.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(_=>Xe.default.createElement("option",{key:_.id,value:_.id},_.id,_.configured?"":" \xB7 setup needed")))),Xe.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Xe.default.createElement("input",{"aria-label":"Assistant model",value:b,disabled:u||!a,maxLength:160,onChange:_=>{m(!1),t({...e,model:_.target.value})},style:U3})),Xe.default.createElement(pe,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!b.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Xe.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Xe.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:_=>m(_.target.checked),style:{marginTop:4}}),Xe.default.createElement("span",null,"Allow ",v||"the selected provider"," / ",b||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Xe.default.createElement("div",{style:{...Xs,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 ga=Z(Q());var vt=Z(Q());var na=Z(Q());function E2e(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 H3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,na.useState)(r),a=E2e(t);return na.default.createElement(en,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},na.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"}},na.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),na.default.createElement("span",{"data-testid":"capabilities-summary"},a),na.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&na.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>na.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)"}},na.default.createElement(Na,{kind:i.ok?"pass":i.blocking?"fault":"info"}),na.default.createElement("div",{style:{minWidth:0,flex:1}},na.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},na.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&na.default.createElement(We,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&na.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&na.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:W,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var rn=Z(Q());var ZR={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:W,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function ub({rows:e,onChange:t,repository:r}){let[n,o]=(0,rn.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?uA(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return rn.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&rn.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=uA(s.name),c=s.useOrganizationKey?[]:cA(s.name,s.value);return rn.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},rn.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},rn.default.createElement("span",{style:{fontFamily:W,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&rn.default.createElement(Ce,{tone:"warning"},"required"),s.set&&rn.default.createElement(Ce,{tone:"success"},"set"),s.sources?.length>0&&rn.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&rn.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?rn.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):rn.default.createElement(rn.default.Fragment,null,!s.useOrganizationKey&&rn.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:{...ZR,marginTop:6}}),s.organizationKey&&rn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},rn.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&&rn.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)"}},rn.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=>rn.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),rn.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},rn.default.createElement("div",{style:{flex:1}},rn.default.createElement(We,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),rn.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...ZR,marginTop:4}}),i&&rn.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),rn.default.createElement(pe,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(ER(e,n)),o("")}},"Add")))}var JR={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 N2e({repository:e,preflight:t}){return t?vt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},vt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},vt.default.createElement("span",{style:{fontFamily:W,fontSize:13,color:"var(--color-text-primary)"}},e),vt.default.createElement(Ce,{tone:dA[t.status]||"muted"},t.summary)),vt.default.createElement("div",{style:{fontFamily:W,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=>vt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>vt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function q3({onCreated:e,onCancel:t}){let[r,n]=(0,vt.useState)(null),[o,a]=(0,vt.useState)(null),[i,s]=(0,vt.useState)(!1),[l,u]=(0,vt.useState)(""),[c,d]=(0,vt.useState)(null),[p,f]=(0,vt.useState)(null),[m,y]=(0,vt.useState)(null),[x,h]=(0,vt.useState)(!1),[g,v]=(0,vt.useState)([]),[b,k]=(0,vt.useState)(""),[S,w]=(0,vt.useState)(!1),[_,A]=(0,vt.useState)("/"),[C,E]=(0,vt.useState)(!1),[I,J]=(0,vt.useState)(null),$=(0,vt.useCallback)(async()=>{let M=await fetch("/api/projects/capabilities"),H=await M.json().catch(()=>({}));if(!M.ok)throw new Error(ot(H,`Could not check what this dashboard can do (HTTP ${M.status}).`));return n(H),H},[]),U=(0,vt.useCallback)(async()=>{a(null);let M=await fetch("/api/github_connection/repositories"),H=await M.json().catch(()=>({}));if(H.reconnect_required){s(!0);return}if(!M.ok)throw new Error(ot(H,`Could not list repositories (HTTP ${M.status}).`));s(!1),a(H.repositories||[])},[]);(0,vt.useEffect)(()=>{$().then(M=>M.github?.connected?U():null).catch(M=>J(M.message))},[$,U]);let N=(0,vt.useCallback)(async(M,{typed:H=!1}={})=>{J(null),f(null),h(!0);try{let G=`repository=${encodeURIComponent(M)}`,z=await fetch(`/api/projects/preflight?${G}`),V=await z.json().catch(()=>({}));if(V.reconnect_required){s(!0);return}if(!z.ok){let Ie=ot(V,`Could not check ${M} (HTTP ${z.status}).`);H?f(Ie):J(Ie);return}if(d(V.repository.full_name),y(V.preflight),k(Ie=>NR({name:Ie,edited:S,fullName:V.repository.full_name})),v([]),V.preflight.status==="unsupported")return;let K=await fetch(`/api/projects/discover_secrets?${G}`),ie=await K.json().catch(()=>({}));if(!K.ok)throw new Error(ot(ie,`Could not read ${M}'s environment variables (HTTP ${K.status}).`));v(ib(ie.variables||[]))}catch(G){J(G.message)}finally{h(!1)}},[S]),T=async()=>{E(!0),J(null);try{let M=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:b,start_url:_,secrets:sb(g)})}),H=await M.json().catch(()=>({}));if(!M.ok)throw new Error(ot(H,`Could not create the project (HTTP ${M.status}).`));e(H.project)}catch(M){J(M.message)}finally{E(!1)}},D=r?.github,O=TR({github:D,repositories:o,reconnectRequired:i,pendingApproval:D?.pending_approval===!0}),j=x?"Checking the repository\u2026":OR({capabilities:r,preflight:m,secretsProblem:Fh(g)});return vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},vt.default.createElement("div",{style:{flex:1}},vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),vt.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.")),vt.default.createElement(pe,{onClick:t},"Cancel")),I&&vt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},I),vt.default.createElement(ze,null,vt.default.createElement(We,null,"Repository"),vt.default.createElement("div",{style:{marginTop:8}},vt.default.createElement(kf,{mode:"single",state:O,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:M=>N(M),settingsHref:Re("/settings?tab=integrations"),missingRepositoryUrl:D?.access_settings_url,onRefresh:()=>U().catch(M=>J(M.message)),onTypeName:M=>N(M,{typed:!0}),typedNameError:p})),m&&vt.default.createElement("div",{style:{marginTop:12}},vt.default.createElement(N2e,{repository:c,preflight:m}))),r&&vt.default.createElement(H3,{capabilities:r}),m&&m.status!=="unsupported"&&vt.default.createElement(ze,null,vt.default.createElement(We,null,"Project"),vt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},vt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",vt.default.createElement("input",{type:"text",value:b,onChange:M=>{k(M.target.value),w(M.target.value!=="")},style:{...JR,marginTop:4}})),vt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",vt.default.createElement("input",{type:"text",value:_,onChange:M=>A(M.target.value),style:{...JR,marginTop:4,fontFamily:W}}))),vt.default.createElement("div",{style:{marginTop:16}},vt.default.createElement(We,null,"Secrets the boot needs"),vt.default.createElement("div",{style:{marginTop:8}},vt.default.createElement(ub,{rows:g,onChange:v,repository:c})))),vt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},j&&vt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},j),vt.default.createElement(pe,{variant:"primary",onClick:T,disabled:!!j||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var Ve=Z(Q());var Lr=Z(Q());var T2e={success:"success",error:"error",progress:"info",neutral:"muted"};function K3({project:e}){let[t,r]=(0,Lr.useState)(null),[n,o]=(0,Lr.useState)(null),[a,i]=(0,Lr.useState)(""),[s,l]=(0,Lr.useState)(!1),u=e.sandbox,c=e.sandbox_state==="ready"&&!!u?.session_id,d=(0,Lr.useCallback)(async()=>{let m=await fetch(`/api/interactions?project_id=${e.id}`),y=await m.json().catch(()=>({}));if(!m.ok){o(ot(y,`Could not list the conversations (HTTP ${m.status}).`));return}r(y.interactions||[])},[e.id]);(0,Lr.useEffect)(()=>{d()},[d]);let p=async m=>{m.preventDefault();let y=a.trim();if(!(!y||!c)){l(!0),o(null);try{let x=await fetch(`/api/sandboxes/${encodeURIComponent(u.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:y,origin:"chat"})}),h=await x.json().catch(()=>({}));if(!x.ok)throw new Error(ot(h,`The conversation did not start (HTTP ${x.status}).`));lt(ms(h.code_session.id))}catch(x){o(x.message),l(!1)}}},f={margin:0,fontSize:13,color:"var(--color-text-secondary)"};return Lr.default.createElement("div",{style:{display:"grid",gap:12},"data-testid":"project-sessions"},Lr.default.createElement(ze,null,Lr.default.createElement("form",{onSubmit:p,style:{display:"grid",gap:8}},Lr.default.createElement(We,{as:"label",htmlFor:`project-${e.id}-chat`},"Chat with Claude Code"),Lr.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)"}}),Lr.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8}},Lr.default.createElement("p",{style:f},"It edits the checkout and never commits or pushes. The conversation opens with the sandbox's browser beside it."),Lr.default.createElement(pe,{variant:"primary",type:"submit",disabled:!c||s||!a.trim(),testId:"project-start-conversation"},s?"Starting\u2026":"Start")),n&&Lr.default.createElement("p",{role:"alert",style:{...f,color:"var(--color-error-text)"}},n))),Lr.default.createElement(ze,null,Lr.default.createElement(We,null,"Conversations"),t===null&&!n&&Lr.default.createElement("p",{style:f},"Loading\u2026"),t?.length===0&&Lr.default.createElement("p",{style:f},"No conversations yet."),Lr.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0,display:"grid",gap:8}},(t||[]).map(m=>{let y=fs(m.status),x=ms(Rp(m.id));return Lr.default.createElement("li",{key:m.id},Lr.default.createElement("a",{href:Re(x),onClick:h=>{h.preventDefault(),lt(x)},style:{display:"grid",gap:2,textDecoration:"none",color:"var(--color-text-primary)"},"data-testid":"project-conversation"},Lr.default.createElement("span",{style:{display:"flex",gap:8,alignItems:"center"}},Lr.default.createElement(Ce,{tone:T2e[y.tone]||"muted"},y.label),Lr.default.createElement("span",{style:{fontSize:13}},m.preview?.input||m.display_name)),Lr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:W}},l2(m))))}))))}var sr=Z(Q());function QR(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function V3(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 RR(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"&&!V3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function eee(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function tee(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 ree(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||G3(e)||(Number(e?.pending_input_requests)||0)>0}var O2e=6e4;function nee(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 lee(e,t=[],r=[]){let n=o=>JSON.stringify(o.map(a=>({model:a.model,filterable:[...a.filterable||[]].sort(),returns:[...a.returns||[]].sort()})).sort((a,i)=>a.model.localeCompare(i.model)));return n(X3(e,r))!==n(t)}function uee(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 cee(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function dee(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 pee(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 fee(e){return e.json().catch(()=>({}))}function Z3({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,sr.useState)(null),[a,i]=(0,sr.useState)({}),[s,l]=(0,sr.useState)(null),[u,c]=(0,sr.useState)(!1),d=e.schema_tools||[],p=(0,sr.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await fee(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(ot(y,`Could not list the app's models (HTTP ${m.status}).`));o(y.models||[]),i(iee(y.schema_tools||[]))},[e.id]);(0,sr.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=async(m,y=!1)=>{c(!0),l(null);try{let x=await fetch(`/api/projects/${e.id}/schema_tools`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema_tools:X3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await fee(x);if(x.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!x.ok)throw new Error(ot(h,`Could not save what the assistant may read (HTTP ${x.status}).`));t?.(h.project)}catch(x){l(x.message)}finally{c(!1)}};return sr.default.createElement(P2e,{listed:e.app_models_listed,models:n,selection:a,changed:n?lee(a,d,n):!1,busy:u,error:s,onToggle:(m,y,x)=>i(h=>see(h,m,y,x)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function P2e({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,sr.useMemo)(()=>Object.keys(r||{}),[r]);return sr.default.createElement(en,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},sr.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&&sr.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&&sr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&sr.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 sr.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"}},sr.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},sr.default.createElement("span",{style:{fontFamily:W,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),sr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&sr.default.createElement(Ce,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),sr.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},sr.default.createElement("thead",null,sr.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},sr.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),sr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),sr.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),sr.default.createElement("tbody",null,c.columns.map(p=>sr.default.createElement("tr",{key:p.name},sr.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:W,color:"var(--color-text-primary)"}},p.name," ",sr.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>sr.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},sr.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&&sr.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},sr.default.createElement(pe,{size:"sm",onClick:s,disabled:o||!n},"Save"),sr.default.createElement(pe,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var ei=Z(Q());function J3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return ei.default.createElement(en,{title:"Boot",meta:QR(o)||n||"none",testId:"project-boot-progress"},a.length===0&&ei.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},n==="booting"?"Waiting for the sandbox to report its steps\u2026":"No boot to show yet."),a.length>0&&ei.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>ei.default.createElement("li",{key:i.name,"data-testid":`boot-step-${i.name}`,style:{display:"grid",gridTemplateColumns:"92px 170px 1fr 80px",gap:10,alignItems:"baseline",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},ei.default.createElement(Ce,{tone:IR[i.status]||"muted"},i.status),ei.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},PR(i.name)," ",ei.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},i.name)),ei.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),ei.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":MR(i.duration_ms))))),r&&ei.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&&ei.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},ei.default.createElement("div",{style:{padding:"6px 12px",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),ei.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:W,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Tl=Z(Q());var mee="/settings?tab=integrations";function Q3({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=Tl.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=Tl.default.createElement(Tl.default.Fragment,null,Tl.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 ",Tl.default.createElement("span",{style:{fontFamily:W}},"browser:",o.session_id),"."),Tl.default.createElement(Sf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Tl.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."),Tl.default.createElement(en,{title:"Browser",meta:Tl.default.createElement(Gr,{href:Re(mee),onClick:()=>lt(mee)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Fn=Z(Q());var M2e=e=>e?new Date(e).toLocaleString():"\u2014",I2e={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function R3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,Fn.useState)(null),[i,s]=(0,Fn.useState)(""),[l,u]=(0,Fn.useState)(!1),c=o?cA(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return Fn.default.createElement(en,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&Fn.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&Fn.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),Fn.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>Fn.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Fn.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},Fn.default.createElement("span",{style:{fontFamily:W,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),Fn.default.createElement(Ce,{tone:p.source==="organization_key"?"info":"muted"},I2e[p.source]?.(p)||"entered"),Fn.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",M2e(p.updated_at)),Fn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&Fn.default.createElement(pe,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),Fn.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&Fn.default.createElement("div",{style:{marginTop:4,fontFamily:W,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&Fn.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("")})}},Fn.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:W,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Fn.default.createElement(pe,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Fn.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>Fn.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var Un=Z(Q());var vd=Z(Q());var D2e=["proposed","edited"],rj={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"},gee={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function yee(e){return e?.status==="pending"||e?.status==="running"}function hA(e){return D2e.includes(e.state)}function nj(e=[],t=null){let r=e.filter(n=>hA(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function vee(e=[],t=[]){let r=new Set(t.filter(hA).map(n=>n.id));return e.filter(n=>r.has(n))}function hee(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function xee(e={},t={}){return Object.keys(gee).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:gee[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${hee(r,o)} / ${hee(r,n)}`}]})}function bee(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 wee({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 See(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 ej(e){return(e||[]).join(", ")}function tj(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function kee(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:ej(t.tools),contains:ej(t.contains),not_contains:ej(t.not_contains)}}function _ee(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:tj(e.tools),contains:tj(e.contains),not_contains:tj(e.not_contains)}}function yA(e){return`/explorations/${e}`}function vA(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function _f({explorations:e,onOpen:t,selectedId:r=null}){return vd.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 vd.default.createElement(ze,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},vd.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},vd.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),vd.default.createElement(Ce,{tone:gA[n.status]||"muted"},n.status),vd.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),vd.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",wo(n.created_at))))}))}var _t=Z(Q());var Cf=Z(Q());function oj({budget:e,usage:t}){let r=xee(e,t);return r.length===0?null:Cf.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?bo.error:n.ratio>=.8?bo.warning:bo.info;return Cf.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},Cf.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),Cf.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Cf.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),Cf.default.createElement("span",{style:{fontFamily:W,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var Dt=Z(Q());var j2e={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},Uh={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 Wh({label:e,children:t}){return Dt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function aj({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,Dt.useState)(null),c=rj[e.verdict]||rj.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=bee(e),y=hA(e),x=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,_ee(l))&&u(null)};return Dt.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}},Dt.default.createElement("input",{type:"checkbox","aria-label":`Accept candidate ${e.id}`,checked:t,disabled:!y||a,onChange:()=>r(e.id),style:{marginTop:3,alignSelf:"flex-start"}}),Dt.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},Dt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},Dt.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),Dt.default.createElement(Ce,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),Dt.default.createElement(Ce,{tone:j2e[e.state]||"muted"},e.state),e.group&&Dt.default.createElement(Ce,null,e.group),e.scenario_key&&Dt.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?Dt.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},Dt.default.createElement(Wh,{label:"Prompt"},Dt.default.createElement("input",{style:Uh,value:l.prompt,onChange:x("prompt")})),Dt.default.createElement(Wh,{label:"Rubric: what a good answer does (the judge grades against it)"},Dt.default.createElement("textarea",{style:{...Uh,minHeight:60},value:l.rubric,onChange:x("rubric")})),Dt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},Dt.default.createElement(Wh,{label:"Group"},Dt.default.createElement("input",{style:Uh,value:l.group,onChange:x("group")})),Dt.default.createElement(Wh,{label:"Tools (comma-separated)"},Dt.default.createElement("input",{style:Uh,value:l.tools,onChange:x("tools")})),Dt.default.createElement(Wh,{label:"Contains"},Dt.default.createElement("input",{style:Uh,value:l.contains,onChange:x("contains")})),Dt.default.createElement(Wh,{label:"Does not contain"},Dt.default.createElement("input",{style:Uh,value:l.not_contains,onChange:x("not_contains")}))),Dt.default.createElement("div",{style:{display:"flex",gap:8}},Dt.default.createElement(pe,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),Dt.default.createElement(pe,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):Dt.default.createElement(Dt.default.Fragment,null,Dt.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)&&Dt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:W,fontSize:11}},(d.tools||[]).map(g=>Dt.default.createElement(Ce,{key:g,tone:p.has(g)?"warning":"muted",title:p.has(g)?"The agent cannot call this tool":void 0},p.has(g)?`missing ${g}`:g)),(d.contains||[]).map(g=>Dt.default.createElement(Ce,{key:`c-${g}`},"contains \u201C",g,"\u201D")),(d.not_contains||[]).map(g=>Dt.default.createElement(Ce,{key:`n-${g}`},"not \u201C",g,"\u201D")))),i&&Dt.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)&&Dt.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Dt.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),f.urls?.length>0&&Dt.default.createElement("div",{style:{marginTop:4,fontFamily:W,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&Dt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((g,v)=>Dt.default.createElement("li",{key:v},g))),f.screenshots?.length>0&&Dt.default.createElement("div",{style:{marginTop:4,fontFamily:W,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&Dt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&Dt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&Dt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&Dt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>u(kee(e)),disabled:a},"Edit"),y&&Dt.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&Dt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var ij={minutes:15,steps:150},Cee={minutes:120,steps:1e3,cost:100},Aee={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function Nee(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:`${Aee[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>Cee[r])return{error:`${Aee[r]} may be at most ${Cee[r]}.`};t[r]=o}return{budget:t}}var Eee={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 Tee(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&Eee[t.code]?Eee[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var $2e={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 Oee(e){return e?$2e[e]||e:null}var L2e={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function Pee(e){return e?{tone:L2e[e.status]||"muted",text:e.message||e.status}:null}function Mee(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 sj(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function Iee(e){return e.json().catch(()=>({}))}var B2e={explorer:"explorer agent",external:"submitted from outside the dashboard"};function Af({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,_t.useState)(null),[s,l]=(0,_t.useState)(null),[u,c]=(0,_t.useState)([]),[d,p]=(0,_t.useState)(!1),[f,m]=(0,_t.useState)(!1),[y,x]=(0,_t.useState)({}),[h,g]=(0,_t.useState)(null),[v,b]=(0,_t.useState)(null),k=(0,_t.useRef)(t);k.current=t;let S=(0,_t.useCallback)(async()=>{let M=await fetch(`/api/explorations/${e}`),H=await Iee(M);if(!M.ok)throw new Error(ot(H,`Could not load the exploration (HTTP ${M.status}).`));return i(H),k.current?.(H),H},[e]);(0,_t.useEffect)(()=>{S().catch(M=>l(M.message))},[S]);let w=a?.candidates||[];(0,_t.useEffect)(()=>{a&&c(M=>d?vee(M,w):nj(w,a.preselect_limit))},[a,d]);let _=yee(a?.exploration);(0,_t.useEffect)(()=>{if(!_)return;let M=setInterval(()=>S().catch(H=>l(H.message)),3e3);return()=>clearInterval(M)},[_,S]),jh("ExplorationChannel",{exploration_id:e},M=>{$h(M)&&S().catch(()=>{})},!!e);let A=async(M,H,G)=>{m(!0),l(null);try{let z=await fetch(M,{method:H,headers:{"Content-Type":"application/json"},body:JSON.stringify(G||{})}),V=await Iee(z);return{res:z,data:V}}finally{m(!1)}},C=async(M,H)=>{let{res:G,data:z}=await A(`/api/explorations/${e}/candidates/${M}`,"PATCH",H);return G.ok?(x({...y,[M]:null}),await S(),!0):(x({...y,[M]:ot(z,`Could not save the candidate (HTTP ${G.status}).`)}),!1)},E=async(M,H)=>C(M,{state:H}),I=M=>{p(!0),c(H=>H.includes(M)?H.filter(G=>G!==M):[...H,M])},J=async()=>{let M={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:H,data:G}=await A(`/api/explorations/${e}/accept`,"POST",M);return H.ok?(x({}),g({accepted:G.accepted,evaluation:r?null:G.evaluation,scenarioSet:G.scenario_set||null}),o?.(G),p(!1),i(G),k.current?.(G),G):(x(G.problems||{}),l(ot(G,`Could not accept the candidates (HTTP ${H.status}).`)),null)},$=async(M,H,{confirm:G=!1}={})=>{let z=H?`/api/projects/${H.id}/run_evaluation`:`/api/evaluations/${M.id}/run`,{res:V,data:K}=await A(z,"POST",G?{confirm:!0}:{});if(V.status===409&&K.code==="confirmation_required"){b({question:K.confirmation,evaluation:M,project:H});return}if(!V.ok){l(ot(K,`The scenarios were accepted, but the run did not start (HTTP ${V.status}).`));return}b(null),lt(`/evaluations/${K.run?.evaluation_id||M.id}/runs/${K.run.id}`)},U=async()=>{let M=await J();M?.evaluation&&await $(M.evaluation,M.project)},N=async()=>{let{res:M,data:H}=await A(`/api/explorations/${e}/stop`,"POST");if(!M.ok&&M.status!==409){l(ot(H,`Could not stop the exploration (HTTP ${M.status}).`));return}await S()};if(!a)return s?_t.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):_t.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:T}=a,D=T.counts||{},O=wee({evaluation:a.evaluation,candidates:w,selectedIds:u}),j=nj(w);return _t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(We,null,"Exploration ",T.id),_t.default.createElement(Ce,{tone:gA[T.status]||"muted",testId:"exploration-status"},T.status),_t.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},B2e[T.source]||T.source," \xB7 ",wo(T.created_at),T.start_url?` \xB7 from ${T.start_url}`:""),_&&_t.default.createElement(pe,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),T.stop_reason&&_t.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Oee(T.stop_reason)),T.error_message&&_t.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},T.error_message),_t.default.createElement(oj,{budget:T.budget,usage:T.usage}),s&&_t.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&_t.default.createElement(ze,{padding:12,testId:"exploration-accepted"},_t.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&&_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&_t.default.createElement(ze,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},_t.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),_t.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},_t.default.createElement(pe,{variant:"primary",onClick:()=>$(v.evaluation,v.project,{confirm:!0}),disabled:f},"Run it on this machine"),_t.default.createElement(pe,{onClick:()=>b(null)},"Cancel"))),_t.default.createElement(en,{title:"Found so far",meta:`${D.total||0} found \xB7 ${D.answerable||0} answerable \xB7 ${D.accepted||0} accepted`,testId:"exploration-candidates",bodyStyle:{padding:"0 12px"}},w.length===0?_t.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."):_t.default.createElement("ul",{style:{margin:0,padding:0}},w.map(M=>_t.default.createElement(aj,{key:M.id,candidate:M,selected:u.includes(M.id),onToggle:I,onSave:C,onState:E,busy:f,problem:y?.[M.id]||y?.[String(M.id)],agentId:a.target_agent?.id})))),w.length>0&&_t.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(j)},disabled:f},"Select every answerable"),_t.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&j.length>a.preselect_limit&&_t.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),_t.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},_t.default.createElement(pe,{variant:"primary",onClick:J,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&_t.default.createElement(_t.default.Fragment,null,_t.default.createElement(pe,{onClick:U,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),_t.default.createElement("span",{style:{fontFamily:W,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},See(O,a.runs_remaining))))))}var ti=Z(Q());var F2e={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:W,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function cb({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,ti.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,ti.useState)(null),[s,l]=(0,ti.useState)(!1),{error:u,budget:c}=Nee(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(Tee(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,y)=>ti.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},ti.default.createElement(We,null,m),ti.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:y,onChange:x=>o({...n,[f]:x.target.value}),"aria-label":m,style:F2e}));return ti.default.createElement(en,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},ti.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."),ti.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(ij.minutes)),p("steps","Browser steps",String(ij.steps)),p("cost","Cost cap ($)","none"),ti.default.createElement(pe,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&ti.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)&&ti.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var Yt=Z(Q());var U2e={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:W,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},W2e=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],Dee=e=>e?new Date(e).toLocaleString():"\u2014";async function Ef(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 lj({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,Yt.useState)(null),[a,i]=(0,Yt.useState)(null),[s,l]=(0,Yt.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,Yt.useState)(null),[d,p]=(0,Yt.useState)(null),[f,m]=(0,Yt.useState)(null),[y,x]=(0,Yt.useState)(!1),h=(0,Yt.useCallback)(async()=>{let $=await Ef(`/api/projects/${e}/sign_in`,"GET");o($.sign_in);let U=$.sign_in?.credentials;U&&l(N=>({...N,login_url:U.login_url||"",login:U.login||"",...U.fields})),i(N=>N||(U?"credentials":$.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,Yt.useEffect)(()=>{h().catch($=>p($.message))},[h]);let g=async $=>{x(!0),p(null),m(null);try{await $()}catch(U){p(U.message)}finally{x(!1)}},v=n?.credentials,{error:b,payload:k}=Mee(s,{passwordSaved:!!v?.password_set}),S=Pee(u),w=()=>g(async()=>{let $=await Ef(`/api/projects/${e}/sign_in`,"PUT",k);o($.sign_in),l(U=>({...U,password:""})),m($.warnings?.length?$.warnings.map(U=>U.message).join(" "):"Saved. The explorer signs in with them.")}),_=()=>g(async()=>{let $=await Ef(`/api/projects/${e}/sign_in/check`,"POST");c($.result),o($.sign_in)}),A=()=>g(async()=>{await Ef(`/api/sandboxes/${t}/browser`,"POST",{mode:"headed"}),await h(),m("A browser window opened on the app. Sign in there, then save its sign-in.")}),C=()=>g(async()=>{let $=await Ef(`/api/projects/${e}/sign_in/save_browser`,"POST");o($.sign_in),m("Saved. Every browser of this project now starts signed in.")}),E=()=>g(async()=>{await Ef(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),I=()=>g(async()=>{let $=await Ef(`/api/projects/${e}/sign_in`,"DELETE");o($.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),J=($,U,N="text",T="")=>Yt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},Yt.default.createElement(We,null,U),Yt.default.createElement("input",{type:N,autoComplete:"off",value:s[$],placeholder:T,onChange:D=>l({...s,[$]:D.target.value}),"aria-label":U,style:U2e}));return Yt.default.createElement(en,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Yt.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."),Yt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v&&Yt.default.createElement(Ce,{tone:"success"},"credentials saved ",Dee(v.updated_at)),n?.storage_state&&Yt.default.createElement(Ce,{tone:"success"},"browser sign-in saved ",Dee(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&Yt.default.createElement(Ce,null,"no sign-in")),Yt.default.createElement(ps,{options:W2e,value:a||"none",onChange:i}),a==="credentials"&&Yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},J("login_url","Login URL","text","/users/sign_in"),J("login","Login","text","dev@example.com"),J("password","Password","password",v?.password_set?"Saved; leave empty to keep it":"")),Yt.default.createElement("details",null,Yt.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},J("login_field","Login field","text","#user_email"),J("password_field","Password field","text","#user_password"),J("submit_field","Submit button","text","button[type=submit]"))),Yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Yt.default.createElement(pe,{variant:"primary",size:"sm",onClick:w,disabled:y||!!b},"Save credentials"),Yt.default.createElement(pe,{size:"sm",onClick:_,disabled:y||!v||!r,testId:"sign-in-check"},"Check sign-in"),b&&Yt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},b))),a==="by_hand"&&Yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},Yt.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."),Yt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Yt.default.createElement(pe,{size:"sm",onClick:A,disabled:y||!r||n?.browser_running},"Open a browser window"),Yt.default.createElement(pe,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&Yt.default.createElement(pe,{size:"sm",variant:"ghost",onClick:E,disabled:y},"Stop the browser"))),a==="none"&&(v||n?.storage_state)&&Yt.default.createElement("div",null,Yt.default.createElement(pe,{size:"sm",variant:"danger",onClick:I,disabled:y},"Remove the saved sign-in")),S&&Yt.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:bo[S.tone]?.text||"var(--color-text-secondary)"}},S.text),f&&Yt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&Yt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function uj({projectId:e,project:t,onCount:r}){let[n,o]=(0,Un.useState)(null),[a,i]=(0,Un.useState)(null),[s,l]=(0,Un.useState)(null),u=(0,Un.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,Un.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=Un.default.createElement(Un.default.Fragment,null,Un.default.createElement(cb,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),Un.default.createElement(lj,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return Un.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return Un.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return Un.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,Un.default.createElement(ze,{testId:"project-explorations-empty"},Un.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 Un.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,Un.default.createElement(_f,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),Un.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},Un.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(yA(p))},"Open on its own page")),Un.default.createElement(Af,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var dr=Z(Q());var H2e={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function jee(e){return e.json().catch(()=>({}))}function cj({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,dr.useState)(null),[i,s]=(0,dr.useState)(null),l=(0,dr.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await jee(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,dr.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 jee(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:dr.default.createElement(en,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&dr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>dr.default.createElement(q2e,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function q2e({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,dr.useState)(""),[a,i]=(0,dr.useState)(!1),[s,l]=(0,dr.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 dr.default.createElement(K2e,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",eee(e,c)),onDecline:()=>u("decline")})}function K2e({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=RR(e,r),u=`project-answer-${e.id}`;return dr.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)}},dr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},dr.default.createElement(Ce,{tone:e.kind==="secret"?"warning":"info"},H2e[e.kind]||e.kind),dr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),dr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:W,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),dr.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&dr.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)"}},dr.default.createElement("option",{value:""},"Choose\u2026"),V3(e).map(c=>dr.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&dr.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"?W:"inherit"}}),e.kind==="secret"&&dr.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."),dr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?dr.default.createElement(dr.default.Fragment,null,dr.default.createElement(pe,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),dr.default.createElement(pe,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):dr.default.createElement(dr.default.Fragment,null,dr.default.createElement(pe,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),dr.default.createElement(pe,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&dr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&dr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var Ft=Z(Q());async function xA(e){return e.json().catch(()=>({}))}function dj({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,Ft.useState)(null),[i,s]=(0,Ft.useState)(null),[l,u]=(0,Ft.useState)(null),[c,d]=(0,Ft.useState)(0),[p,f]=(0,Ft.useState)(!1),m=(0,Ft.useCallback)(async()=>{let h=await fetch(n),g=await xA(h);if(!h.ok)throw new Error(ot(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,Ft.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await m();if(h)return;a(b),s(null),b.project&&t?.(b.project);let k=cee(b.pull_request);k&&(g=setTimeout(v,k))}catch(b){h||s(b.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[m,c]);let y=async h=>{f(!0),s(null);try{let g=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await xA(g);if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));d(b=>b+1)}catch(g){s(g.message)}finally{f(!1)}},x=o?.pull_request||null;return e.install_state==="installed"&&!x?null:Ft.default.createElement(Ft.default.Fragment,null,Ft.default.createElement(V2e,{project:e,pullRequest:x,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:y}),l&&Ft.default.createElement(G2e,{project:e,base:n,pullRequest:x,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function V2e({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=uee(t),{canOpen:c,canUpdate:d,openBranch:p}=dee(t);return Ft.default.createElement(ze,{testId:"project-install-pull-request"},Ft.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ft.default.createElement(We,null,"Install pull request"),Ft.default.createElement(Ce,{tone:u},l),t?.url&&Ft.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),Ft.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&Ft.default.createElement(pe,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&Ft.default.createElement(pe,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&Ft.default.createElement(pe,{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"))),Ft.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&&Ft.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:W,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&Ft.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&Ft.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&Ft.default.createElement("details",{style:{marginTop:6}},Ft.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),Ft.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:W,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>Ft.default.createElement("li",{key:f},f)))),o&&Ft.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function G2e({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,Ft.useState)(null),[c,d]=(0,Ft.useState)(null),[p,f]=(0,Ft.useState)(!0),[m,y]=(0,Ft.useState)(null),[x,h]=(0,Ft.useState)(new Set),[g,v]=(0,Ft.useState)(s?r?.title||"":"Install ActiveAgent"),[b,k]=(0,Ft.useState)(""),[S,w]=(0,Ft.useState)(s&&r?.branch||""),[_,A]=(0,Ft.useState)(T2),[C,E]=(0,Ft.useState)(!1),[I,J]=(0,Ft.useState)(0);(0,Ft.useEffect)(()=>{let U=!1,N=null;f(!0);let T=async(D=!1)=>{try{let O=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D?{confirm:!0}:{})}),j=await xA(O);if(U)return;if(O.status===409&&j.code==="confirmation_required"){o?.(j.confirmation,()=>T(!0));return}if(O.status===202){y(j.error),N=setTimeout(()=>T(),3e3);return}if(!O.ok)throw new Error(ot(j,`Could not read the sandbox's changes (HTTP ${O.status}).`));y(null),u(j.preview),d(j.publishing),h(P2(j.preview.files)),w(M=>M||j.preview.suggested_branch||""),f(!1)}catch(O){U||(y(O.message),f(!1))}};return T(),()=>{U=!0,clearTimeout(N)}},[t,I]);let $=async()=>{E(!0),y(null);try{let U=I2({files:l?.files,selection:x,title:g,body:b,branch:S,message:_,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(U)}),T=await xA(N);if(!N.ok)throw O2(T.code)&&J(D=>D+1),new Error(ot(T,`Could not publish (HTTP ${N.status}).`));i(T.pull_request)}catch(U){y(U.message)}finally{E(!1)}};return Ft.default.createElement(bD,{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:x,onToggle:U=>h(N=>M2(N,U)),fields:{title:g,body:b,branch:S,message:_,allowlist:""},onField:(U,N)=>({title:v,body:k,branch:w,message:A})[U]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:$,onCancel:a,patchHref:(U,N)=>pee(e.id,U,N)})}var cn=Z(Q());var Y2e={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},X2e={progress:"info",success:"success",error:"error",neutral:"muted"};function pj({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 cn.default.createElement(ze,{testId:"project-setup"},cn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},cn.default.createElement(We,null,"Setup"),cn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},cn.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},cn.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&cn.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},cn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},cn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&cn.default.createElement(Ce,{tone:"muted"},"not used"),l&&cn.default.createElement(Ce,{tone:X2e[fs(l.status).tone]||"muted"},fs(l.status).label),Y3(e)&&n&&cn.default.createElement(pe,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),cn.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},oee(e)),l?.id&&cn.default.createElement("a",{href:Re(ms(l.id)),onClick:u=>{u.preventDefault(),lt(ms(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&&cn.default.createElement(x0,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),cn.default.createElement("div",{style:{marginTop:12}},cn.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},cn.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&cn.default.createElement(Ce,{tone:"muted"},"unavailable"),i&&cn.default.createElement(Ce,{tone:Y2e[i.status]||"muted"},i.status.replace("_"," ")),cn.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&cn.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),aee(e)&&cn.default.createElement(pe,{size:"sm",variant:Y3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),cn.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},tee(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."),cn.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 $ee="/settings?tab=integrations",Z2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},J2e={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function Zs(e){return e.json().catch(()=>({}))}function fj({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,Ve.useState)(null),[a,i]=(0,Ve.useState)(null),[s,l]=(0,Ve.useState)([]),[u,c]=(0,Ve.useState)(()=>$R(window.location.search)),[d,p]=(0,Ve.useState)(!1),[f,m]=(0,Ve.useState)(null),[y,x]=(0,Ve.useState)(null),[h,g]=(0,Ve.useState)(null),[v,b]=(0,Ve.useState)(!1),[k,S]=(0,Ve.useState)(null),[w,_]=(0,Ve.useState)(null),[A,C]=(0,Ve.useState)(null),E=(0,Ve.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/boot`),Y=await Zs(P);if(!P.ok)throw new Error(ot(Y,`Could not load the project (HTTP ${P.status}).`));o(Y.project),i(Y)},[e]),I=(0,Ve.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/secrets`),Y=await Zs(P);if(!P.ok)throw new Error(ot(Y,`Could not list the project's secrets (HTTP ${P.status}).`));l(Y.secrets||[])},[e]);(0,Ve.useEffect)(()=>{E().catch(P=>m(P.message)),I().catch(P=>x(P.message))},[E,I]);let J=P=>{c(P),P!=="browser"&&p(!1);let{pathname:Y,search:B}=window.location;window.history.replaceState(window.history.state,"",`${Y}${LR(B,P)}`)},$=n?.sandbox_state==="failed",[U,N]=(0,Ve.useState)(null);(0,Ve.useEffect)(()=>{N($?Date.now():null)},[$,n?.sandbox?.session_id]);let T=DR(n),D=T||ree(n)||nee(n,U);(0,Ve.useEffect)(()=>{if(!D)return;let P=setTimeout(()=>E().catch(Y=>m(Y.message)),AR);return()=>clearTimeout(P)},[D,a,E]);let O=n?.sandbox?.session_id;jh("SandboxChannel",{session_id:O},P=>{$h(P)&&E().catch(()=>{})},!!O);let j=async(P,{confirm:Y=!1,onDone:B}={})=>{b(!0),m(null);try{let oe=await fetch(P,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Y?{confirm:!0}:{})}),ne=await Zs(oe);if(oe.status===409&&ne.code==="confirmation_required")return g({question:ne.confirmation,retry:()=>j(P,{confirm:!0,onDone:B})}),null;if(!oe.ok)throw new Error(ot(ne,`The request failed (HTTP ${oe.status}).`));return g(null),ne.project&&o(ne.project),await E(),B?.(ne),ne}catch(oe){return m(oe.message),null}finally{b(!1)}},M=()=>j(`/api/projects/${e}/run_evaluation`,{onDone:P=>{P.run&&S(P.run)}}),H=(P,Y)=>g({question:P,retry:Y}),G=async(P,Y,B="setup")=>{b(!0),m(null);try{let oe=await fetch(`/api/projects/${e}/${B}`,{method:P,headers:{"Content-Type":"application/json"},body:JSON.stringify(Y||{})}),ne=await Zs(oe);if(!oe.ok)throw new Error(ot(ne,`The setup request failed (HTTP ${oe.status}).`));ne.project&&o(ne.project),await E()}catch(oe){m(oe.message)}finally{b(!1)}},z=async()=>{m(null);let P=await fetch(`/api/projects/${e}/synced_agents`),Y=await Zs(P);if(!P.ok){m(ot(Y,`Could not list the checkout's agents (HTTP ${P.status}).`));return}_(Y.synced_agents||[])},V=async P=>{b(!0);try{let Y=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(P)}),B=await Zs(Y);if(!Y.ok)throw new Error(ot(B,`Could not choose the agent (HTTP ${Y.status}).`));o(B.project),_(null)}catch(Y){m(Y.message)}finally{b(!1)}},K=async P=>{x(null);let Y=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:P})}),B=await Zs(Y);return Y.ok?(l(B.secrets||[]),!0):(x(ot(B,`Could not save the secrets (HTTP ${Y.status}).`)),!1)},ie=async(P,Y)=>{x(null);let B=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(P)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:Y})}),oe=await Zs(B);if(!B.ok){let ne=ot(oe,`Could not replace ${P} (HTTP ${B.status}).`);throw x(ne),new Error(ne)}await I()},Ie=async P=>{x(null);let Y=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(P)}`,{method:"DELETE"});if(!Y.ok){x(ot(await Zs(Y),`Could not delete ${P} (HTTP ${Y.status}).`));return}await I()},ge=async()=>{x(null);let P=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,Y=await fetch(`/api/projects/discover_secrets?${P}`),B=await Zs(Y);if(!Y.ok){x(ot(B,`Could not read the repository's environment variables (HTTP ${Y.status}).`));return}C(ib(B.variables||[],s))},de=async()=>{if(!await Wr({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 P=await fetch(`/api/projects/${e}`,{method:"DELETE"});P.ok?r():m(ot(await Zs(P),`Could not delete the project (HTTP ${P.status}).`))};if(!n)return f?Ve.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):Ve.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let R=a?.browser_modes||[],ee=zR(n,R),L=P=>{P&&p(!0),J("browser")},te=n.target_agent,F=!te&&n.install_state==="installed";return Ve.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},Ve.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},Ve.default.createElement("div",{style:{flex:1,minWidth:260}},Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),Ve.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),Ve.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},Ve.default.createElement("span",{style:{fontFamily:W,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),Ve.default.createElement(Ce,{tone:Z2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),Ve.default.createElement(Ce,{tone:dA[n.install_state==="installed"?"supported":"bootstrap"]},J2e[n.install_state]),Ve.default.createElement(Gr,{href:Re($ee),onClick:()=>lt($ee),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),Ve.default.createElement("div",{style:{display:"flex",gap:8}},Ve.default.createElement(pe,{onClick:()=>j(`/api/projects/${e}/boot`),disabled:v||T,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":T?"Booting\u2026":"Boot sandbox"),ee&&Ve.default.createElement(pe,{onClick:()=>L(ee.watch),testId:"project-watch-live"},ee.label),Ve.default.createElement(pe,{variant:"primary",onClick:()=>M(),disabled:v||!te,testId:"run-project-evaluation",title:te?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&Ve.default.createElement(ze,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},Ve.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),Ve.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Ve.default.createElement(pe,{variant:"primary",onClick:()=>{let{retry:P}=h;g(null),P?.()},disabled:v},"Run it on this machine"),Ve.default.createElement(pe,{onClick:()=>g(null)},"Cancel"))),f&&Ve.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),Ve.default.createElement(ps,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${sj(s).length})`},...R.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[],{value:"sessions",label:"Sessions"}],value:u,onChange:J}),u==="overview"&&Ve.default.createElement(Ve.default.Fragment,null,Ve.default.createElement(J3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),Ve.default.createElement(cj,{projectId:e,setupAgentId:n.setup?.agent_id,version:`${n.pending_input_requests}:${n.setup?.last_run?.id}:${n.setup?.last_run?.status}`,onSettled:()=>E().catch(()=>{})}),Ve.default.createElement(pj,{project:n,busy:v,onAsk:()=>G("POST"),onFixWithClaudeCode:()=>G("POST",null,"setup/claude_code"),onToggleAuto:P=>G("PATCH",{auto:P})}),Ve.default.createElement(ze,null,Ve.default.createElement(We,null,"Agent under evaluation"),te&&Ve.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Ve.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},te.name),Ve.default.createElement(Ce,{tone:"accent"},te.kind==="app_assistant"?"App assistant":`synced agent ${te.synced_agent}`),Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${te.id}/edit`)},"Open agent"),n.evaluation&&Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&Ve.default.createElement(pe,{size:"sm",onClick:z},"Change")),F&&!w&&Ve.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.",Ve.default.createElement("div",{style:{marginTop:8}},Ve.default.createElement(pe,{size:"sm",onClick:z,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),w&&Ve.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},w.length===0&&Ve.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),w.map(P=>Ve.default.createElement("li",{key:P.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},Ve.default.createElement("span",{style:{fontFamily:W,fontSize:13}},P.tool),Ve.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},P.description),Ve.default.createElement(pe,{size:"sm",onClick:()=>V({synced_agent:P.slug}),disabled:v},"Evaluate this agent")))),k&&Ve.default.createElement("div",{"data-testid":"project-run",style:{marginTop:10,fontSize:13,color:"var(--color-text-secondary)"}},"Run ",k.id," is ",k.status,T?": it starts once the sandbox is ready":"","."," ",Ve.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${k.evaluation_id}/runs/${k.id}`)},"Open run"))),te?.kind==="app_assistant"&&Ve.default.createElement(Z3,{project:n,onSaved:P=>{P&&o(P),E().catch(()=>{})},onConfirmationRequired:H}),Ve.default.createElement(dj,{project:n,onProjectChanged:P=>o(Y=>Y&&P.install_state!==Y.install_state?P:Y),onConfirmationRequired:H}),Ve.default.createElement("div",null,Ve.default.createElement(pe,{variant:"danger",size:"sm",onClick:de},"Delete project"))),u==="explorations"&&Ve.default.createElement(uj,{projectId:e,project:n}),u==="browser"&&Ve.default.createElement(Q3,{project:n,modes:R,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="sessions"&&Ve.default.createElement(K3,{project:n}),u==="environment"&&Ve.default.createElement(Ve.default.Fragment,null,Ve.default.createElement(R3,{secrets:sj(s),onReplace:ie,onDelete:Ie,error:y}),A?Ve.default.createElement(ze,null,Ve.default.createElement(We,null,"Add secrets"),Ve.default.createElement("div",{style:{marginTop:8}},Ve.default.createElement(ub,{rows:A,onChange:C,repository:n.repository})),Ve.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},Ve.default.createElement(pe,{variant:"primary",disabled:!!Fh(A)||sb(A).length===0,onClick:async()=>{await K(sb(A))&&C(null)}},"Save secrets"),Ve.default.createElement(pe,{onClick:()=>C(null)},"Cancel"),Fh(A)&&Ve.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Fh(A)))):Ve.default.createElement("div",null,Ve.default.createElement(pe,{size:"sm",onClick:ge},"Add secrets"))))}var ma=Z(Q());var Q2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function mj({projects:e,onOpen:t,onNew:r}){return ma.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},ma.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},ma.default.createElement("div",{style:{flex:1}},ma.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),ma.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.")),ma.default.createElement(pe,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&ma.default.createElement(ze,null,ma.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=>ma.default.createElement(ze,{key:n.id,padding:14,testId:`project-${n.id}`},ma.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},ma.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),ma.default.createElement("span",{style:{fontFamily:W,fontSize:12,color:"var(--color-text-muted)"}},n.repository),ma.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},ma.default.createElement(Ce,{tone:Q2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&ma.default.createElement(Ce,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function gj({visit:e=0}){let[t,r]=(0,ga.useState)(()=>lb(Qn())),[n,o]=(0,ga.useState)(null),[a,i]=(0,ga.useState)(null);(0,ga.useEffect)(()=>{r(lb(Qn()))},[e]),(0,ga.useEffect)(()=>{let u=()=>r(lb(Qn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,ga.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,ga.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{ad(u),r(lb(u))};return t.creating?ga.default.createElement(q3,{onCreated:u=>l(wf(u.id)),onCancel:()=>l("/projects")}):t.projectId?ga.default.createElement(fj,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?ga.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?ga.default.createElement(mj,{projects:n,onOpen:u=>l(wf(u.id)),onNew:()=>l(wf(null))}):ga.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Yr=Z(Q());function hj({visit:e=0}){let[t,r]=(0,Yr.useState)(()=>vA(Qn())),[n,o]=(0,Yr.useState)(null),[a,i]=(0,Yr.useState)(null),[s,l]=(0,Yr.useState)(null);(0,Yr.useEffect)(()=>{r(vA(Qn()))},[e]),(0,Yr.useEffect)(()=>{let c=()=>r(vA(Qn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Yr.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,Yr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Yr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Yr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Yr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(wf(c.id)),style:{padding:0}},"\u2190 ",c.name):Yr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Yr.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${d.id}`)},"Open ",d.name)),Yr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Yr.default.createElement(Af,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Yr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Yr.default.createElement("div",null,Yr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Yr.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&&Yr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Yr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Yr.default.createElement(ze,null,Yr.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&&Yr.default.createElement(_f,{explorations:n,onOpen:c=>lt(yA(c.id))}))}var xt=Z(Q());var ye=Z(Q());var ri=Z(Q());var yj=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?W:void 0}),Lee={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},zee=e=>typeof e=="string"?e:void 0;function Sn({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,ri.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":zee(e),"data-testid":s};return ri.default.createElement("div",{style:Lee},ri.default.createElement("label",{htmlFor:l},e),a?ri.default.createElement("textarea",{...u,rows:i,style:{...yj(o),resize:"vertical"}}):ri.default.createElement("input",{...u,style:yj(o)}))}function xd({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,ri.useId)();return ri.default.createElement("div",{style:Lee},ri.default.createElement("label",{htmlFor:a},e),ri.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":zee(e),style:yj(!1),"data-testid":o},n))}function db({label:e,checked:t,onChange:r}){return ri.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},ri.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function ha({tone:e="info",children:t}){let r=e==="error";return ri.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 Rn(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 Bee(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var R2e=["collections","generate","import"],eAe=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function vj(e=""){let r=String(e).match(eAe)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function Fee({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!R2e.includes(e)?"/scenarios":`/scenarios/${e}`}function xj(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 bA(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function Uee(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 Wee(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:bA(e.tools),contains:bA(e.contains),not_contains:bA(e.notContains)},tags:bA(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function Hee(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 qee(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 tAe=["create","update","remove","keep"],rAe={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function Kee(e){let t=e?.changes||[];return tAe.map(r=>({action:r,label:rAe[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function Vee(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 Gee(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function Yee(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function bj({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,ye.useState)(null),[u,c]=(0,ye.useState)(null),[d,p]=(0,ye.useState)(null),[f,m]=(0,ye.useState)({productIds:[],setIds:[],scenarioIds:[]}),[y,x]=(0,ye.useState)(!1),[h,g]=(0,ye.useState)(!1),v=`/api/scenario_catalogs/${e}`,b=(0,ye.useCallback)(async()=>{try{let E=await Rn(v,{fallback:"Could not open the collection"});l(E.catalog),c(null)}catch(E){c(E.message)}},[v]);(0,ye.useEffect)(()=>{b()},[b]);let k=async(E,I,J,$)=>{let U=await Rn(`${v}${E}`,{method:I,body:J,fallback:$});return U.catalog?l(U.catalog):await b(),a?.(),U},S=async E=>{c(null),p(null);try{await E()}catch(I){c(I.message)}},w=f.productIds.length+f.setIds.length+f.scenarioIds.length,_=(E,I)=>m(J=>({...J,[E]:Yee(J[E],I)})),A=E=>S(async()=>{let I=await Bee(xj(e,E,{inline:!0})),J=await ld(I);p(J?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(xj(e,E),"_blank");return s?ye.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ye.default.createElement(nAe,{collection:s,onCancel:()=>x(!1),onSave:async E=>{await k("","PATCH",{catalog:E},"Could not save the collection"),x(!1)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},ye.default.createElement("div",null,ye.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),ye.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},ye.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),ye.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")),ye.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>x(!0)},"Rename"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>A({})},"Copy YAML"),n&&ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>S(async()=>{await k("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>S(async()=>{await Wr({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 Rn(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ye.default.createElement(ha,{tone:"error"},u),d&&ye.default.createElement(ha,null,d),w>0&&ye.default.createElement(ze,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},w," selected"),ye.default.createElement(pe,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>A(f)},"Copy YAML"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),ye.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&&ye.default.createElement(ze,{testId:"scenarios-collection-empty"},ye.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No products yet. A product is what its sets run against: an agent, or a project whose booted app the replays reach.")),(s.products||[]).map(E=>ye.default.createElement(oAe,{key:E.id,product:E,collection:s,agents:t,projects:r,selection:f,onToggle:_,change:k,act:S,setNotice:p})),h?ye.default.createElement(Zee,{agents:t,projects:r,onCancel:()=>g(!1),onSave:async E=>{await k("/products","POST",{product:E},"Could not add the product"),g(!1)}}):ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ye.default.createElement(ha,{tone:"error"},u):ye.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function nAe({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(e.name||""),[a,i]=(0,ye.useState)(e.description||"");return ye.default.createElement(wA,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ye.default.createElement(Sn,{label:"Name",value:n,onChange:o}),ye.default.createElement(Sn,{label:"Description",value:a,onChange:i}))}function oAe({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,ye.useState)(!1),[d,p]=(0,ye.useState)(!1),f=`/products/${e.id}`;return ye.default.createElement(ze,{testId:"scenarios-product"},u?ye.default.createElement(Zee,{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)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},ye.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}}),ye.default.createElement("div",null,ye.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ye.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},ye.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&&ye.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),ye.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await Wr({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"))),ye.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>ye.default.createElement(aAe,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?ye.default.createElement(Jee,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):ye.default.createElement("div",null,ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function aAe({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,ye.useState)((e.scenarios||[]).length<=5),[p,f]=(0,ye.useState)(!1),[m,y]=(0,ye.useState)(null),x=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,g]=(0,ye.useState)(x),v=`/sets/${e.id}`,b=()=>l(async()=>{let[k,S]=h.split(":"),w=k==="project"?{project_id:Number(S)}:k==="agent"?{agent_id:Number(S)}:{},_=await Rn(`/api/scenario_catalogs/${r.id}${v}/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 ye.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?ye.default.createElement(Jee,{set:e,onCancel:()=>f(!1),onSave:async k=>{await s(v,"PATCH",{set:k},"Could not save the set"),f(!1)}}):ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},ye.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),ye.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ye.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),ye.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&ye.default.createElement(Ce,null,`judge ${e.judge.kind}`),e.evaluation&&ye.default.createElement("a",{href:"#",style:{fontSize:12},onClick:k=>{k.preventDefault(),lt(`/evaluations/${e.evaluation.id}`)}},"evaluation",e.latest_run?` (latest run ${e.latest_run.status})`:"")),ye.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ye.default.createElement("select",{value:h,onChange:k=>g(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)"}},ye.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&ye.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(k=>ye.default.createElement("option",{key:`project-${k.id}`,value:`project:${k.id}`},k.name))),n.length>0&&ye.default.createElement("optgroup",{label:"Agents"},n.map(k=>ye.default.createElement("option",{key:`agent-${k.id}`,value:`agent:${k.id}`},k.name)))),ye.default.createElement(pe,{size:"sm",onClick:b,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>d(k=>!k)},c?"Hide":"Scenarios"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await Wr({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(v,"DELETE",void 0,"Could not delete the set")})},"Delete"))),c&&ye.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(k=>m===k.id?ye.default.createElement("li",{key:k.id},ye.default.createElement(Xee,{scenario:k,onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios/${k.id}`,"PATCH",S,"Could not save the scenario"),y(null)}})):ye.default.createElement(iAe,{key:k.id,scenario:k,selected:a.scenarioIds.includes(k.id),onToggle:()=>i("scenarioIds",k.id),onEdit:()=>y(k.id),onDelete:()=>l(async()=>{await Wr({title:`Delete scenario ${k.key}?`,confirmLabel:"Delete scenario",danger:!0})&&await s(`${v}/scenarios/${k.id}`,"DELETE",void 0,"Could not delete the scenario")})})),ye.default.createElement("li",null,m==="new"?ye.default.createElement(Xee,{onCancel:()=>y(null),onSave:async k=>{await s(`${v}/scenarios`,"POST",k,"Could not add the scenario"),y(null)}}):ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function iAe({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=qee(e.expectations);return ye.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},ye.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),ye.default.createElement("div",{style:{flex:1,minWidth:0}},ye.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},ye.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&ye.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&ye.default.createElement("span",{style:{fontFamily:W}},a)),ye.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>ye.default.createElement(Ce,{key:i},i)),e.production_only&&ye.default.createElement(Ce,{tone:"warning"},"production only"),!e.enabled&&ye.default.createElement(Ce,null,"disabled"))),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:n},"Edit"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function wA({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,ye.useState)(!1),[s,l]=(0,ye.useState)(null);return ye.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&&ye.default.createElement(ha,{tone:"error"},s),ye.default.createElement("div",{style:{display:"flex",gap:8}},ye.default.createElement(pe,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ye.default.createElement(pe,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function Zee({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,ye.useState)(e?.name||""),[s,l]=(0,ye.useState)(e?.key||""),[u,c]=(0,ye.useState)(e?.description||""),[d,p]=(0,ye.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,ye.useState)(e?.project?String(e.project.id):"");return ye.default.createElement(wA,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(Sn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ye.default.createElement(Sn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(xd,{label:"Agent",value:d,onChange:p},ye.default.createElement("option",{value:""},"None"),t.map(y=>ye.default.createElement("option",{key:y.id,value:y.id},y.name))),ye.default.createElement(xd,{label:"Project",value:f,onChange:m},ye.default.createElement("option",{value:""},"None"),r.map(y=>ye.default.createElement("option",{key:y.id,value:y.id},y.name)))),ye.default.createElement(Sn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function Jee({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(e?.name||""),[a,i]=(0,ye.useState)(e?.key||""),[s,l]=(0,ye.useState)(e?.description||""),[u,c]=(0,ye.useState)(e?.judge?.kind||"");return ye.default.createElement(wA,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(Sn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ye.default.createElement(Sn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(xd,{label:"Judge",value:u,onChange:c},ye.default.createElement("option",{value:""},"The evaluation's default"),ye.default.createElement("option",{value:"rules"},"Rules (expectations only)"),ye.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),ye.default.createElement(Sn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function Xee({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(()=>Uee(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ye.default.createElement(wA,{onCancel:r,onSave:()=>t(Wee(n)),problem:Hee(n),testId:"scenarios-scenario-form"},ye.default.createElement(Sn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ye.default.createElement(Sn,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),ye.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ye.default.createElement(Sn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ye.default.createElement(Sn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ye.default.createElement(Sn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ye.default.createElement(Sn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ye.default.createElement(Sn,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),ye.default.createElement("div",{style:{display:"flex",gap:16}},ye.default.createElement(db,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ye.default.createElement(db,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Et=Z(Q());function wj({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,Et.useState)(""),[a,i]=(0,Et.useState)(null),[s,l]=(0,Et.useState)(null),[u,c]=(0,Et.useState)({sandbox:null,modes:[]}),[d,p]=(0,Et.useState)([]),[f,m]=(0,Et.useState)(null),[y,x]=(0,Et.useState)({collectionId:"",setId:""}),[h,g]=(0,Et.useState)(null),[v,b]=(0,Et.useState)(null),k=(0,Et.useCallback)(async()=>{if(n)try{let[E,I,J,$]=await Promise.all([Rn(`/api/projects/${n}`,{fallback:"Could not load the project"}),Rn("/api/projects/capabilities").catch(()=>({})),Rn("/api/sandboxes").catch(()=>({})),Rn(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),U=E.project;i(U),l((I.items||[]).find(T=>T.key==="model_credentials")||null);let N=U?.sandbox?.session_id;c({sandbox:(J.sandboxes||[]).find(T=>T.session_id===N)||null,modes:J.browser_modes||[]}),p($.explorations||[]),b(null)}catch(E){b(E.message)}},[n]);(0,Et.useEffect)(()=>{i(null),m(null),k()},[k]),(0,Et.useEffect)(()=>{if(!y.collectionId){g(null);return}Rn(`/api/scenario_catalogs/${y.collectionId}`).then(E=>g(E.catalog)).catch(E=>b(E.message))},[y.collectionId]);let S=(h?.products||[]).flatMap(E=>(E.sets||[]).map(I=>({...I,product:E}))),w=S.find(E=>String(E.id)===String(y.setId)),_=async()=>{try{let I=(await Rn("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,J=await Rn(`/api/scenario_catalogs/${I}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),$=await Rn(`/api/scenario_catalogs/${I}/products/${J.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),x({collectionId:String(I),setId:String($.set.id)})}catch(E){b(E.message)}},A=a?.sandbox_state==="ready",C=f||d[0]?.id;return Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},Et.default.createElement(ze,null,Et.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Et.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."),Et.default.createElement(xd,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},Et.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.name))),e.length===0&&Et.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/projects/new")}},"Create one")," from a repository first."))),v&&Et.default.createElement(ha,{tone:"error"},v),a&&Et.default.createElement(Et.default.Fragment,null,s&&!s.ok&&Et.default.createElement(ha,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!A&&Et.default.createElement(ha,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Et.default.createElement(cb,{projectId:a.id,sandboxReady:A,onStarted:E=>{m(E.id),k()}}),A&&u.sandbox&&u.modes.length>0&&Et.default.createElement(en,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Et.default.createElement(Sf,{sandbox:u.sandbox,modes:u.modes})),Et.default.createElement(en,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},Et.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Et.default.createElement(xd,{label:"Collection",value:y.collectionId,onChange:E=>x({collectionId:E,setId:""})},Et.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.name))),Et.default.createElement(xd,{label:"Set",value:y.setId,onChange:E=>x(I=>({...I,setId:E}))},Et.default.createElement("option",{value:""},h&&S.length===0?"The collection has no sets yet":"Choose a set\u2026"),S.map(E=>Et.default.createElement("option",{key:E.id,value:E.id},E.product.name," / ",E.name)))),Et.default.createElement("div",null,Et.default.createElement(pe,{size:"sm",variant:"ghost",onClick:_},"New collection for ",a.name))),d.length===0?Et.default.createElement(ze,null,Et.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.")):Et.default.createElement(Et.default.Fragment,null,Et.default.createElement(_f,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!w&&Et.default.createElement(ha,null,"Choose the set to accept into, above."),Et.default.createElement(Af,{key:`${C}-${w?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:w?{id:w.id,label:`${w.product.name} / ${w.name}`}:null,onAccepted:()=>r?.()}))))}var Kt=Z(Q());var sAe=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],lAe=`catalog: support_desk products: - key: triage agent: TriageAgent @@ -101,7 +101,7 @@ products: - key: refund prompt: A customer asks for a refund. notes: Looks the order up before answering. - expect: { tools: [lookup_order] }`,nAe={create:"success",update:"warning",remove:"error",keep:"muted"};function gj({onImported:e}){let[t,r]=(0,Kt.useState)("document"),[n,o]=(0,Kt.useState)(""),[a,i]=(0,Kt.useState)(""),[s,l]=(0,Kt.useState)(""),[u,c]=(0,Kt.useState)(""),[d,p]=(0,Kt.useState)(".activeagents/evals"),[f,m]=(0,Kt.useState)(!0),[y,x]=(0,Kt.useState)(null),[h,g]=(0,Kt.useState)(!1),[v,b]=(0,Kt.useState)(null),S=()=>{let I=f?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:I}:{document:n,mode:I,...a?{source_path:a}:{}}},w=t==="repository"?!!s.trim():!!n.trim(),_=I=>Q=>{I(Q),x(null)},k=async I=>{g(!0),b(null);try{await I()}catch(Q){b(Q.message)}finally{g(!1)}},A=()=>k(async()=>{let I=await Qn("/api/scenario_catalogs/preview",{method:"POST",body:S(),fallback:"The preview failed"});x(I.previews||[])}),C=()=>k(async()=>{let I=await Qn("/api/scenario_catalogs",{method:"POST",body:S(),fallback:"Import refused"});x(null),o(""),i(""),e?.(I.catalogs||[])}),E=I=>{if(!I)return;let Q=new FileReader;Q.onload=()=>{i(I.name),_(o)(String(Q.result||""))},Q.onerror=()=>b(`Could not read ${I.name}.`),Q.readAsText(I)};return Kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},Kt.default.createElement(ze,null,Kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Kt.default.createElement(ds,{options:tAe,value:t,onChange:I=>{r(I),x(null)}}),t==="document"&&Kt.default.createElement(bn,{label:"YAML",value:n,onChange:_(o),placeholder:rAe,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&Kt.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",Kt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:I=>E(I.target.files?.[0])}),a&&Kt.default.createElement("span",{style:{fontFamily:H}},a," \xB7 ",n.length," characters")),t==="repository"&&Kt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Kt.default.createElement(bn,{label:"Repository",value:s,onChange:_(l),placeholder:"owner/name",mono:!0}),Kt.default.createElement(bn,{label:"Ref",value:u,onChange:_(c),placeholder:"the default branch when empty",mono:!0}),Kt.default.createElement(bn,{label:"Path",value:d,onChange:_(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),Kt.default.createElement(ib,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:_(m)}),Kt.default.createElement("div",{style:{display:"flex",gap:8}},Kt.default.createElement(pe,{onClick:A,disabled:h||!w,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),Kt.default.createElement(pe,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},Fee(y||[])?"Apply, overwriting":"Apply")))),v&&Kt.default.createElement(ha,{tone:"error"},v),y&&y.map(I=>Kt.default.createElement(oAe,{key:`${I.catalog?.key}-${I.source_path||""}`,preview:I})))}function oAe({preview:e}){let t=zee(e);return Kt.default.createElement(ze,{testId:"scenarios-import-preview-result"},Kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Kt.default.createElement(Ce,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),Kt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},Bee(e))),e.source_path&&Kt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:H,marginTop:4}},e.source_path),t.length===0?Kt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):Kt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>Kt.default.createElement("div",{key:r.action},Kt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},Kt.default.createElement(Ce,{tone:nAe[r.action]},r.label),Kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),Kt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:H,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>Kt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&Kt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var aAe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function hj({visit:e=0}){let[t,r]=(0,xt.useState)(()=>dj(Jn())),[n,o]=(0,xt.useState)(null),[a,i]=(0,xt.useState)(!1),[s,l]=(0,xt.useState)({agents:[],projects:[]}),[u,c]=(0,xt.useState)(null),[d,p]=(0,xt.useState)(null),[f,m]=(0,xt.useState)(!1);(0,xt.useEffect)(()=>{let v=()=>r(dj(Jn()));return window.addEventListener("popstate",v),window.addEventListener("dashboard:navigate",v),()=>{window.removeEventListener("popstate",v),window.removeEventListener("dashboard:navigate",v)}},[]);let y=(0,xt.useCallback)(async()=>{try{let v=await Qn("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(v.catalogs||[]),i(v.storage_available===!0),c(null)}catch(v){c(v.message)}},[]),x=(0,xt.useCallback)(async()=>{try{let[v,b]=await Promise.all([Qn("/api/agents").catch(()=>({})),Qn("/api/projects").catch(()=>({}))]);l({agents:(v.agents||[]).filter(S=>!S.observed),projects:b.projects||[]})}catch{}},[]);(0,xt.useEffect)(()=>{y(),x()},[y,x,e]);let h=v=>{p(null),c(null),lt(Iee(v))},g=async v=>{let b=await Qn("/api/scenario_catalogs",{method:"POST",body:{catalog:v},fallback:"Could not create the collection"});m(!1),await y(),h({collectionId:b.catalogs?.[0]?.id})};return t.collectionId?xt.default.createElement(fj,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:y,onDeleted:async()=>{await y(),h({})}}):xt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},xt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xt.default.createElement("div",null,xt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),xt.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"&&xt.default.createElement(pe,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},f?"Close":"New collection")),xt.default.createElement(ds,{options:aAe,value:t.tab,onChange:v=>h({tab:v})}),u&&xt.default.createElement(ha,{tone:"error"},u),d&&xt.default.createElement(ha,null,d),t.tab==="generate"&&xt.default.createElement(mj,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&xt.default.createElement(gj,{onImported:async v=>{await y(),v.length===1?h({collectionId:v[0].id}):p(`Imported ${v.map(b=>b.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&xt.default.createElement(xt.default.Fragment,null,f&&xt.default.createElement(iAe,{onCreate:g}),n===null?xt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?xt.default.createElement(ze,{testId:"scenarios-empty"},xt.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"," ",xt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):xt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(v=>xt.default.createElement(ze,{key:v.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:v.id}),testId:"scenarios-collection-card"},xt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xt.default.createElement("div",null,xt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},v.name),xt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},xt.default.createElement("code",null,v.key),v.source_path?` \xB7 ${v.source_path}`:v.source_kind==="api"?" \xB7 written here":` \xB7 ${v.source_kind}`)),xt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},v.product_count," ",v.product_count===1?"product":"products"," \xB7 ",v.scenario_count," scenarios",xt.default.createElement("div",null,v.synced?"synced to storage":a?"not synced":"database only"))))))))}function iAe({onCreate:e}){let[t,r]=(0,xt.useState)(""),[n,o]=(0,xt.useState)(""),[a,i]=(0,xt.useState)(""),[s,l]=(0,xt.useState)(!1),[u,c]=(0,xt.useState)(null);return xt.default.createElement(ze,{testId:"scenarios-new-collection-form"},xt.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}},xt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},xt.default.createElement(bn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),xt.default.createElement(bn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),xt.default.createElement(bn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&xt.default.createElement(ha,{tone:"error"},u),xt.default.createElement("div",null,xt.default.createElement(pe,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var un=Z(J());var sAe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function lAe({request:e,onSettle:t}){let[r,n]=(0,un.useState)(""),o=(0,un.useRef)(null),a=(0,un.useRef)(null),i=(0,un.useId)(),s=(0,un.useId)(),l=nQ(e,r);(0,un.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(sAe)||[]];if(f.length===0)return;let m=f[0],y=f[f.length-1];p.shiftKey&&document.activeElement===m?(p.preventDefault(),y.focus()):!p.shiftKey&&document.activeElement===y&&(p.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return un.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"}},un.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)"}},un.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),un.default.createElement("div",{id:s},e.message&&un.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&un.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",un.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",un.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)"}}))),un.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},un.default.createElement(pe,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),un.default.createElement(pe,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function Kee(){let[e,t]=(0,un.useState)(tQ());return(0,un.useEffect)(()=>rQ(t),[]),e?un.default.createElement(lAe,{key:cAe(e),request:e,onSettle:eQ}):null}var yj=new WeakMap,uAe=0;function cAe(e){return yj.has(e)||yj.set(e,++uAe),yj.get(e)}function dAe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=ut(),[i,s]=(0,Nt.useState)(t),[l,u]=(0,Nt.useState)("list"),[c,d]=(0,Nt.useState)(null),[p,f]=(0,Nt.useState)(!1),[m,y]=(0,Nt.useState)(null),[x,h]=(0,Nt.useState)(!1),[g,v]=(0,Nt.useState)("recent"),[b,S]=(0,Nt.useState)({messages:[]}),[w,_]=(0,Nt.useState)(null),k=tY(r),[A,C]=(0,Nt.useState)(null),{requests:E}=KC({refreshKey:l}),[I,Q]=(0,Nt.useState)(0),[$,F]=(0,Nt.useState)(null);(0,Nt.useEffect)(()=>{let ce=()=>{let R=rY(Jn(),k);R.focusServer&&C(R.focusServer),R.sessionId&&F({kind:R.sessionKind,id:R.sessionId}),R.replacePath&&window.history.replaceState({},"",tt(R.replacePath)),R.agentId?N(R.agentId,R.view):u(R.view)};return ce(),window.addEventListener("popstate",ce),window.addEventListener("dashboard:navigate",ce),()=>{window.removeEventListener("popstate",ce),window.removeEventListener("dashboard:navigate",ce)}},[]);let N=async(ce,R)=>{f(!0);try{let z=await(await fetch(`/api/agents/${ce}`)).json();d(z.agent),u(R)}catch{T("Failed to load agent","error")}finally{f(!1)}},O=async(ce=g)=>{f(!0);try{let ee=await(await fetch(`/api/agents?sort=${ce}`)).json();s(ee.agents)}catch{T("Failed to refresh agents","error")}finally{f(!1)}},j=ce=>{v(ce),O(ce)},T=(ce,R="info")=>{y({message:ce,type:R}),setTimeout(()=>y(null),3e3)},D=(ce,R=null)=>{let ee=WC(ce,{agent:R,features:k});ee!==null&&window.history.pushState({},"",tt(ee))},M=async ce=>{f(!0);try{let R=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:ce})});if(R.ok){let te=await R.json();return s([te.agent,...i]),d(te.agent),u("editor"),T("Agent created successfully!","success"),D("editor",te.agent),null}let ee=await R.json().catch(()=>({})),z={errors:ee.errors?.length?ee.errors:[ee.error||`Failed to create agent (${R.status})`],fieldErrors:ee.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)}},K=async(ce,R)=>{f(!0);try{let ee=await fetch(`/api/agents/${ce}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:R})});if(ee.ok){let z=await ee.json();s(i.map(te=>te.id===ce?z.agent:te)),d(z.agent),T("Agent updated!","success")}else{let z=await ee.json();T(z.errors?.join(", ")||"Failed to update agent","error")}}catch{T("Failed to update agent","error")}finally{f(!1)}},V=async ce=>{let R=i.find(ee=>ee.id===ce);if(await Wr({title:R?`Delete ${R.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:R?.name})){f(!0);try{(await fetch(`/api/agents/${ce}`,{method:"DELETE"})).ok&&(s(i.filter(z=>z.id!==ce)),d(null),u("list"),T("Agent deleted","success"),D("list"))}catch{T("Failed to delete agent","error")}finally{f(!1)}}},L=async ce=>{f(!0);try{let R=await fetch(`/api/agents/${ce}/duplicate`,{method:"POST"});if(R.ok){let ee=await R.json();s([ee.agent,...i]),T("Agent duplicated!","success")}}catch{T("Failed to duplicate agent","error")}finally{f(!1)}},G=ce=>{s([ce,...i]),h(!1),T("Agent created from template!","success"),ie("editor",ce)},W=["editor","runner","agent-analytics","history"],ie=(ce,R=null)=>{Jx(ce,k)&&(Q(ee=>ee+1),ce==="builder"&&_(null),R?.id&&W.includes(ce)&&R.instructions===void 0?N(R.id,ce):(d(R),u(ce)),D(ce,R))},Ie={assistant:()=>Nt.default.createElement(j3,{session:b,onSessionChange:S,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>ie("settings"),onReviewDraft:ce=>{_(ce),u("builder"),D("builder")}}),builder:()=>Nt.default.createElement(hT,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:M,onCancel:()=>ie(w?"assistant":"list"),isLoading:p}),editor:()=>c?Nt.default.createElement(B2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:ce=>K(c.id,ce),onDelete:()=>V(c.id),onRun:()=>ie("runner",c),onDuplicate:()=>L(c.id),onRunReport:()=>ie("history",c),onBack:()=>ie("list"),isLoading:p}):null,runner:()=>c?Nt.default.createElement(UD,{key:`runner-${c.id}-${window.location.search}`,agent:c,recorderUrl:r.recorderUrl,freshConversation:new URLSearchParams(window.location.search).has("new"),onBack:()=>ie("editor",c)}):null,"agent-analytics":()=>c?Nt.default.createElement(B2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:ce=>K(c.id,ce),onDelete:()=>V(c.id),onRun:()=>ie("runner",c),onDuplicate:()=>L(c.id),onRunReport:()=>ie("history",c),onBack:()=>ie("list"),isLoading:p}):null,history:()=>c?Nt.default.createElement(HD,{agent:c,onBack:()=>ie("editor",c)}):null,analytics:()=>Nt.default.createElement(WD,{onSelectAgent:ce=>{N(ce.id,"agent-analytics")}}),traces:()=>Nt.default.createElement(Gp,null),metrics:()=>Nt.default.createElement(r3,null),interactions:()=>Nt.default.createElement(Du,null),tools:()=>Nt.default.createElement(n3,{onOpenServer:ce=>{C(ce),ie("mcp")}}),mcp:()=>Nt.default.createElement(o3,{focusServer:A,onOpenTools:()=>{C(null),ie("tools")}}),evaluations:()=>Nt.default.createElement(F0,null),projects:()=>Nt.default.createElement(lj,{visit:I}),scenarios:()=>Nt.default.createElement(hj,{visit:I}),sessions:()=>Nt.default.createElement(k3,{agents:i,user:e}),exploration:()=>Nt.default.createElement(uj,{visit:I}),replay:()=>$?Nt.default.createElement(v3,{key:`${$.kind}-${$.id}`,kind:$.kind,id:$.id,onHandoff:ce=>{let R=ce?.handoff_state||{};R.url&&window.open(R.url,"_blank","noopener,noreferrer");let ee=Object.entries(R.form_values||{}).map(([z,te])=>`${z}: ${te}`).join(" \xB7 ");T(R.url?`Taking over in a new tab${ee?` \u2014 already entered: ${ee}`:""}`:"Taking over session...","info")},onBack:()=>lR(window.history.state)?window.history.back():ie("sessions")}):null,sandbox:()=>Nt.default.createElement(c3,{initialType:"playwright_mcp",showAgents:!0,onClose:()=>ie("list")}),organization:()=>Nt.default.createElement(_3,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>Nt.default.createElement(I3,{user:e}),list:()=>Nt.default.createElement(sT,{agents:i,meta:r,onSelect:ce=>ie("editor",ce),onNew:()=>ie("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:L,onDelete:V,onRefresh:O,sort:g,onSortChange:j,isLoading:p})},ge=()=>Jx(l,k)?(Ie[l]||Ie.list)():null;return Nt.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},Nt.default.createElement(KD,{currentView:nY(l),onNavigate:ie,agentCount:i.length,pendingInputCount:lY(E),account:n,user:e,gemVersion:r.activeagentVersion,features:k}),Nt.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},Nt.default.createElement(VD,{user:e,account:n}),Nt.default.createElement("main",{className:"flex-1 p-6 overflow-x-clip"},ge())),x&&Nt.default.createElement(qD,{onUseTemplate:G,onClose:()=>h(!1)}),Nt.default.createElement(Kee,null),m&&Nt.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&&Nt.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},Nt.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},Nt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function vj(e){return Nt.default.createElement(g6,null,Nt.default.createElement(bG,null,Nt.default.createElement(dAe,{...e})))}var pAe=new Set(["POST","PUT","PATCH","DELETE"]);function fAe(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(!pAe.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 mAe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function Vee(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=fAe(o,a,{base:r,csrfToken:mAe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var gAe="active-agent-dashboard";function Gee(){let e=document.getElementById(gAe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,Vee(t.mountPath||"/"),(0,Xee.createRoot)(e).render(Yee.default.createElement(vj,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Gee):Gee(); + expect: { tools: [lookup_order] }`,uAe={create:"success",update:"warning",remove:"error",keep:"muted"};function Sj({onImported:e}){let[t,r]=(0,Kt.useState)("document"),[n,o]=(0,Kt.useState)(""),[a,i]=(0,Kt.useState)(""),[s,l]=(0,Kt.useState)(""),[u,c]=(0,Kt.useState)(""),[d,p]=(0,Kt.useState)(".activeagents/evals"),[f,m]=(0,Kt.useState)(!0),[y,x]=(0,Kt.useState)(null),[h,g]=(0,Kt.useState)(!1),[v,b]=(0,Kt.useState)(null),k=()=>{let I=f?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:I}:{document:n,mode:I,...a?{source_path:a}:{}}},S=t==="repository"?!!s.trim():!!n.trim(),w=I=>J=>{I(J),x(null)},_=async I=>{g(!0),b(null);try{await I()}catch(J){b(J.message)}finally{g(!1)}},A=()=>_(async()=>{let I=await Rn("/api/scenario_catalogs/preview",{method:"POST",body:k(),fallback:"The preview failed"});x(I.previews||[])}),C=()=>_(async()=>{let I=await Rn("/api/scenario_catalogs",{method:"POST",body:k(),fallback:"Import refused"});x(null),o(""),i(""),e?.(I.catalogs||[])}),E=I=>{if(!I)return;let J=new FileReader;J.onload=()=>{i(I.name),w(o)(String(J.result||""))},J.onerror=()=>b(`Could not read ${I.name}.`),J.readAsText(I)};return Kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},Kt.default.createElement(ze,null,Kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Kt.default.createElement(ps,{options:sAe,value:t,onChange:I=>{r(I),x(null)}}),t==="document"&&Kt.default.createElement(Sn,{label:"YAML",value:n,onChange:w(o),placeholder:lAe,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&Kt.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",Kt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:I=>E(I.target.files?.[0])}),a&&Kt.default.createElement("span",{style:{fontFamily:W}},a," \xB7 ",n.length," characters")),t==="repository"&&Kt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Kt.default.createElement(Sn,{label:"Repository",value:s,onChange:w(l),placeholder:"owner/name",mono:!0}),Kt.default.createElement(Sn,{label:"Ref",value:u,onChange:w(c),placeholder:"the default branch when empty",mono:!0}),Kt.default.createElement(Sn,{label:"Path",value:d,onChange:w(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),Kt.default.createElement(db,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:w(m)}),Kt.default.createElement("div",{style:{display:"flex",gap:8}},Kt.default.createElement(pe,{onClick:A,disabled:h||!S,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),Kt.default.createElement(pe,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},Gee(y||[])?"Apply, overwriting":"Apply")))),v&&Kt.default.createElement(ha,{tone:"error"},v),y&&y.map(I=>Kt.default.createElement(cAe,{key:`${I.catalog?.key}-${I.source_path||""}`,preview:I})))}function cAe({preview:e}){let t=Kee(e);return Kt.default.createElement(ze,{testId:"scenarios-import-preview-result"},Kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Kt.default.createElement(Ce,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),Kt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},Vee(e))),e.source_path&&Kt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:W,marginTop:4}},e.source_path),t.length===0?Kt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):Kt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>Kt.default.createElement("div",{key:r.action},Kt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},Kt.default.createElement(Ce,{tone:uAe[r.action]},r.label),Kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),Kt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:W,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>Kt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&Kt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var dAe=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function kj({visit:e=0}){let[t,r]=(0,xt.useState)(()=>vj(Qn())),[n,o]=(0,xt.useState)(null),[a,i]=(0,xt.useState)(!1),[s,l]=(0,xt.useState)({agents:[],projects:[]}),[u,c]=(0,xt.useState)(null),[d,p]=(0,xt.useState)(null),[f,m]=(0,xt.useState)(!1);(0,xt.useEffect)(()=>{let v=()=>r(vj(Qn()));return window.addEventListener("popstate",v),window.addEventListener("dashboard:navigate",v),()=>{window.removeEventListener("popstate",v),window.removeEventListener("dashboard:navigate",v)}},[]);let y=(0,xt.useCallback)(async()=>{try{let v=await Rn("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(v.catalogs||[]),i(v.storage_available===!0),c(null)}catch(v){c(v.message)}},[]),x=(0,xt.useCallback)(async()=>{try{let[v,b]=await Promise.all([Rn("/api/agents").catch(()=>({})),Rn("/api/projects").catch(()=>({}))]);l({agents:(v.agents||[]).filter(k=>!k.observed),projects:b.projects||[]})}catch{}},[]);(0,xt.useEffect)(()=>{y(),x()},[y,x,e]);let h=v=>{p(null),c(null),lt(Fee(v))},g=async v=>{let b=await Rn("/api/scenario_catalogs",{method:"POST",body:{catalog:v},fallback:"Could not create the collection"});m(!1),await y(),h({collectionId:b.catalogs?.[0]?.id})};return t.collectionId?xt.default.createElement(bj,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:y,onDeleted:async()=>{await y(),h({})}}):xt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},xt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xt.default.createElement("div",null,xt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),xt.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"&&xt.default.createElement(pe,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},f?"Close":"New collection")),xt.default.createElement(ps,{options:dAe,value:t.tab,onChange:v=>h({tab:v})}),u&&xt.default.createElement(ha,{tone:"error"},u),d&&xt.default.createElement(ha,null,d),t.tab==="generate"&&xt.default.createElement(wj,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&xt.default.createElement(Sj,{onImported:async v=>{await y(),v.length===1?h({collectionId:v[0].id}):p(`Imported ${v.map(b=>b.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&xt.default.createElement(xt.default.Fragment,null,f&&xt.default.createElement(pAe,{onCreate:g}),n===null?xt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?xt.default.createElement(ze,{testId:"scenarios-empty"},xt.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"," ",xt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):xt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(v=>xt.default.createElement(ze,{key:v.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:v.id}),testId:"scenarios-collection-card"},xt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},xt.default.createElement("div",null,xt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},v.name),xt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},xt.default.createElement("code",null,v.key),v.source_path?` \xB7 ${v.source_path}`:v.source_kind==="api"?" \xB7 written here":` \xB7 ${v.source_kind}`)),xt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",textAlign:"right"}},v.product_count," ",v.product_count===1?"product":"products"," \xB7 ",v.scenario_count," scenarios",xt.default.createElement("div",null,v.synced?"synced to storage":a?"not synced":"database only"))))))))}function pAe({onCreate:e}){let[t,r]=(0,xt.useState)(""),[n,o]=(0,xt.useState)(""),[a,i]=(0,xt.useState)(""),[s,l]=(0,xt.useState)(!1),[u,c]=(0,xt.useState)(null);return xt.default.createElement(ze,{testId:"scenarios-new-collection-form"},xt.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}},xt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},xt.default.createElement(Sn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),xt.default.createElement(Sn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),xt.default.createElement(Sn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&xt.default.createElement(ha,{tone:"error"},u),xt.default.createElement("div",null,xt.default.createElement(pe,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var dn=Z(Q());var fAe='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function mAe({request:e,onSettle:t}){let[r,n]=(0,dn.useState)(""),o=(0,dn.useRef)(null),a=(0,dn.useRef)(null),i=(0,dn.useId)(),s=(0,dn.useId)(),l=cQ(e,r);(0,dn.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(fAe)||[]];if(f.length===0)return;let m=f[0],y=f[f.length-1];p.shiftKey&&document.activeElement===m?(p.preventDefault(),y.focus()):!p.shiftKey&&document.activeElement===y&&(p.preventDefault(),m.focus())},d=e.danger?{background:"var(--color-error)",color:"#fff"}:void 0;return dn.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"}},dn.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)"}},dn.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),dn.default.createElement("div",{id:s},e.message&&dn.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&dn.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",dn.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",dn.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)"}}))),dn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},dn.default.createElement(pe,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),dn.default.createElement(pe,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function Qee(){let[e,t]=(0,dn.useState)(lQ());return(0,dn.useEffect)(()=>uQ(t),[]),e?dn.default.createElement(mAe,{key:hAe(e),request:e,onSettle:sQ}):null}var _j=new WeakMap,gAe=0;function hAe(e){return _j.has(e)||_j.set(e,++gAe),_j.get(e)}function yAe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=ut(),[i,s]=(0,Nt.useState)(t),[l,u]=(0,Nt.useState)("list"),[c,d]=(0,Nt.useState)(null),[p,f]=(0,Nt.useState)(!1),[m,y]=(0,Nt.useState)(null),[x,h]=(0,Nt.useState)(!1),[g,v]=(0,Nt.useState)("recent"),[b,k]=(0,Nt.useState)({messages:[]}),[S,w]=(0,Nt.useState)(null),_=sY(r),[A,C]=(0,Nt.useState)(null),{requests:E}=JC({refreshKey:l}),[I,J]=(0,Nt.useState)(0),[$,U]=(0,Nt.useState)(null);(0,Nt.useEffect)(()=>{let de=()=>{let R=lY(Qn(),_);R.focusServer&&C(R.focusServer),R.sessionId&&U({kind:R.sessionKind,id:R.sessionId}),R.replacePath&&window.history.replaceState({},"",Re(R.replacePath)),R.agentId?N(R.agentId,R.view):u(R.view)};return de(),window.addEventListener("popstate",de),window.addEventListener("dashboard:navigate",de),()=>{window.removeEventListener("popstate",de),window.removeEventListener("dashboard:navigate",de)}},[]);let N=async(de,R)=>{f(!0);try{let L=await(await fetch(`/api/agents/${de}`)).json();d(L.agent),u(R)}catch{O("Failed to load agent","error")}finally{f(!1)}},T=async(de=g)=>{f(!0);try{let ee=await(await fetch(`/api/agents?sort=${de}`)).json();s(ee.agents)}catch{O("Failed to refresh agents","error")}finally{f(!1)}},D=de=>{v(de),T(de)},O=(de,R="info")=>{y({message:de,type:R}),setTimeout(()=>y(null),3e3)},j=(de,R=null)=>{let ee=YC(de,{agent:R,features:_});ee!==null&&window.history.pushState({},"",Re(ee))},M=async de=>{f(!0);try{let R=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:de})});if(R.ok){let te=await R.json();return s([te.agent,...i]),d(te.agent),u("editor"),O("Agent created successfully!","success"),j("editor",te.agent),null}let ee=await R.json().catch(()=>({})),L={errors:ee.errors?.length?ee.errors:[ee.error||`Failed to create agent (${R.status})`],fieldErrors:ee.field_errors||{}};return O(L.errors.join(", "),"error"),L}catch{return O("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{f(!1)}},H=async(de,R)=>{f(!0);try{let ee=await fetch(`/api/agents/${de}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:R})});if(ee.ok){let L=await ee.json();s(i.map(te=>te.id===de?L.agent:te)),d(L.agent),O("Agent updated!","success")}else{let L=await ee.json();O(L.errors?.join(", ")||"Failed to update agent","error")}}catch{O("Failed to update agent","error")}finally{f(!1)}},G=async de=>{let R=i.find(ee=>ee.id===de);if(await Wr({title:R?`Delete ${R.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:R?.name})){f(!0);try{(await fetch(`/api/agents/${de}`,{method:"DELETE"})).ok&&(s(i.filter(L=>L.id!==de)),d(null),u("list"),O("Agent deleted","success"),j("list"))}catch{O("Failed to delete agent","error")}finally{f(!1)}}},z=async de=>{f(!0);try{let R=await fetch(`/api/agents/${de}/duplicate`,{method:"POST"});if(R.ok){let ee=await R.json();s([ee.agent,...i]),O("Agent duplicated!","success")}}catch{O("Failed to duplicate agent","error")}finally{f(!1)}},V=de=>{s([de,...i]),h(!1),O("Agent created from template!","success"),ie("editor",de)},K=["editor","runner","agent-analytics","history"],ie=(de,R=null)=>{t0(de,_)&&(J(ee=>ee+1),de==="builder"&&w(null),R?.id&&K.includes(de)&&R.instructions===void 0?N(R.id,de):(d(R),u(de)),j(de,R))},Ie={assistant:()=>Nt.default.createElement(W3,{session:b,onSessionChange:k,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>ie("settings"),onReviewDraft:de=>{w(de),u("builder"),j("builder")}}),builder:()=>Nt.default.createElement(kT,{key:S?.id||"new-agent",initialDraft:S,meta:r,onSave:M,onCancel:()=>ie(S?"assistant":"list"),isLoading:p}),editor:()=>c?Nt.default.createElement(K2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:de=>H(c.id,de),onDelete:()=>G(c.id),onRun:()=>ie("runner",c),onDuplicate:()=>z(c.id),onRunReport:()=>ie("history",c),onBack:()=>ie("list"),isLoading:p}):null,runner:()=>c?Nt.default.createElement(YD,{key:`runner-${c.id}-${window.location.search}`,agent:c,recorderUrl:r.recorderUrl,freshConversation:new URLSearchParams(window.location.search).has("new"),onBack:()=>ie("editor",c)}):null,"agent-analytics":()=>c?Nt.default.createElement(K2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:de=>H(c.id,de),onDelete:()=>G(c.id),onRun:()=>ie("runner",c),onDuplicate:()=>z(c.id),onRunReport:()=>ie("history",c),onBack:()=>ie("list"),isLoading:p}):null,history:()=>c?Nt.default.createElement(ZD,{agent:c,onBack:()=>ie("editor",c)}):null,analytics:()=>Nt.default.createElement(XD,{onSelectAgent:de=>{N(de.id,"agent-analytics")}}),traces:()=>Nt.default.createElement(Zp,null),metrics:()=>Nt.default.createElement(u3,null),interactions:()=>Nt.default.createElement(ju,null),tools:()=>Nt.default.createElement(c3,{onOpenServer:de=>{C(de),ie("mcp")}}),mcp:()=>Nt.default.createElement(d3,{focusServer:A,onOpenTools:()=>{C(null),ie("tools")}}),evaluations:()=>Nt.default.createElement(K0,null),projects:()=>Nt.default.createElement(gj,{visit:I}),scenarios:()=>Nt.default.createElement(kj,{visit:I}),sessions:()=>Nt.default.createElement(O3,{agents:i,user:e}),exploration:()=>Nt.default.createElement(hj,{visit:I}),replay:()=>$?Nt.default.createElement(C3,{key:`${$.kind}-${$.id}`,kind:$.kind,id:$.id,onHandoff:de=>{let R=de?.handoff_state||{};R.url&&window.open(R.url,"_blank","noopener,noreferrer");let ee=Object.entries(R.form_values||{}).map(([L,te])=>`${L}: ${te}`).join(" \xB7 ");O(R.url?`Taking over in a new tab${ee?` \u2014 already entered: ${ee}`:""}`:"Taking over session...","info")},onBack:()=>gR(window.history.state)?window.history.back():ie("sessions")}):null,sandbox:()=>Nt.default.createElement(y3,{initialType:"playwright_mcp",showAgents:!0,onClose:()=>ie("list")}),organization:()=>Nt.default.createElement(P3,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>Nt.default.createElement(F3,{user:e}),list:()=>Nt.default.createElement(mT,{agents:i,meta:r,onSelect:de=>ie("editor",de),onNew:()=>ie("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:z,onDelete:G,onRefresh:T,sort:g,onSortChange:D,isLoading:p})},ge=()=>t0(l,_)?(Ie[l]||Ie.list)():null;return Nt.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},Nt.default.createElement(QD,{currentView:uY(l),onNavigate:ie,agentCount:i.length,pendingInputCount:mY(E),account:n,user:e,gemVersion:r.activeagentVersion,features:_}),Nt.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},Nt.default.createElement(RD,{user:e,account:n}),Nt.default.createElement("main",{className:"flex-1 p-6 overflow-x-clip"},ge())),x&&Nt.default.createElement(JD,{onUseTemplate:V,onClose:()=>h(!1)}),Nt.default.createElement(Qee,null),m&&Nt.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&&Nt.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},Nt.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},Nt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function Cj(e){return Nt.default.createElement(w6,null,Nt.default.createElement(AG,null,Nt.default.createElement(yAe,{...e})))}var vAe=new Set(["POST","PUT","PATCH","DELETE"]);function xAe(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(!vAe.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 bAe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function Ree(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=xAe(o,a,{base:r,csrfToken:bAe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var wAe="active-agent-dashboard";function ete(){let e=document.getElementById(wAe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,Ree(t.mountPath||"/"),(0,rte.createRoot)(e).render(tte.default.createElement(Cj,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ete):ete(); /*! Bundled license information: react/cjs/react.production.js: diff --git a/actionagent/app/controllers/action_agent/api/evaluation_reports_controller.rb b/actionagent/app/controllers/action_agent/api/evaluation_reports_controller.rb index 6fbbd4028..6edb29d50 100644 --- a/actionagent/app/controllers/action_agent/api/evaluation_reports_controller.rb +++ b/actionagent/app/controllers/action_agent/api/evaluation_reports_controller.rb @@ -25,15 +25,28 @@ module Api # 401 — a missing or unknown key # 501 — an install with no evaluation tables, or not yet migrated # 503 — another import for the same agent held the lock too long + # + # GET /api/evaluation_reports/:run_id returns a stored run as the + # same version-1 envelope (EvaluationReportExport), so it can be posted to + # another install, or back to this one as an identical retry. Responds + # 200 with the envelope (or, with `format=html` or `format=md`, the + # report page or its Markdown), 404 for a run_id the key's tenant holds + # no run under, 422 for a run that is not complete or an unknown format, + # 401 as above and also on a single-tenant install that has no + # ingest_api_key, and 501 as above. class EvaluationReportsController < ActionController::API include IngestAuthentication + # What #show serves for each `format`. + EXPORT_FORMATS = { "json" => "application/json", "html" => "text/html", "md" => "text/markdown" }.freeze + # New reports one key may store per minute. RATE_LIMIT = 30 wrap_parameters false - before_action :require_json! + before_action :require_json!, only: :create + before_action :require_export_key!, only: :show before_action :require_report_store! # POST /api/evaluation_reports @@ -64,6 +77,41 @@ def create render json: { error: e.message }, status: :service_unavailable end + # GET /api/evaluation_reports/:run_id + # + # :run_id is an imported run's run_id as it was published, or the + # "dashboard-run--" a run the dashboard executed exports + # under (EvaluationReportExport.run_id_for). Found within the key's + # tenant exactly as #create finds a stored run. `format=html` returns + # the run's self-contained report page (text/html) as run_report renders + # it, and `format=md` its Markdown (text/markdown), instead of the + # envelope; any other format is a 422. `download=1` sends any of them + # as an attachment named like the dashboard's downloads. + def show + run = EvaluationReportExport.find(params[:run_id], account: @account) + return render json: { error: "No evaluation report with that run_id" }, status: :not_found unless run + + format = params[:format].presence || "json" + unless EXPORT_FORMATS.key?(format) + return render json: { error: "format is one of #{EXPORT_FORMATS.keys.join(', ')}" }, status: :unprocessable_entity + end + + export = EvaluationReportExport.new(run) + export.exportable! + body = + case format + when "json" then export.to_json + when "md" then export.markdown + # The page run_report serves, its fix actions linking into this + # dashboard by absolute path; no theme, so it follows the viewer. + when "html" then run.to_report(links: run.report_links(mount: request.script_name)).to_html + end + send_data body, type: EXPORT_FORMATS.fetch(format), disposition: download? ? "attachment" : "inline", + filename: export.filename(format) + rescue EvaluationReportExport::NotExportable => e + render json: { error: e.message }, status: :unprocessable_entity + end + private # Rails reads and parses a JSON body into params before any callback @@ -74,6 +122,18 @@ def process_action(*) super end + # A single-tenant install with no ingest key takes reports from anyone + # who reaches the mount, which a host keeps off the network. Reading a + # run back is different: every stored run, prompts and answers + # included, would be open under a guessable run_id. So the export + # needs the key to exist; a multi-tenant install authenticates the + # tenant's key already. + def require_export_key! + return if ActionAgent.multi_tenant? || ActionAgent.ingest_api_key.present? + + render json: { error: "Set ActionAgent.ingest_api_key to export evaluation reports" }, status: :unauthorized + end + # A cross-site page can send a text/plain or form POST without a CORS # preflight; it cannot send application/json. def require_json! @@ -82,6 +142,10 @@ def require_json! render json: { error: "Content-Type must be application/json" }, status: :unsupported_media_type end + def download? + ActiveModel::Type::Boolean.new.cast(params[:download]) == true + end + def require_report_store! reason = EvaluationReportImport.unavailable_reason render json: { error: reason }, status: :not_implemented if reason @@ -110,7 +174,7 @@ def receipt(run, duplicate) { id: run.id, evaluation_id: run.evaluation_id, - run_id: run.external_run_id, + run_id: EvaluationReportExport.run_id_for(run), status: run.status, duplicate: duplicate, url: run_url(run) diff --git a/actionagent/app/controllers/action_agent/api/evaluations_controller.rb b/actionagent/app/controllers/action_agent/api/evaluations_controller.rb index d9335f328..2c56dde19 100644 --- a/actionagent/app/controllers/action_agent/api/evaluations_controller.rb +++ b/actionagent/app/controllers/action_agent/api/evaluations_controller.rb @@ -255,14 +255,44 @@ def destroy_scenario # the page follows the viewer's own preference. The page is served # outside the React app, so its fix item actions link at the absolute # mount path (request.script_name) rather than relative to it. + # + # `report.json` (or `?format=json`) returns the run instead as the + # version-1 envelope the evaluation report collector takes + # (EvaluationReportExport), the same the API-key export at + # GET /api/evaluation_reports/:run_id serves; 422 for a run that is not + # complete. `report.md` (or `?format=md`) returns it as GitHub-flavored + # Markdown, the whole report or one `part` — `verdict`, `fix_items` + # (narrowed by `model`, a model label) or `scenario` (named by + # `scenario`, its key; 404 for one the run did not replay) — which the + # dashboard's "Copy as Markdown" buttons read. `download=1` sends any of + # them as an attachment named for the evaluation and the run's number: + # `orders-eu-run-3.html`, `orders-eu-run-3-fix-items.md`. def run_report evaluation = evaluations_scope.find(params[:id]) run = evaluation.evaluation_runs.find(params[:run_id]) raise ActiveRecord::RecordNotFound unless evaluation.scenario_suite? + export = EvaluationReportExport.new(run) + if request.format.symbol == :md + body = export.markdown(part: params[:part], model: params[:model], scenario: params[:scenario]) + return send_report(body, export.filename("md", part: params[:part]), "text/markdown") if download? + + return render plain: body, content_type: "text/markdown" + end + if request.format.json? + body = export.to_json + return send_report(body, export.filename("json"), "application/json") if download? + + return render json: body + end + report = run.to_report(links: run.report_links(mount: request.script_name)) + html = report.to_html(theme: params[:theme]) + return send_report(html, export.filename("html"), "text/html") if download? - render html: report.to_html(theme: params[:theme]).html_safe, layout: false + render html: html.html_safe, layout: false + rescue EvaluationReportExport::NotExportable, EvaluationReportExport::UnknownPart => e + render json: { errors: [ e.message ] }, status: :unprocessable_entity end # DELETE /api/evaluations/:id @@ -273,6 +303,14 @@ def destroy private + def download? + ActiveModel::Type::Boolean.new.cast(params[:download]) == true + end + + def send_report(body, filename, type) + send_data body, filename: filename, type: type, disposition: "attachment" + end + def include_archived? ActiveModel::Type::Boolean.new.cast(params[:archived]) == true end @@ -423,7 +461,7 @@ def serialize_run(run, number: nil) = EvaluationSerializer.run(run, number: numb def run_number(evaluation, run) = EvaluationSerializer.run_number(evaluation, run) - def safe_fix_items(run) = EvaluationSerializer.fix_items(run) + def safe_fix_items(run) = EvaluationSerializer.fix_items(run, markdown: true) end end end diff --git a/actionagent/app/models/action_agent/evaluation_run.rb b/actionagent/app/models/action_agent/evaluation_run.rb index 823a6fa5b..060efa4d5 100644 --- a/actionagent/app/models/action_agent/evaluation_run.rb +++ b/actionagent/app/models/action_agent/evaluation_run.rb @@ -200,6 +200,16 @@ def usage cost_breakdown.usage end + # The judge's run-level spend as recorded, without pricing anything: + # what the publishing application reported for the calls no result owns, + # else the engine's meter, else nil. + def recorded_judge_usage_run + reported = scores&.dig("_judge_usage_run") + return reported if reported.is_a?(Hash) + + judge_usage_meter&.merge("source" => "meter") + end + # Route templates for the report's fix item actions, relative to the # dashboard mount: `%{key}` is filled in per MCP server by the report. # The JSON API leaves `mount` empty — the React app resolves paths @@ -238,7 +248,11 @@ def fix_items(links: report_links) # judge's run-level spend, so the page shows every cost the dashboard # does. `estimate: false` rebuilds the report from what was recorded # alone — the import summarizes a published run that way, so the - # summaries it stores stay the application's own figures. + # summaries it stores stay the application's own figures, and the + # export (EvaluationReportExport) serves it that way, so the same run + # always exports the same report. The judge's run-level spend is then + # the one recorded: the application's for an imported run, the meter's + # for one the engine judged. # # The engine runs against every activeagent since 1.4, so the report # kwargs that arrived later are passed only when Report.new takes them. @@ -286,7 +300,8 @@ def to_report(links: report_links, estimate: true) agent_name: evaluation.agent&.name, links: links } - kwargs[:judge_usage] = breakdown.judge_usage_run if breakdown && self.class.report_accepts?(:judge_usage) + judge_usage_run = breakdown ? breakdown.judge_usage_run : recorded_judge_usage_run + 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) self.class.report_class.new(**kwargs) diff --git a/actionagent/app/serializers/action_agent/evaluation_serializer.rb b/actionagent/app/serializers/action_agent/evaluation_serializer.rb index 71d3b4ceb..7f1211e56 100644 --- a/actionagent/app/serializers/action_agent/evaluation_serializer.rb +++ b/actionagent/app/serializers/action_agent/evaluation_serializer.rb @@ -125,8 +125,19 @@ def run_number(evaluation, run) # derived from every persisted result's diagnosis, which older runs # recorded in earlier shapes, so a run they fail for still serves its # results. Without +links+ the item paths are relative to the mount. - def fix_items(run, links: nil) - links ? run.fix_items(links: links) : run.fix_items + # With +markdown+ each item carries its `markdown` + # (ActiveAgent::Evals::ReportMarkdown#fix_item_markdown), which the + # dashboard's fix cards copy. + def fix_items(run, links: nil, markdown: false) + unless markdown + return links ? run.fix_items(links: links) : run.fix_items + end + + report = links ? run.to_report(links: links) : run.to_report + items = report.fix_items + return items unless report.respond_to?(:fix_item_markdown) + + items.map { |item| item.merge("markdown" => report.fix_item_markdown(item)) } rescue StandardError => e Rails.logger.warn( "[ActionAgent] evaluation run #{run.id} fix_items failed: #{e.class}: #{e.message}" diff --git a/actionagent/app/services/action_agent/evaluation_report_export.rb b/actionagent/app/services/action_agent/evaluation_report_export.rb new file mode 100644 index 000000000..aed09ceb3 --- /dev/null +++ b/actionagent/app/services/action_agent/evaluation_report_export.rb @@ -0,0 +1,175 @@ +# frozen_string_literal: true + +require "digest" +require "json" + +module ActionAgent + # A complete scenario run as the version-1 envelope + # ActiveAgent::Evals::Publisher sends, built with Publisher.envelope so the + # two share one shape. What the export endpoints and + # `action_agent:evaluations:export` serve: POSTed to another install's + # /api/evaluation_reports it is stored there, and POSTed back to this + # one it is an identical retry (EvaluationReportImport accepts a run's own + # export as identical to the run). + # + # The identities come from the run: + # run_id — an imported run's own run_id, exactly as published. A run + # the dashboard executed has none, so it is given + # "dashboard-run--": + # stable for the run, and unlikely to meet another + # install's run of the same id where both are imported. + # source — an imported run's source; for a dashboard run the agent's + # service, else the host application's name ("support-hub"). + # agent_name — the agent's class name, else its name. + # suite — an imported run's suite; for a dashboard run the + # evaluation's name. + # + # The report is EvaluationRun#to_report(estimate: false): what the run + # recorded, with no cost estimated, so the same run always exports the + # same envelope. Its metadata leaves out the run's database id. + class EvaluationReportExport + # The run cannot be exported: it is not complete, or its evaluation is + # not a scenario suite. + class NotExportable < StandardError; end + # #markdown was asked for a part the report does not have. + class UnknownPart < ArgumentError; end + + DASHBOARD_RUN_ID = /\Adashboard-run-(\d+)-(\d{14})\z/ + STAMP_FORMAT = "%Y%m%d%H%M%S" + + # The run_id a run exports under. + def self.run_id_for(run) + run.external_run_id.presence || "dashboard-run-#{run.id}-#{run.created_at.utc.strftime(STAMP_FORMAT)}" + end + + # The run +run_id+ names for the tenant +account+ (nil on a single-tenant + # install), or nil. An imported run is found by the run_id it was + # published under, within the tenant that published it, as + # EvaluationReportImport finds it. A dashboard run is found by its + # exported run_id, when its agent is one of the tenant's + # (ActionAgent.agents_for); a single-tenant key reaches every agent, as + # the import's does. + def self.find(run_id, account: nil) + return nil unless run_id.is_a?(String) && run_id.present? + + imported = EvaluationRun.find_by(external_tenant: account ? account.id.to_s : "", external_run_id: run_id) + return imported if imported + + match = DASHBOARD_RUN_ID.match(run_id) + return nil unless match + + run = EvaluationRun.where(external_run_id: nil).find_by(id: match[1].to_i) + return nil unless run && run_id_for(run) == run_id + return run if account.nil? && !ActionAgent.multi_tenant? + + run if account && ActionAgent.agents_for(account).exists?(id: run.evaluation.agent_id) + end + + attr_reader :run + + def initialize(run) + @run = run + end + + def run_id + self.class.run_id_for(run) + end + + # Raises NotExportable for a run that is not a complete scenario run: + # what every format of the export, not only the envelope, needs. + def exportable! + raise NotExportable, "Only a complete run can be exported" unless run.complete? + raise NotExportable, "Only a scenario suite's run can be exported" unless evaluation.scenario_suite? + end + + # Raises NotExportable for a run that is not a complete scenario run. + def envelope + @envelope ||= begin + exportable! + + built = ActiveAgent::Evals::Publisher.envelope( + report: run.to_report(links: {}, estimate: false), + run_id: run_id, source: source, agent_name: agent_name, suite: suite + ) + # As JSON reads it back, so the digest is the one a POST of it gets. + JSON.parse(JSON.generate(built)).tap do |parsed| + # The run's database id means nothing on another install; run_id + # is the run's identity there. + metadata = parsed["report"]["metadata"] + metadata.delete("run") if metadata.is_a?(Hash) && metadata["run"] == run.id + end + end + end + + def to_json(*) + JSON.pretty_generate(envelope) + end + + # Parts of the report #markdown serves on its own. + MARKDOWN_PARTS = %w[report verdict fix_items scenario].freeze + + # The run's report as GitHub-flavored Markdown + # (ActiveAgent::Evals::ReportMarkdown), with the costs the dashboard shows: + # the whole report, or one +part+ — "verdict" (with the model + # comparison), "fix_items" (for +model+, a model label, when given) or + # "scenario" (the one +scenario+ names). Raises UnknownPart for an + # unknown part and ActiveRecord::RecordNotFound for a scenario the run + # has no result for. + def markdown(part: nil, model: nil, scenario: nil) + report = run.to_report(links: {}) + case part.presence || "report" + when "report" then report.to_markdown + when "verdict" then report.verdict_markdown + when "fix_items" then report.fix_items_markdown(model: model.presence) + when "scenario" then scenario_markdown(report, scenario.to_s) + else raise UnknownPart, "part is one of #{MARKDOWN_PARTS.join(', ')}" + end + end + + # The digest EvaluationReportImport records for this envelope. + def digest + EvaluationReportImport.digest(envelope) + end + + # "orders-eu-run-3.json" for the third run of "orders (eu)"; a part of + # the Markdown report adds its name: "orders-eu-run-3-fix-items.md". + def filename(extension, number: EvaluationSerializer.run_number(evaluation, run), part: nil) + base = "#{evaluation.name.to_s.parameterize.presence || "evaluation-#{evaluation.id}"}-run-#{number}" + base += "-#{part.to_s.dasherize.parameterize}" if part.present? && part.to_s != "report" + "#{base}.#{extension}" + end + + private + + def scenario_markdown(report, key) + raise ActiveRecord::RecordNotFound, "The run has no result for scenario #{key}" unless report.results.any? { |result| result.scenario.key == key } + + report.scenario_markdown(key) + end + + def evaluation + run.evaluation + end + + def agent + evaluation.agent + end + + def external + value = evaluation.config.to_h["external"] + run.imported? && value.is_a?(Hash) ? value : {} + end + + def source + (external["source"].presence || agent.service_name.presence || Rails.application.class.module_parent_name.underscore.dasherize).first(200) + end + + def agent_name + (agent.agent_class_name.presence || agent.name).to_s.first(100) + end + + def suite + (external["suite"].presence || evaluation.name).to_s.first(200) + end + end +end diff --git a/actionagent/app/services/action_agent/evaluation_report_import.rb b/actionagent/app/services/action_agent/evaluation_report_import.rb index 5958e17e1..ed84524f5 100644 --- a/actionagent/app/services/action_agent/evaluation_report_import.rb +++ b/actionagent/app/services/action_agent/evaluation_report_import.rb @@ -30,11 +30,14 @@ module ActionAgent # leaves the run unrecorded rather than claiming the dashboard's latest. # # An identical retry returns the stored run, before anything is asked of the - # `admit` callable. Different content under a run_id already stored raises - # Conflict. Imports for one owner run one at a time under an advisory lock - # (OwnerLock), so concurrent first deliveries find or create one agent, - # evaluation and scenario set, and the unique index on the run's tenant and - # run_id settles any delivery the lock does not serialize. + # `admit` callable. So does a run's own export (EvaluationReportExport) + # posted back to the install and tenant that hold the run, whether the run + # was imported or executed by the dashboard. Different content under a + # run_id already stored raises Conflict. Imports for one owner run one at a + # time under an advisory lock (OwnerLock), so concurrent first deliveries + # find or create one agent, evaluation and scenario set, and the unique + # index on the run's tenant and run_id settles any delivery the lock does + # not serialize. class EvaluationReportImport class Error < StandardError; end # The payload is not a report the engine can store as sent; 422. @@ -119,6 +122,21 @@ def self.call(payload:, account: nil, admit: nil) new(payload, account, admit).call end + # The digest a run records for the payload it was stored from: the + # SHA-256 of the payload's JSON with every object's keys sorted. + def self.digest(payload) + Digest::SHA256.hexdigest(JSON.generate(canonical(payload))) + end + + def self.canonical(value) + case value + when Hash then value.keys.sort.to_h { |key| [ key, canonical(value[key]) ] } + when Array then value.map { |child| canonical(child) } + else value + end + end + private_class_method :canonical + # Why this install cannot store reports, or nil when it can: an install # with no evaluation tables (generated with --traces-only), or one whose # evaluation runs lack a column a later migration adds. @@ -142,7 +160,7 @@ def initialize(payload, account, admit) def call validate! - digest = Digest::SHA256.hexdigest(JSON.generate(canonical(@payload))) + digest = self.class.digest(@payload) existing = stored_run return [ identical!(existing, digest), true ] if existing @@ -240,14 +258,27 @@ def tenant_key @account ? @account.id.to_s : "" end + # The run this run_id already names for the tenant: one stored from an + # earlier delivery, or one this install exported (a dashboard run's + # exported run_id), found the way the export endpoint finds it. def stored_run - EvaluationRun.find_by(external_tenant: tenant_key, external_run_id: @payload["run_id"]) + EvaluationReportExport.find(@payload["run_id"], account: @account) end + # The stored run, when the payload is the report it was stored from or + # the run's own export (EvaluationReportExport), which is how an + # exported run posted back to its install is told from a different + # report under the same run_id. def identical!(run, digest) - raise Conflict, "run_id already exists with a different report" unless run.external_report_digest == digest + return run if run.external_report_digest == digest || exported_digest(run) == digest - run + raise Conflict, "run_id already exists with a different report" + end + + def exported_digest(run) + EvaluationReportExport.new(run).digest + rescue EvaluationReportExport::NotExportable + nil end def admit! @@ -815,13 +846,5 @@ def without_nul(value) else value end end - - def canonical(value) - case value - when Hash then value.keys.sort.to_h { |key| [ key, canonical(value[key]) ] } - when Array then value.map { |child| canonical(child) } - else value - end - end end end diff --git a/actionagent/config/routes.rb b/actionagent/config/routes.rb index 04788ba64..fd4d4c73a 100644 --- a/actionagent/config/routes.rb +++ b/actionagent/config/routes.rb @@ -29,8 +29,13 @@ # The collector for evaluation reports an application ran itself # (ActiveAgent::Evals::Publisher), at /api/evaluation_reports. - # Authenticated like trace ingest, with a bearer token. + # Authenticated like trace ingest, with a bearer token. GET + # /api/evaluation_reports/:run_id exports a stored run in the + # envelope the collector takes. A run_id may hold dots, so the path has + # no format extension. resources :evaluation_reports, only: [ :create ] + get "evaluation_reports/:run_id", to: "evaluation_reports#show", as: :evaluation_report, + constraints: { run_id: %r{[^/]+} }, format: false post "feedback", to: "feedback_ingest#create" get "feedback", to: "feedbacks#index" diff --git a/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx b/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx index 0253a73eb..f7ec4e1bc 100644 --- a/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx +++ b/actionagent/frontend/components/dashboard/EvaluationRunPanels.jsx @@ -14,6 +14,8 @@ import ModelComparisonTable from './evaluations/ModelComparisonTable'; import ComparisonIntervals from './evaluations/ComparisonIntervals'; import JudgeChip from './evaluations/JudgeChip'; import CopyFixPromptButton, { dashboardUrl } from './evaluations/CopyFixPromptButton'; +import CopyMarkdownButton from './evaluations/CopyMarkdownButton'; +import { markdownPartUrl } from '../../utils/reportExport.mjs'; import ImplementFixButton from './evaluations/ImplementFixButton'; import ReplayLink from './replay/ReplayLink'; import { fixPromptMarkdown } from '../../utils/fixPrompt.mjs'; @@ -418,7 +420,7 @@ function CallLine({ calls, empty, style }) { // latency, tokens and what the replays cost under it — then the judge's // verdict when the run compared cohorts. A model's card carries the agent's // spend only; the judge's is the run's (see RunsList and CriteriaFooter). -export function ModelsPanel({ run, columns, results = [], scenarioCount = 0, judgedBy, verdict, evaluation = null, onJudgeChanged }) { +export function ModelsPanel({ run, columns, results = [], scenarioCount = 0, judgedBy, verdict, evaluation = null, onJudgeChanged, markdownUrl = null }) { const summaries = run?.scores?._models || {}; const judgeEstimated = runSpend(run)?.judge?.estimated ?? true; return ( @@ -426,6 +428,12 @@ export function ModelsPanel({ run, columns, results = [], scenarioCount = 0, jud
Models +
{columns.length === 0 && ( [ ] no models scored yet @@ -1213,7 +1221,7 @@ function ResultCard({ label, run, result, expects, running }) { // `inRun` says whether the selected run covers this scenario: a scenario the // run skipped offers a replay instead of empty result cards, and a suite with // no run at all says so rather than blaming a run that never happened. -export function ScenarioDetail({ scenario, run, columns, resultsByKey, running, inRun = true, onRerun, onToggleEnabled, canMutate = true }) { +export function ScenarioDetail({ scenario, run, columns, resultsByKey, running, inRun = true, onRerun, onToggleEnabled, canMutate = true, markdownUrl = null }) { const expects = expectList(scenario, 'tools'); const results = resultsByKey[scenario.key] || {}; const anyResult = columns.some((label) => results[label]); @@ -1224,8 +1232,16 @@ export function ScenarioDetail({ scenario, run, columns, resultsByKey, running, {scenario.key} expects {expects.join(' or ') || '—'} + {run && anyResult && ( + + )} {canMutate && ( - +