diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c42535ac..6aecd1a80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,38 @@ engine: the file chooser relay and the per-turn browser tokens are in the `connections.codex`, and the Codex card in Settings shows the machine's login instead of a key form. The default stays `:api_key`. +- **The agent builder offers only tools that work, and every built-in + capability has functions** (`actionagent`). The Configure step reads the + agent's tool roster (`GET /api/agents/tool_roster` for an agent not + created yet) instead of fixed chips, offers the MCP servers a dashboard + run can call, and names each one it cannot with the reason + (`MCPToolDispatcher.unreachable_reason`: a stdio server, no URL, missing + credentials). The six capabilities that gave the model nothing now have + functions: `terminal` (`run_command`), `filesystem` (`list_files`, + `read_file`, `write_file`), `edit` (`edit_file`) and `database` + (`query_database`, read-only) act in the run's checkout sandbox through + new `SandboxOrchestrator` verbs (on the `:local` backend; others return + `UnsupportedBackendError` to the model); `translate` (`translate_text`) + generates on the run's own provider; `slack` lists, reads and posts with + a bot token connected in Settings -> Integrations -> Slack (a `slack` + connection `ProviderKey`). Instruction sets are composed into the + instructions a run executes under. `run_command`, `write_file`, + `edit_file` and `slack_post_message` wait for approval by default: an + agent that gains `terminal`, `filesystem`, `edit` or `slack` — from the + builder, a template, the Tools tab or the agents API — has them on its + `approval_required_tools` unless the save names its own list, and the + Tools tab's Approval switch takes them off. An agent that enabled one of + those capabilities before this release keeps its list as it is. A host's + `ActionAgent.mcp_catalog` headers now reach the MCP client (they were + dropped). + +- **Start an interaction with your own agent from Interactions and Run + Agents** (`actionagent`). Interactions has a "New interaction" picker and + Run Agents a "Your agents" list; both open the agent's runner on a fresh + conversation (`/agents/:id/run?new=1`). The runner lists the agent's tools + and MCP servers, and can run against a checkout sandbox (`sandbox_id`), + which the checkout tools need. + ## [1.9.2] - 2026-10-20 Releases `activeagent` and `actionagent` 1.9.2, with the matching browser diff --git a/actionagent/app/assets/builds/action_agent.css b/actionagent/app/assets/builds/action_agent.css index 28f37eb5c..4adeb2d9e 100644 --- a/actionagent/app/assets/builds/action_agent.css +++ b/actionagent/app/assets/builds/action_agent.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-8{top:calc(var(--spacing) * -8)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.mx-1{margin-inline:var(--spacing)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-\[4\.5rem\]{min-width:4.5rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[16rem\]{min-width:16rem}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-left{transform-origin:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-45{rotate:-45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(var(--spacing) * var(--tw-space-x-reverse));margin-inline-end:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 8) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-800{border-color:var(--color-amber-800)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-800{border-color:var(--color-blue-800)}.border-emerald-500{border-color:var(--color-emerald-500)}.border-gray-50{border-color:var(--color-gray-50)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-800{border-color:var(--color-green-800)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-500{border-color:var(--color-red-500)}.border-red-800{border-color:var(--color-red-800)}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-transparent{border-color:#0000}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-800{border-color:var(--color-yellow-800)}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-purple-500{border-left-color:var(--color-purple-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-900\/20{background-color:#7b330633}@supports (color:color-mix(in lab, red, red)){.bg-amber-900\/20{background-color:color-mix(in oklab, var(--color-amber-900) 20%, transparent)}}.bg-amber-900\/30{background-color:#7b33064d}@supports (color:color-mix(in lab, red, red)){.bg-amber-900\/30{background-color:color-mix(in oklab, var(--color-amber-900) 30%, transparent)}}.bg-black{background-color:var(--color-black)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-900\/20{background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.bg-blue-900\/20{background-color:color-mix(in oklab, var(--color-blue-900) 20%, transparent)}}.bg-current{background-color:currentColor}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/20{background-color:color-mix(in oklab, var(--color-green-900) 20%, transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/30{background-color:color-mix(in oklab, var(--color-green-900) 30%, transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/20{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/30{background-color:color-mix(in oklab, var(--color-red-900) 30%, transparent)}}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/40{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-50{--tw-gradient-from:var(--color-rose-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500{--tw-gradient-from:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50{--tw-gradient-to:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.9em\]{font-size:.9em}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95em\]{font-size:.95em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-300{color:var(--color-amber-300)}.text-amber-500{color:var(--color-amber-500)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-200{color:var(--color-blue-200)}.text-blue-300{color:var(--color-blue-300)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-600{color:var(--color-orange-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-rose-100{color:var(--color-rose-100)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.accent-red-500{accent-color:var(--color-red-500)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-emerald-200{--tw-ring-color:var(--color-emerald-200)}.ring-red-100{--tw-ring-color:var(--color-red-100)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:bg-gray-400:is(:where(.group):hover *){background-color:var(--color-gray-400)}.group-hover\:bg-gray-500:is(:where(.group):hover *){background-color:var(--color-gray-500)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus-visible\:bg-red-500:is(:where(.group):focus-visible *){background-color:var(--color-red-500)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:bg-\[var\(--color-hover\)\]:hover{background-color:var(--color-hover)}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-purple-600:hover{background-color:var(--color-purple-600)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-900\/40:hover{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/40:hover{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.hover\:bg-red-900\/60:hover{background-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/60:hover{background-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:text-amber-900:hover{color:var(--color-amber-900)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-rose-700:hover{color:var(--color-rose-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-rose-500:focus{--tw-ring-color:var(--color-rose-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}}@media (min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:flex{display:flex}.lg\:h-full{height:100%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-0{gap:0}}@media (min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}.aa-dashboard{--color-accent:#fa343b;--color-accent-hover:#e02d33;--color-accent-b:#fa343b29;--color-accent-b-hover:#fa343b33;--color-on-accent:#fff;--color-accent-ui:#ef4444;--color-accent-ui-hover:#dc2626;--color-accent-ui-muted:#ef444426;--color-accent-ui-tint:#fef2f2;--color-background:#f9fafb;--color-background-page:#fff;--color-surface:#fff;--color-card:#fff;--color-muted:#f3f4f6;--color-hover:#f3f4f6;--color-background-blur:#ffffffe6;--color-border:#e5e7eb;--color-border-light:#f3f4f6;--color-border-strong:#d1d5db;--color-text-primary:#111827;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--color-text-cell:#4b5563;--color-success:#16a34a;--color-success-soft:#dcfce7;--color-success-text:#166534;--color-warning:#eab308;--color-warning-soft:#fef9c3;--color-warning-text:#854d0e;--color-error:#dc2626;--color-error-soft:#fee2e2;--color-error-text:#991b1b;--color-info:#3b82f6;--color-info-soft:#dbeafe;--color-info-text:#1e40af;--span-root:#9ca3af;--span-prompt:#60a5fa;--span-generate:#a855f7;--span-llm:#ef4444;--span-thinking:#fbbf24;--span-tool:#22c55e;--span-response:#2dd4bf;--color-token-in:#2563eb;--color-token-out:#7c3aed;--chart-1:#6366f1;--chart-2:#10b981;--chart-3:#f59e0b;--chart-4:#ec4899;--chart-5:#3b82f6;--font-text:"Inter Variable", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", Menlo, Consolas, "Courier New", monospace}.aa-dashboard.theme-dark{color-scheme:dark;--color-accent-ui-tint:#ef444426;--color-background:#0f0f0f;--color-background-page:#0f0f0f;--color-surface:#1a1a1a;--color-card:#ffffff0d;--color-muted:#ffffff0d;--color-hover:#252525;--color-background-blur:#0f0f0fe6;--color-border:#ffffff1a;--color-border-light:#ffffff0d;--color-border-strong:#fff3;--color-text-primary:#fff;--color-text-secondary:#fff9;--color-text-muted:#fff6;--color-text-cell:#ffffffb3;--color-success-soft:#16a34a26;--color-success-text:#4ade80;--color-warning-soft:#eab30826;--color-warning-text:#facc15;--color-error-soft:#dc262626;--color-error-text:#f87171;--color-info-soft:#3b82f626;--color-info-text:#93c5fd}.aa-dashboard .aa-chevron{transition:transform .15s;display:inline-block}.aa-dashboard .aa-chevron[data-open=true]{transform:rotate(90deg)}.aa-dashboard .aa-roster-row{background:0 0}.aa-dashboard .aa-roster-row[data-on=true]{background:var(--color-accent-ui-tint)}.aa-dashboard .aa-roster-row:hover{background:var(--color-hover)}.aa-fix-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000080}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-indigo-50:oklch(96.2% .018 272.314);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-8{top:calc(var(--spacing) * -8)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:0}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.mx-1{margin-inline:var(--spacing)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:var(--spacing)}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-36{height:calc(var(--spacing) * 36)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-full{height:100%}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[12rem\]{max-width:12rem}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-\[4\.5rem\]{min-width:4.5rem}.min-w-\[10rem\]{min-width:10rem}.min-w-\[16rem\]{min-width:16rem}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-left{transform-origin:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-45{rotate:-45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(var(--spacing) * var(--tw-space-x-reverse));margin-inline-end:calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 8) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.self-end{align-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-800{border-color:var(--color-amber-800)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-800{border-color:var(--color-blue-800)}.border-emerald-500{border-color:var(--color-emerald-500)}.border-gray-50{border-color:var(--color-gray-50)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-800{border-color:var(--color-green-800)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-red-500{border-color:var(--color-red-500)}.border-red-800{border-color:var(--color-red-800)}.border-rose-200{border-color:var(--color-rose-200)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-transparent{border-color:#0000}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-800{border-color:var(--color-yellow-800)}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-purple-500{border-left-color:var(--color-purple-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-900\/20{background-color:#7b330633}@supports (color:color-mix(in lab, red, red)){.bg-amber-900\/20{background-color:color-mix(in oklab, var(--color-amber-900) 20%, transparent)}}.bg-amber-900\/30{background-color:#7b33064d}@supports (color:color-mix(in lab, red, red)){.bg-amber-900\/30{background-color:color-mix(in oklab, var(--color-amber-900) 30%, transparent)}}.bg-black{background-color:var(--color-black)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-900\/20{background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.bg-blue-900\/20{background-color:color-mix(in oklab, var(--color-blue-900) 20%, transparent)}}.bg-current{background-color:currentColor}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/20{background-color:color-mix(in oklab, var(--color-green-900) 20%, transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab, red, red)){.bg-green-900\/30{background-color:color-mix(in oklab, var(--color-green-900) 30%, transparent)}}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/20{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/30{background-color:color-mix(in oklab, var(--color-red-900) 30%, transparent)}}.bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.bg-red-900\/40{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-gray-50{--tw-gradient-from:var(--color-gray-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-50{--tw-gradient-from:var(--color-rose-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-rose-500{--tw-gradient-from:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:var(--color-gray-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-50{--tw-gradient-to:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-purple-600{--tw-gradient-to:var(--color-purple-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.9em\]{font-size:.9em}.text-\[0\.85em\]{font-size:.85em}.text-\[0\.95em\]{font-size:.95em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-300{color:var(--color-amber-300)}.text-amber-500{color:var(--color-amber-500)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-200{color:var(--color-blue-200)}.text-blue-300{color:var(--color-blue-300)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-600{color:var(--color-orange-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-100{color:var(--color-red-100)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-rose-100{color:var(--color-rose-100)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.placeholder-gray-500::placeholder{color:var(--color-gray-500)}.accent-red-500{accent-color:var(--color-red-500)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-emerald-200{--tw-ring-color:var(--color-emerald-200)}.ring-red-100{--tw-ring-color:var(--color-red-100)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:bg-gray-400:is(:where(.group):hover *){background-color:var(--color-gray-400)}.group-hover\:bg-gray-500:is(:where(.group):hover *){background-color:var(--color-gray-500)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus-visible\:bg-red-500:is(:where(.group):focus-visible *){background-color:var(--color-red-500)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:bg-\[var\(--color-hover\)\]:hover{background-color:var(--color-hover)}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-purple-600:hover{background-color:var(--color-purple-600)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-100:hover{background-color:var(--color-red-100)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-red-900\/40:hover{background-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/40:hover{background-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.hover\:bg-red-900\/60:hover{background-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.hover\:bg-red-900\/60:hover{background-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:text-amber-900:hover{color:var(--color-amber-900)}.hover\:text-gray-200:hover{color:var(--color-gray-200)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-rose-700:hover{color:var(--color-rose-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-rose-500:focus{--tw-ring-color:var(--color-rose-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:40rem){.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}}@media (min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:flex{display:flex}.lg\:h-full{height:100%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:gap-0{gap:0}}@media (min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}.aa-dashboard{--color-accent:#fa343b;--color-accent-hover:#e02d33;--color-accent-b:#fa343b29;--color-accent-b-hover:#fa343b33;--color-on-accent:#fff;--color-accent-ui:#ef4444;--color-accent-ui-hover:#dc2626;--color-accent-ui-muted:#ef444426;--color-accent-ui-tint:#fef2f2;--color-background:#f9fafb;--color-background-page:#fff;--color-surface:#fff;--color-card:#fff;--color-muted:#f3f4f6;--color-hover:#f3f4f6;--color-background-blur:#ffffffe6;--color-border:#e5e7eb;--color-border-light:#f3f4f6;--color-border-strong:#d1d5db;--color-text-primary:#111827;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--color-text-cell:#4b5563;--color-success:#16a34a;--color-success-soft:#dcfce7;--color-success-text:#166534;--color-warning:#eab308;--color-warning-soft:#fef9c3;--color-warning-text:#854d0e;--color-error:#dc2626;--color-error-soft:#fee2e2;--color-error-text:#991b1b;--color-info:#3b82f6;--color-info-soft:#dbeafe;--color-info-text:#1e40af;--span-root:#9ca3af;--span-prompt:#60a5fa;--span-generate:#a855f7;--span-llm:#ef4444;--span-thinking:#fbbf24;--span-tool:#22c55e;--span-response:#2dd4bf;--color-token-in:#2563eb;--color-token-out:#7c3aed;--chart-1:#6366f1;--chart-2:#10b981;--chart-3:#f59e0b;--chart-4:#ec4899;--chart-5:#3b82f6;--font-text:"Inter Variable", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", Menlo, Consolas, "Courier New", monospace}.aa-dashboard.theme-dark{color-scheme:dark;--color-accent-ui-tint:#ef444426;--color-background:#0f0f0f;--color-background-page:#0f0f0f;--color-surface:#1a1a1a;--color-card:#ffffff0d;--color-muted:#ffffff0d;--color-hover:#252525;--color-background-blur:#0f0f0fe6;--color-border:#ffffff1a;--color-border-light:#ffffff0d;--color-border-strong:#fff3;--color-text-primary:#fff;--color-text-secondary:#fff9;--color-text-muted:#fff6;--color-text-cell:#ffffffb3;--color-success-soft:#16a34a26;--color-success-text:#4ade80;--color-warning-soft:#eab30826;--color-warning-text:#facc15;--color-error-soft:#dc262626;--color-error-text:#f87171;--color-info-soft:#3b82f626;--color-info-text:#93c5fd}.aa-dashboard .aa-chevron{transition:transform .15s;display:inline-block}.aa-dashboard .aa-chevron[data-open=true]{transform:rotate(90deg)}.aa-dashboard .aa-roster-row{background:0 0}.aa-dashboard .aa-roster-row[data-on=true]{background:var(--color-accent-ui-tint)}.aa-dashboard .aa-roster-row:hover{background:var(--color-hover)}.aa-fix-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000080}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file diff --git a/actionagent/app/assets/builds/action_agent.js b/actionagent/app/assets/builds/action_agent.js index f5600e8ff..115b24dce 100644 --- a/actionagent/app/assets/builds/action_agent.js +++ b/actionagent/app/assets/builds/action_agent.js @@ -1,97 +1,97 @@ -var Dee=Object.create;var nA=Object.defineProperty;var jee=Object.getOwnPropertyDescriptor;var $ee=Object.getOwnPropertyNames;var Lee=Object.getPrototypeOf,zee=Object.prototype.hasOwnProperty;var To=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Bee=(e,t)=>{for(var r in t)nA(e,r,{get:t[r],enumerable:!0})},Fee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $ee(t))!zee.call(e,o)&&o!==r&&nA(e,o,{get:()=>t[o],enumerable:!(n=jee(t,o))||n.enumerable});return e};var Z=(e,t,r)=>(r=e!=null?Dee(Lee(e)):{},Fee(t||!e||!e.__esModule?nA(r,"default",{value:e,enumerable:!0}):r,e));var p4=To(Kt=>{"use strict";var iA=Symbol.for("react.transitional.element"),Uee=Symbol.for("react.portal"),Wee=Symbol.for("react.fragment"),Hee=Symbol.for("react.strict_mode"),qee=Symbol.for("react.profiler"),Kee=Symbol.for("react.consumer"),Vee=Symbol.for("react.context"),Gee=Symbol.for("react.forward_ref"),Yee=Symbol.for("react.suspense"),Xee=Symbol.for("react.memo"),i4=Symbol.for("react.lazy"),Zee=Symbol.for("react.activity"),r4=Symbol.iterator;function Jee(e){return e===null||typeof e!="object"?null:(e=r4&&e[r4]||e["@@iterator"],typeof e=="function"?e:null)}var s4={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},l4=Object.assign,u4={};function bf(e,t,r){this.props=e,this.context=t,this.refs=u4,this.updater=r||s4}bf.prototype.isReactComponent={};bf.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")};bf.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function c4(){}c4.prototype=bf.prototype;function sA(e,t,r){this.props=e,this.context=t,this.refs=u4,this.updater=r||s4}var lA=sA.prototype=new c4;lA.constructor=sA;l4(lA,bf.prototype);lA.isPureReactComponent=!0;var n4=Array.isArray;function aA(){}var sn={H:null,A:null,T:null,S:null},d4=Object.prototype.hasOwnProperty;function uA(e,t,r){var n=r.ref;return{$$typeof:iA,type:e,key:t,ref:n!==void 0?n:null,props:r}}function Qee(e,t){return uA(e.type,t,e.props)}function cA(e){return typeof e=="object"&&e!==null&&e.$$typeof===iA}function Ree(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var o4=/\/+/g;function oA(e,t){return typeof e=="object"&&e!==null&&e.key!=null?Ree(""+e.key):t.toString(36)}function ete(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(aA,aA):(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 xf(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 iA:case Uee:i=!0;break;case i4:return i=e._init,xf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+oA(e,0):n,n4(o)?(r="",i!=null&&(r=i.replace(o4,"$&/")+"/"),xf(o,t,r,"",function(u){return u})):o!=null&&(cA(o)&&(o=Qee(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(o4,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(n4(e))for(var l=0;l{"use strict";f4.exports=p4()});var k4=To(bn=>{"use strict";function mA(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;nRx(s,r))lRx(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lRx(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function Rx(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}bn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(m4=performance,bn.unstable_now=function(){return m4.now()}):(dA=Date,g4=dA.now(),bn.unstable_now=function(){return dA.now()-g4});var m4,dA,g4,Nl=[],zu=[],nte=1,Oi=null,Ro=3,gA=!1,zh=!1,Bh=!1,hA=!1,v4=typeof setTimeout=="function"?setTimeout:null,x4=typeof clearTimeout=="function"?clearTimeout:null,h4=typeof setImmediate<"u"?setImmediate:null;function eb(e){for(var t=Vs(zu);t!==null;){if(t.callback===null)tb(zu);else if(t.startTime<=e)tb(zu),t.sortIndex=t.expirationTime,mA(Nl,t);else break;t=Vs(zu)}}function yA(e){if(Bh=!1,eb(e),!zh)if(Vs(Nl)!==null)zh=!0,Sf||(Sf=!0,wf());else{var t=Vs(zu);t!==null&&vA(yA,t.startTime-e)}}var Sf=!1,Fh=-1,b4=5,w4=-1;function S4(){return hA?!0:!(bn.unstable_now()-w4e&&S4());){var n=Oi.callback;if(typeof n=="function"){Oi.callback=null,Ro=Oi.priorityLevel;var o=n(Oi.expirationTime<=e);if(e=bn.unstable_now(),typeof o=="function"){Oi.callback=o,eb(e),t=!0;break t}Oi===Vs(Nl)&&tb(Nl),eb(e)}else tb(Nl);Oi=Vs(Nl)}if(Oi!==null)t=!0;else{var a=Vs(zu);a!==null&&vA(yA,a.startTime-e),t=!1}}break e}finally{Oi=null,Ro=r,gA=!1}t=void 0}}finally{t?wf():Sf=!1}}}var wf;typeof h4=="function"?wf=function(){h4(pA)}:typeof MessageChannel<"u"?(fA=new MessageChannel,y4=fA.port2,fA.port1.onmessage=pA,wf=function(){y4.postMessage(null)}):wf=function(){v4(pA,0)};var fA,y4;function vA(e,t){Fh=v4(function(){e(bn.unstable_now())},t)}bn.unstable_IdlePriority=5;bn.unstable_ImmediatePriority=1;bn.unstable_LowPriority=4;bn.unstable_NormalPriority=3;bn.unstable_Profiling=null;bn.unstable_UserBlockingPriority=2;bn.unstable_cancelCallback=function(e){e.callback=null};bn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,mA(zu,e),Vs(Nl)===null&&e===Vs(zu)&&(Bh?(x4(Fh),Fh=-1):Bh=!0,vA(yA,r-n))):(e.sortIndex=o,mA(Nl,e),zh||gA||(zh=!0,Sf||(Sf=!0,wf()))),e};bn.unstable_shouldYield=S4;bn.unstable_wrapCallback=function(e){var t=Ro;return function(){var r=Ro;Ro=t;try{return e.apply(this,arguments)}finally{Ro=r}}}});var C4=To((q2e,_4)=>{"use strict";_4.exports=k4()});var E4=To(ga=>{"use strict";var ote=J();function A4(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(),T4.exports=E4()});var U8=To(E1=>{"use strict";var vo=C4(),t$=J(),ste=Wh();function Ae(e){var t="https://react.dev/errors/"+e;if(1Tf||(e.current=nE[Tf],nE[Tf]=null,Tf--)}function Rr(e,t){Tf++,nE[Tf]=e.current,e.current=t}var Zs=Js(null),my=Js(null),Ju=Js(null),$b=Js(null);function Lb(e,t){switch(Rr(Ju,t),Rr(my,e),Rr(Zs,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?zj(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=zj(t),e=E8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Mo(Zs),Rr(Zs,e)}function Gf(){Mo(Zs),Mo(my),Mo(Ju)}function oE(e){e.memoizedState!==null&&Rr($b,e);var t=Zs.current,r=E8(t,e.type);t!==r&&(Rr(my,e),Rr(Zs,r))}function zb(e){my.current===e&&(Mo(Zs),Mo(my)),$b.current===e&&(Mo($b),Cy._currentValue=xd)}var xA,M4;function gd(e){if(xA===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);xA=t&&t[1]||"",M4=-1()=>(t||e((t={exports:{}}).exports,t),t.exports),ate=(e,t)=>{for(var r in t)vA(e,r,{get:t[r],enumerable:!0})},ite=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of rte(t))!ote.call(e,o)&&o!==r&&vA(e,o,{get:()=>t[o],enumerable:!(n=tte(t,o))||n.enumerable});return e};var Z=(e,t,r)=>(r=e!=null?ete(nte(e)):{},ite(t||!e||!e.__esModule?vA(r,"default",{value:e,enumerable:!0}):r,e));var Ej=$o(Vt=>{"use strict";var wA=Symbol.for("react.transitional.element"),ste=Symbol.for("react.portal"),lte=Symbol.for("react.fragment"),ute=Symbol.for("react.strict_mode"),cte=Symbol.for("react.profiler"),dte=Symbol.for("react.consumer"),pte=Symbol.for("react.context"),fte=Symbol.for("react.forward_ref"),mte=Symbol.for("react.suspense"),gte=Symbol.for("react.memo"),wj=Symbol.for("react.lazy"),hte=Symbol.for("react.activity"),yj=Symbol.iterator;function yte(e){return e===null||typeof e!="object"?null:(e=yj&&e[yj]||e["@@iterator"],typeof e=="function"?e:null)}var Sj={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},kj=Object.assign,_j={};function Af(e,t,r){this.props=e,this.context=t,this.refs=_j,this.updater=r||Sj}Af.prototype.isReactComponent={};Af.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")};Af.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Cj(){}Cj.prototype=Af.prototype;function SA(e,t,r){this.props=e,this.context=t,this.refs=_j,this.updater=r||Sj}var kA=SA.prototype=new Cj;kA.constructor=SA;kj(kA,Af.prototype);kA.isPureReactComponent=!0;var vj=Array.isArray;function bA(){}var cn={H:null,A:null,T:null,S:null},Aj=Object.prototype.hasOwnProperty;function _A(e,t,r){var n=r.ref;return{$$typeof:wA,type:e,key:t,ref:n!==void 0?n:null,props:r}}function vte(e,t){return _A(e.type,t,e.props)}function CA(e){return typeof e=="object"&&e!==null&&e.$$typeof===wA}function xte(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var xj=/\/+/g;function xA(e,t){return typeof e=="object"&&e!==null&&e.key!=null?xte(""+e.key):t.toString(36)}function bte(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(bA,bA):(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 Cf(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 wA:case ste:i=!0;break;case wj:return i=e._init,Cf(i(e._payload),t,r,n,o)}}if(i)return o=o(e),i=n===""?"."+xA(e,0):n,vj(o)?(r="",i!=null&&(r=i.replace(xj,"$&/")+"/"),Cf(o,t,r,"",function(u){return u})):o!=null&&(CA(o)&&(o=vte(o,r+(o.key==null||e&&e.key===o.key?"":(""+o.key).replace(xj,"$&/")+"/")+i)),t.push(o)),1;i=0;var s=n===""?".":n+":";if(vj(e))for(var l=0;l{"use strict";Nj.exports=Ej()});var zj=$o(Sn=>{"use strict";function TA(e,t){var r=e.length;e.push(t);e:for(;0>>1,o=e[n];if(0>>1;npb(s,r))lpb(u,s)?(e[n]=u,e[l]=r,n=l):(e[n]=s,e[i]=r,n=i);else if(lpb(u,r))e[n]=u,e[l]=r,n=l;else break e}}return t}function pb(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}Sn.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Tj=performance,Sn.unstable_now=function(){return Tj.now()}):(AA=Date,Oj=AA.now(),Sn.unstable_now=function(){return AA.now()-Oj});var Tj,AA,Oj,Nl=[],Lu=[],kte=1,Pi=null,oa=3,OA=!1,Yh=!1,Xh=!1,PA=!1,Ij=typeof setTimeout=="function"?setTimeout:null,Dj=typeof clearTimeout=="function"?clearTimeout:null,Pj=typeof setImmediate<"u"?setImmediate:null;function fb(e){for(var t=Vs(Lu);t!==null;){if(t.callback===null)mb(Lu);else if(t.startTime<=e)mb(Lu),t.sortIndex=t.expirationTime,TA(Nl,t);else break;t=Vs(Lu)}}function MA(e){if(Xh=!1,fb(e),!Yh)if(Vs(Nl)!==null)Yh=!0,Nf||(Nf=!0,Ef());else{var t=Vs(Lu);t!==null&&IA(MA,t.startTime-e)}}var Nf=!1,Zh=-1,jj=5,$j=-1;function Lj(){return PA?!0:!(Sn.unstable_now()-$je&&Lj());){var n=Pi.callback;if(typeof n=="function"){Pi.callback=null,oa=Pi.priorityLevel;var o=n(Pi.expirationTime<=e);if(e=Sn.unstable_now(),typeof o=="function"){Pi.callback=o,fb(e),t=!0;break t}Pi===Vs(Nl)&&mb(Nl),fb(e)}else mb(Nl);Pi=Vs(Nl)}if(Pi!==null)t=!0;else{var a=Vs(Lu);a!==null&&IA(MA,a.startTime-e),t=!1}}break e}finally{Pi=null,oa=r,OA=!1}t=void 0}}finally{t?Ef():Nf=!1}}}var Ef;typeof Pj=="function"?Ef=function(){Pj(EA)}:typeof MessageChannel<"u"?(NA=new MessageChannel,Mj=NA.port2,NA.port1.onmessage=EA,Ef=function(){Mj.postMessage(null)}):Ef=function(){Ij(EA,0)};var NA,Mj;function IA(e,t){Zh=Ij(function(){e(Sn.unstable_now())},t)}Sn.unstable_IdlePriority=5;Sn.unstable_ImmediatePriority=1;Sn.unstable_LowPriority=4;Sn.unstable_NormalPriority=3;Sn.unstable_Profiling=null;Sn.unstable_UserBlockingPriority=2;Sn.unstable_cancelCallback=function(e){e.callback=null};Sn.unstable_forceFrameRate=function(e){0>e||125n?(e.sortIndex=r,TA(Lu,e),Vs(Nl)===null&&e===Vs(Lu)&&(Xh?(Dj(Zh),Zh=-1):Xh=!0,IA(MA,r-n))):(e.sortIndex=o,TA(Nl,e),Yh||OA||(Yh=!0,Nf||(Nf=!0,Ef()))),e};Sn.unstable_shouldYield=Lj;Sn.unstable_wrapCallback=function(e){var t=oa;return function(){var r=oa;oa=t;try{return e.apply(this,arguments)}finally{oa=r}}}});var Fj=$o((pAe,Bj)=>{"use strict";Bj.exports=zj()});var Wj=$o(xa=>{"use strict";var _te=J();function Uj(e){var t="https://react.dev/errors/"+e;if(1{"use strict";function Hj(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Hj)}catch(e){console.error(e)}}Hj(),qj.exports=Wj()});var r6=$o(F1=>{"use strict";var So=Fj(),h$=J(),Ete=Qh();function Ee(e){var t="https://react.dev/errors/"+e;if(1jf||(e.current=vE[jf],vE[jf]=null,jf--)}function rn(e,t){jf++,vE[jf]=e.current,e.current=t}var Zs=Js(null),_y=Js(null),Zu=Js(null),Xb=Js(null);function Zb(e,t){switch(rn(Zu,t),rn(_y,e),rn(Zs,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?R4(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=R4(t),e=W8(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Bo(Zs),rn(Zs,e)}function Rf(){Bo(Zs),Bo(_y),Bo(Zu)}function xE(e){e.memoizedState!==null&&rn(Xb,e);var t=Zs.current,r=W8(t,e.type);t!==r&&(rn(_y,e),rn(Zs,r))}function Jb(e){_y.current===e&&(Bo(Zs),Bo(_y)),Xb.current===e&&(Bo(Xb),jy._currentValue=Ad)}var DA,Gj;function Sd(e){if(DA===void 0)try{throw Error()}catch(r){var t=r.stack.trim().match(/\n( *(at )?)/);DA=t&&t[1]||"",Gj=-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{bA=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?gd(r):""}function pte(e,t){switch(e.tag){case 26:case 27:case 5:return gd(e.type);case 16:return gd("Lazy");case 13:return e.child!==t&&t!==null?gd("Suspense Fallback"):gd("Suspense");case 19:return gd("SuspenseList");case 0:case 15:return wA(e.type,!1);case 11:return wA(e.type.render,!1);case 1:return wA(e.type,!0);case 31:return gd("Activity");default:return""}}function I4(e){try{var t="",r=null;do t+=pte(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{jA=!1,Error.prepareStackTrace=r}return(r=e?e.displayName||e.name:"")?Sd(r):""}function Mte(e,t){switch(e.tag){case 26:case 27:case 5:return Sd(e.type);case 16:return Sd("Lazy");case 13:return e.child!==t&&t!==null?Sd("Suspense Fallback"):Sd("Suspense");case 19:return Sd("SuspenseList");case 0:case 15:return $A(e.type,!1);case 11:return $A(e.type.render,!1);case 1:return $A(e.type,!0);case 31:return Sd("Activity");default:return""}}function Yj(e){try{var t="",r=null;do t+=Mte(e,r),r=e,e=e.return;while(e);return t}catch(n){return` Error generating stack: `+n.message+` -`+n.stack}}var aE=Object.prototype.hasOwnProperty,XE=vo.unstable_scheduleCallback,SA=vo.unstable_cancelCallback,fte=vo.unstable_shouldYield,mte=vo.unstable_requestPaint,ai=vo.unstable_now,gte=vo.unstable_getCurrentPriorityLevel,l$=vo.unstable_ImmediatePriority,u$=vo.unstable_UserBlockingPriority,Bb=vo.unstable_NormalPriority,hte=vo.unstable_LowPriority,c$=vo.unstable_IdlePriority,yte=vo.log,vte=vo.unstable_setDisableYieldValue,Ty=null,ii=null;function Vu(e){if(typeof yte=="function"&&vte(e),ii&&typeof ii.setStrictMode=="function")try{ii.setStrictMode(Ty,e)}catch{}}var si=Math.clz32?Math.clz32:wte,xte=Math.log,bte=Math.LN2;function wte(e){return e>>>=0,e===0?32:31-(xte(e)/bte|0)|0}var ob=256,ab=262144,ib=4194304;function hd(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 d1(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=hd(n):(i&=s,i!==0?o=hd(i):r||(r=s&~e,r!==0&&(o=hd(r))))):(s=n&~a,s!==0?o=hd(s):i!==0?o=hd(i):r||(r=n&~e,r!==0&&(o=hd(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 Oy(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ste(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=ib;return ib<<=1,(ib&62914560)===0&&(ib=4194304),e}function kA(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Py(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function kte(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 Tte=/[\n"\\]/g;function ji(e){return e.replace(Tte,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function lE(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=""+Mi(t)):e.value!==""+Mi(t)&&(e.value=""+Mi(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?uE(e,i,Mi(t)):r!=null?uE(e,i,Mi(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=""+Mi(s):e.removeAttribute("name")}function b$(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)){sE(e);return}r=r!=null?""+Mi(r):"",t=t!=null?""+Mi(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),sE(e)}function uE(e,t,r){t==="number"&&Fb(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Uf(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"),dE=!1;if(Wl)try{kf={},Object.defineProperty(kf,"passive",{get:function(){dE=!0}}),window.addEventListener("test",kf,kf),window.removeEventListener("test",kf,kf)}catch{dE=!1}var kf,Gu=null,tN=null,kb=null;function C$(){if(kb)return kb;var e,t=tN,r=t.length,n,o="value"in Gu?Gu.value:Gu.textContent,a=o.length;for(e=0;e=ty),q4=" ",K4=!1;function E$(e,t){switch(e){case"keyup":return nre.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function N$(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Mf=!1;function are(e,t){switch(e){case"compositionend":return N$(t);case"keypress":return t.which!==32?null:(K4=!0,q4);case"textInput":return e=t.data,e===q4&&K4?null:e;default:return null}}function ire(e,t){if(Mf)return e==="compositionend"||!nN&&E$(e,t)?(e=C$(),kb=tN=Gu=null,Mf=!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=X4(r)}}function M$(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?M$(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function I$(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Fb(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=Fb(e.document)}return t}function oN(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 mre=Wl&&"documentMode"in document&&11>=document.documentMode,If=null,pE=null,ny=null,fE=!1;function J4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;fE||If==null||If!==Fb(n)||(n=If,"selectionStart"in n&&oN(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}),ny&&yy(ny,n)||(ny=n,n=o1(pE,"onSelect"),0>=i,o-=i,Gs=1<<32-si(t)+o|r<k?(_=A,A=null):_=A.sibling;var C=p(h,A,v[k],x);if(C===null){A===null&&(A=_);break}e&&A&&C.alternate===null&&t(h,A),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C,A=_}if(k===v.length)return r(h,A),mr&&Dl(h,k),S;if(A===null){for(;kk?(_=A,A=null):_=A.sibling;var E=p(h,A,C.value,x);if(E===null){A===null&&(A=_);break}e&&A&&E.alternate===null&&t(h,A),g=a(E,g,k),w===null?S=E:w.sibling=E,w=E,A=_}if(C.done)return r(h,A),mr&&Dl(h,k),S;if(A===null){for(;!C.done;k++,C=v.next())C=d(h,C.value,x),C!==null&&(g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return mr&&Dl(h,k),S}for(A=n(A);!C.done;k++,C=v.next())C=f(A,h,k,C.value,x),C!==null&&(e&&C.alternate!==null&&A.delete(C.key===null?k:C.key),g=a(C,g,k),w===null?S=C:w.sibling=C,w=C);return e&&A.forEach(function(j){return t(h,j)}),mr&&Dl(h,k),S}function b(h,g,v,x){if(typeof v=="object"&&v!==null&&v.type===Nf&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case nb:e:{for(var S=v.key;g!==null;){if(g.key===S){if(S=v.type,S===Nf){if(g.tag===7){r(h,g.sibling),x=o(g,v.props.children),x.return=h,h=x;break e}}else if(g.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Fu&&yd(S)===g.type){r(h,g.sibling),x=o(g,v.props),Kh(x,v),x.return=h,h=x;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===Nf?(x=bd(v.props.children,h.mode,x,v.key),x.return=h,h=x):(x=Cb(v.type,v.key,v.props,null,h.mode,x),Kh(x,v),x.return=h,h=x)}return i(h);case Zh:e:{for(S=v.key;g!==null;){if(g.key===S)if(g.tag===4&&g.stateNode.containerInfo===v.containerInfo&&g.stateNode.implementation===v.implementation){r(h,g.sibling),x=o(g,v.children||[]),x.return=h,h=x;break e}else{r(h,g);break}else t(h,g);g=g.sibling}x=PA(v,h.mode,x),x.return=h,h=x}return i(h);case Fu:return v=yd(v),b(h,g,v,x)}if(Jh(v))return m(h,g,v,x);if(Hh(v)){if(S=Hh(v),typeof S!="function")throw Error(Ae(150));return v=S.call(v),y(h,g,v,x)}if(typeof v.then=="function")return b(h,g,pb(v),x);if(v.$$typeof===$l)return b(h,g,db(h,v),x);fb(h,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,g!==null&&g.tag===6?(r(h,g.sibling),x=o(g,v),x.return=h,h=x):(r(h,g),x=OA(v,h.mode,x),x.return=h,h=x),i(h)):r(h,g)}return function(h,g,v,x){try{by=0;var S=b(h,g,v,x);return qf=null,S}catch(A){if(A===sm||A===y1)throw A;var w=ni(29,A,null,h.mode);return w.lanes=x,w.return=h,w}}}var Ad=Y$(!0),X$=Y$(!1),Uu=!1;function fN(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function bE(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 Ru(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ec(e,t,r){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Nr&2)!==0){var o=n.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),n.pending=t,t=Wb(e),F$(e,null,r),t}return h1(e,n,t,r),Wb(e)}function ay(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,f$(e,r)}}function IA(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 wE=!1;function iy(){if(wE){var e=Hf;if(e!==null)throw e}}function sy(e,t,r,n){wE=!1;var o=e.updateQueue;Uu=!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?(dr&p)===p:(n&p)===p){p!==0&&p===Zf&&(wE=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,y=s;p=t;var b=r;switch(y.tag){case 1:if(m=y.payload,typeof m=="function"){d=m.call(b,d,p);break e}d=m;break e;case 3:m.flags=m.flags&-65537|128;case 0:if(m=y.payload,p=typeof m=="function"?m.call(b,d,p):m,p==null)break e;d=cn({},d,p);break e;case 2:Uu=!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),uc|=i,e.lanes=i,e.memoizedState=d}}function Z$(e,t){if(typeof e!="function")throw Error(Ae(191,e));e.call(t)}function J$(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,AN(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=kre(l,n);ly(e,t,c,li(e))}else ly(e,t,n,li(e))}catch(d){ly(e,t,{then:function(){},status:"rejected",reason:d},li())}finally{Tr.p=a,i!==null&&s.types!==null&&(i.types=s.types),jt.T=i}}function Tre(){}function AE(e,t,r,n){if(e.tag!==5)throw Error(Ae(476));var o=SL(e).queue;wL(e,o,t,xd,r===null?Tre:function(){return kL(e),r(n)})}function SL(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:xd,baseState:xd,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ql,lastRenderedState:xd},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ql,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function kL(e){var t=SL(e);t.next===null&&(t=e.alternate.memoizedState),ly(e,t.next.queue,{},li())}function CN(){return qo(Cy)}function _L(){return Xn().memoizedState}function CL(){return Xn().memoizedState}function Ore(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=li();e=Ru(r);var n=ec(t,e,r);n!==null&&(Ia(n,t,r),ay(n,t,r)),t={cache:cN()},e.payload=t;return}t=t.return}}function Pre(e,t,r){var n=li();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},w1(e)?EL(t,r):(r=iN(e,t,r,n),r!==null&&(Ia(r,e,n),NL(r,t,n)))}function AL(e,t,r){var n=li();ly(e,t,r,n)}function ly(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(w1(e))EL(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,ui(s,i))return h1(e,t,o,0),Kr===null&&g1(),!1}catch{}if(r=iN(e,t,o,n),r!==null)return Ia(r,e,n),NL(r,t,n),!0}return!1}function AN(e,t,r,n){if(n={lane:2,revertLane:jN(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},w1(e)){if(t)throw Error(Ae(479))}else t=iN(e,r,n,2),t!==null&&Ia(t,e,2)}function w1(e){var t=e.alternate;return e===Yt||t!==null&&t===Yt}function EL(e,t){Kf=Yb=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function NL(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,f$(e,r)}}var Sy={readContext:qo,use:x1,useCallback:zn,useContext:zn,useEffect:zn,useImperativeHandle:zn,useLayoutEffect:zn,useInsertionEffect:zn,useMemo:zn,useReducer:zn,useRef:zn,useState:zn,useDebugValue:zn,useDeferredValue:zn,useTransition:zn,useSyncExternalStore:zn,useId:zn,useHostTransitionStatus:zn,useFormState:zn,useActionState:zn,useOptimistic:zn,useMemoCache:zn,useCacheRefresh:zn};Sy.useEffectEvent=zn;var TL={readContext:qo,use:x1,useCallback:function(e,t){return ha().memoizedState=[e,t===void 0?null:t],e},useContext:qo,useEffect:pj,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Nb(4194308,4,hL.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Nb(4194308,4,e,t)},useInsertionEffect:function(e,t){Nb(4,2,e,t)},useMemo:function(e,t){var r=ha();t=t===void 0?null:t;var n=e();if(Ed){Vu(!0);try{e()}finally{Vu(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=ha();if(r!==void 0){var o=r(t);if(Ed){Vu(!0);try{r(t)}finally{Vu(!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=Pre.bind(null,Yt,e),[n.memoizedState,e]},useRef:function(e){var t=ha();return e={current:e},t.memoizedState=e},useState:function(e){e=_E(e);var t=e.queue,r=AL.bind(null,Yt,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:kN,useDeferredValue:function(e,t){var r=ha();return _N(r,e,t)},useTransition:function(){var e=_E(!1);return e=wL.bind(null,Yt,e.queue,!0,!1),ha().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=Yt,o=ha();if(mr){if(r===void 0)throw Error(Ae(407));r=r()}else{if(r=t(),Kr===null)throw Error(Ae(349));(dr&127)!==0||rL(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,pj(oL.bind(null,n,a,e),[e]),n.flags|=2048,Qf(9,{destroy:void 0},nL.bind(null,n,a,r,t),null),r},useId:function(){var e=ha(),t=Kr.identifierPrefix;if(mr){var r=Ys,n=Gs;r=(n&~(1<<32-si(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=Xb++,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[Wo]=t,a[Da]=n;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)a.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=a;e:switch(Ko(a,o,n),o){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break e;case"img":n=!0;break e;default:n=!1}n&&Ol(t)}}return ln(t),UA(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Ol(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ae(166));if(e=Ju.current,_f(t)){if(e=t.stateNode,r=t.memoizedProps,n=null,o=Ho,o!==null)switch(o.tag){case 27:case 5:n=o.memoizedProps}e[Wo]=t,e=!!(e.nodeValue===r||n!==null&&n.suppressHydrationWarning===!0||A8(e.nodeValue,r)),e||sc(t,!0)}else e=a1(e).createTextNode(n),e[Wo]=t,t.stateNode=e}return ln(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(Ae(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(Ae(557));e[Wo]=t}else _d(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ln(t),e=!1}else r=MA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(ri(t),t):(ri(t),null);if((t.flags&128)!==0)throw Error(Ae(558))}return ln(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(Ae(318));if(o=t.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(Ae(317));o[Wo]=t}else _d(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ln(t),o=!1}else o=MA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(ri(t),t):(ri(t),null)}return ri(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),mb(t,t.updateQueue),ln(t),null);case 4:return Gf(),e===null&&$N(t.stateNode.containerInfo),ln(t),null;case 10:return Fl(t.type),ln(t),null;case 19:if(Mo(Yn),n=t.memoizedState,n===null)return ln(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)Vh(n,!1);else{if(Bn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=Gb(e),a!==null){for(t.flags|=128,Vh(n,!1),e=a.updateQueue,t.updateQueue=e,mb(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)U$(r,e),r=r.sibling;return Rr(Yn,Yn.current&1|2),mr&&Dl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&ai()>Rb&&(t.flags|=128,o=!0,Vh(n,!1),t.lanes=4194304)}else{if(!o)if(e=Gb(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,mb(t,e),Vh(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!mr)return ln(t),null}else 2*ai()-n.renderingStartTime>Rb&&r!==536870912&&(t.flags|=128,o=!0,Vh(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=ai(),e.sibling=null,r=Yn.current,Rr(Yn,o?r&1|2:r&1),mr&&Dl(t,n.treeForkCount),e):(ln(t),null);case 22:case 23:return ri(t),mN(),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&&(ln(t),t.subtreeFlags&6&&(t.flags|=8192)):ln(t),r=t.updateQueue,r!==null&&mb(t,r.retryQueue),r=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(n=t.memoizedState.cachePool.pool),n!==r&&(t.flags|=2048),e!==null&&Mo(wd),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Fl(io),ln(t),null;case 25:return null;case 30:return null}throw Error(Ae(156,t.tag))}function $re(e,t){switch(uN(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Fl(io),Gf(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return zb(t),null;case 31:if(t.memoizedState!==null){if(ri(t),t.alternate===null)throw Error(Ae(340));_d()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ri(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ae(340));_d()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Mo(Yn),null;case 4:return Gf(),null;case 10:return Fl(t.type),null;case 22:case 23:return ri(t),mN(),e!==null&&Mo(wd),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Fl(io),null;case 25:return null;default:return null}}function UL(e,t){switch(uN(t),t.tag){case 3:Fl(io),Gf();break;case 26:case 27:case 5:zb(t);break;case 4:Gf();break;case 31:t.memoizedState!==null&&ri(t);break;case 13:ri(t);break;case 19:Mo(Yn);break;case 10:Fl(t.type);break;case 22:case 23:ri(t),mN(),e!==null&&Mo(wd);break;case 24:Fl(io)}}function $y(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){zr(t,t.return,s)}}function lc(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){zr(o,l,c)}}}n=n.next}while(n!==a)}}catch(c){zr(t,t.return,c)}}function WL(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{J$(t,r)}catch(n){zr(e,e.return,n)}}}function HL(e,t,r){r.props=Nd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){zr(e,t,n)}}function uy(e,t){try{var r=e.ref;if(r!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:n=e.stateNode;break;default:n=e.stateNode}typeof r=="function"?e.refCleanup=r(n):r.current=n}}catch(o){zr(e,t,o)}}function Xs(e,t){var r=e.ref,n=e.refCleanup;if(r!==null)if(typeof n=="function")try{n()}catch(o){zr(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){zr(e,t,o)}else r.current=null}function qL(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){zr(e,e.return,o)}}function WA(e,t,r){try{var n=e.stateNode;rne(n,e.type,r,t),n[Da]=t}catch(o){zr(e,e.return,o)}}function KL(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&dc(e.type)||e.tag===4}function HA(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||KL(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&&dc(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 PE(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=Ll));else if(n!==4&&(n===27&&dc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(PE(e,t,r),e=e.sibling;e!==null;)PE(e,t,r),e=e.sibling}function Qb(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&&dc(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(Qb(e,t,r),e=e.sibling;e!==null;)Qb(e,t,r),e=e.sibling}function VL(e){var t=e.stateNode,r=e.memoizedProps;try{for(var n=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);Ko(t,n,r),t[Wo]=e,t[Da]=r}catch(a){zr(e,e.return,a)}}var jl=!1,ao=!1,qA=!1,Cj=typeof WeakSet=="function"?WeakSet:Set,Oo=null;function Lre(e,t){if(e=e.containerInfo,zE=u1,e=I$(e),oN(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(BE={focusedElem:e,selectionRange:r},u1=!1,Oo=t;Oo!==null;)if(t=Oo,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Oo=e;else for(;Oo!==null;){switch(t=Oo,a=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(r=0;r title"))),Ko(a,n,r),a[Wo]=e,Po(a),n=a;break e;case"link":var i=Gj("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sb&&(i=b,b=y,y=i);var h=Z4(s,y),g=Z4(s,b);if(h&&g&&(f.rangeCount!==1||f.anchorNode!==h.node||f.anchorOffset!==h.offset||f.focusNode!==g.node||f.focusOffset!==g.offset)){var v=d.createRange();v.setStart(h.node,h.offset),f.removeAllRanges(),y>b?(f.addRange(v),f.extend(g.node,g.offset)):(v.setEnd(g.node,g.offset),f.addRange(v))}}}}for(d=[],f=s;f=f.parentNode;)f.nodeType===1&&d.push({element:f,left:f.scrollLeft,top:f.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;sr?32:r,jt.T=null,r=DE,DE=null;var a=rc,i=Ul;if(yo=0,em=rc=null,Ul=0,(Nr&6)!==0)throw Error(Ae(331));var s=Nr;if(Nr|=4,n8(a.current),e8(a,a.current,i,r),Nr=s,Ly(0,!1),ii&&typeof ii.onPostCommitFiberRoot=="function")try{ii.onPostCommitFiberRoot(Ty,a)}catch{}return!0}finally{Tr.p=o,jt.T=n,v8(e,t)}}function Tj(e,t,r){t=$i(r,t),t=NE(e.stateNode,t,2),e=ec(e,t,2),e!==null&&(Py(e,2),Qs(e))}function zr(e,t,r){if(e.tag===3)Tj(e,e,r);else for(;t!==null;){if(t.tag===3){Tj(t,e,r);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(tc===null||!tc.has(n))){e=$i(r,e),r=DL(2),n=ec(t,r,2),n!==null&&(jL(r,n,t,e),Py(n,2),Qs(n));break}}t=t.return}}function VA(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new Fre;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)||(MN=!0,o.add(r),e=Kre.bind(null,e,t,r),t.then(e,e))}function Kre(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Kr===e&&(dr&r)===r&&(Bn===4||Bn===3&&(dr&62914560)===dr&&300>ai()-S1?(Nr&2)===0&&tm(e,0):IN|=r,Rf===dr&&(Rf=0)),Qs(e)}function b8(e,t){t===0&&(t=d$()),e=Md(e,t),e!==null&&(Py(e,t),Qs(e))}function Vre(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),b8(e,r)}function Gre(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(Ae(314))}n!==null&&n.delete(t),b8(e,r)}function Yre(e,t){return XE(e,t)}var r1=null,Ef=null,$E=!1,n1=!1,GA=!1,Zu=0;function Qs(e){e!==Ef&&e.next===null&&(Ef===null?r1=Ef=e:Ef=Ef.next=e),n1=!0,$E||($E=!0,Zre())}function Ly(e,t){if(!GA&&n1){GA=!0;do for(var r=!1,n=r1;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-si(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,Oj(n,a))}else a=dr,a=d1(n,n===Kr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Oy(n,a)||(r=!0,Oj(n,a));n=n.next}while(r);GA=!1}}function Xre(){w8()}function w8(){n1=$E=!1;var e=0;Zu!==0&&one()&&(e=Zu);for(var t=ai(),r=null,n=r1;n!==null;){var o=n.next,a=S8(n,t);a===0?(n.next=null,r===null?r1=o:r.next=o,o===null&&(Ef=r)):(r=n,(e!==0||(a&3)!==0)&&(n1=!0)),n=o}yo!==0&&yo!==5||Ly(e,!1),Zu!==0&&(Zu=0)}function S8(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&&Lj(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function P8(e,t,r){var n=um;if(n&&typeof t=="string"&&t){var o=ji(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),qj.has(o)||(qj.add(o),e={rel:e,crossOrigin:r,href:t},n.querySelector(o)===null&&(t=n.createElement("link"),Ko(t,"link",e),Po(t),n.head.appendChild(t)))}}function fne(e){Gl.D(e),P8("dns-prefetch",e,null)}function mne(e,t){Gl.C(e,t),P8("preconnect",e,t)}function gne(e,t,r){Gl.L(e,t,r);var n=um;if(n&&e&&t){var o='link[rel="preload"][as="'+ji(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+ji(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+ji(r.imageSizes)+'"]')):o+='[href="'+ji(e)+'"]';var a=o;switch(t){case"style":a=rm(e);break;case"script":a=cm(e)}Fi.has(a)||(e=cn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),Fi.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(zy(a))||t==="script"&&n.querySelector(By(a))||(t=n.createElement("link"),Ko(t,"link",e),Po(t),n.head.appendChild(t)))}}function hne(e,t){Gl.m(e,t);var r=um;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+ji(n)+'"][href="'+ji(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=cm(e)}if(!Fi.has(a)&&(e=cn({rel:"modulepreload",href:e},t),Fi.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(By(a)))return}n=r.createElement("link"),Ko(n,"link",e),Po(n),r.head.appendChild(n)}}}function yne(e,t,r){Gl.S(e,t,r);var n=um;if(n&&e){var o=Ff(n).hoistableStyles,a=rm(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(zy(a)))s.loading=5;else{e=cn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=Fi.get(a))&&LN(e,r);var l=i=n.createElement("link");Po(l),Ko(l,"link",e),l._p=new Promise(function(u,c){l.onload=u,l.onerror=c}),l.addEventListener("load",function(){s.loading|=1}),l.addEventListener("error",function(){s.loading|=2}),s.loading|=4,Mb(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function vne(e,t){Gl.X(e,t);var r=um;if(r&&e){var n=Ff(r).hoistableScripts,o=cm(e),a=n.get(o);a||(a=r.querySelector(By(o)),a||(e=cn({src:e,async:!0},t),(t=Fi.get(o))&&zN(e,t),a=r.createElement("script"),Po(a),Ko(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function xne(e,t){Gl.M(e,t);var r=um;if(r&&e){var n=Ff(r).hoistableScripts,o=cm(e),a=n.get(o);a||(a=r.querySelector(By(o)),a||(e=cn({src:e,async:!0,type:"module"},t),(t=Fi.get(o))&&zN(e,t),a=r.createElement("script"),Po(a),Ko(a,"link",e),r.head.appendChild(a)),a={type:"script",instance:a,count:1,state:null},n.set(o,a))}}function Kj(e,t,r,n){var o=(o=Ju.current)?i1(o):null;if(!o)throw Error(Ae(446));switch(e){case"meta":case"title":return null;case"style":return typeof r.precedence=="string"&&typeof r.href=="string"?(t=rm(r.href),r=Ff(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=rm(r.href);var a=Ff(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(zy(e)))&&!a._p&&(i.instance=a,i.state.loading=5),Fi.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},Fi.set(e,r),a||bne(o,e,r,i.state))),t&&n===null)throw Error(Ae(528,""));return i}if(t&&n!==null)throw Error(Ae(529,""));return null;case"script":return t=r.async,r=r.src,typeof r=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=cm(r),r=Ff(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(Ae(444,e))}}function rm(e){return'href="'+ji(e)+'"'}function zy(e){return'link[rel="stylesheet"]['+e+"]"}function M8(e){return cn({},e,{"data-precedence":e.precedence,precedence:null})}function bne(e,t,r,n){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?n.loading=1:(t=e.createElement("link"),n.preload=t,t.addEventListener("load",function(){return n.loading|=1}),t.addEventListener("error",function(){return n.loading|=2}),Ko(t,"link",r),Po(t),e.head.appendChild(t))}function cm(e){return'[src="'+ji(e)+'"]'}function By(e){return"script[async]"+e}function Vj(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+ji(r.href)+'"]');if(n)return t.instance=n,Po(n),n;var o=cn({},r,{"data-href":r.href,"data-precedence":r.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),Po(n),Ko(n,"style",o),Mb(n,r.precedence,e),t.instance=n;case"stylesheet":o=rm(r.href);var a=e.querySelector(zy(o));if(a)return t.state.loading|=4,t.instance=a,Po(a),a;n=M8(r),(o=Fi.get(o))&&LN(n,o),a=(e.ownerDocument||e).createElement("link"),Po(a);var i=a;return i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Ko(a,"link",n),t.state.loading|=4,Mb(a,r.precedence,e),t.instance=a;case"script":return a=cm(r.src),(o=e.querySelector(By(a)))?(t.instance=o,Po(o),o):(n=r,(o=Fi.get(a))&&(n=cn({},r),zN(n,o)),e=e.ownerDocument||e,o=e.createElement("script"),Po(o),Ko(o,"link",n),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error(Ae(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,Mb(n,r.precedence,e));return t.instance}function Mb(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 wne(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 I8(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Sne(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=rm(n.href),a=t.querySelector(zy(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,Po(a);return}a=t.ownerDocument||t,n=M8(n),(o=Fi.get(o))&&LN(n,o),a=a.createElement("link"),Po(a);var i=a;i._p=new Promise(function(s,l){i.onload=s,i.onerror=l}),Ko(a,"link",n),r.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(r,t),(t=r.state.preload)&&(r.state.loading&3)===0&&(e.count++,r=s1.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var JA=0;function kne(e,t){return e.stylesheets&&e.count===0&&Db(e,e.stylesheets),0JA?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)Db(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var l1=null;function Db(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,l1=new Map,t.forEach(_ne,e),l1=null,s1.call(e))}function _ne(e,t){if(!(t.state.loading&4)){var r=l1.get(e);if(r)var n=r.get(null);else{r=new Map,l1.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function W8(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(W8)}catch(e){console.error(e)}}W8(),H8.exports=U8()});var R6=To(Q6=>{"use strict";var Pm=J();function Uoe(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Woe=typeof Object.is=="function"?Object.is:Uoe,Hoe=Pm.useState,qoe=Pm.useEffect,Koe=Pm.useLayoutEffect,Voe=Pm.useDebugValue;function Goe(e,t){var r=t(),n=Hoe({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return Koe(function(){o.value=r,o.getSnapshot=t,IT(o)&&a({inst:o})},[e,r,t]),qoe(function(){return IT(o)&&a({inst:o}),e(function(){IT(o)&&a({inst:o})})},[e]),Voe(r),r}function IT(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Woe(e,r)}catch{return!0}}function Yoe(e,t){return t()}var Xoe=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Yoe:Goe;Q6.useSyncExternalStore=Pm.useSyncExternalStore!==void 0?Pm.useSyncExternalStore:Xoe});var tz=To((EOe,ez)=>{"use strict";ez.exports=R6()});var nz=To(rz=>{"use strict";var bw=J(),Zoe=tz();function Joe(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Qoe=typeof Object.is=="function"?Object.is:Joe,Roe=Zoe.useSyncExternalStore,eae=bw.useRef,tae=bw.useEffect,rae=bw.useMemo,nae=bw.useDebugValue;rz.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=eae(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=rae(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,Qoe(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=Roe(e,a[0],a[1]);return tae(function(){i.hasValue=!0,i.value=s},[s]),nae(s),s}});var az=To((TOe,oz)=>{"use strict";oz.exports=nz()});var VB=To(KB=>{"use strict";var sv=J();function sse(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var lse=typeof Object.is=="function"?Object.is:sse,use=sv.useSyncExternalStore,cse=sv.useRef,dse=sv.useEffect,pse=sv.useMemo,fse=sv.useDebugValue;KB.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=cse(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=pse(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,lse(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=use(e,a[0],a[1]);return dse(function(){i.hasValue=!0,i.value=s},[s]),fse(s),s}});var YB=To((N5e,GB)=>{"use strict";GB.exports=VB()});var NO=To((x9,OS)=>{(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,D,T,I,P=this;if(N=new P.constructor(N),P.s!==N.s)return P.s||-N.s;if(P.e!==N.e)return P.e>N.e^P.s<0?1:-1;for(T=P.d.length,I=N.d.length,O=0,D=TN.d[O]^P.s<0?1:-1;return T===I?0:T>I^P.s<0?1:-1},y.decimalPlaces=y.dp=function(){var N=this,O=N.d.length-1,D=(O-N.e)*p;if(O=N.d[O],O)for(;O%10==0;O/=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 O=this,D=O.constructor;return C(v(O,new D(N),0,1),D.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,D=this,T=D.constructor,I=T.precision,P=I+5;if(N===void 0)N=new T(10);else if(N=new T(N),N.s<1||N.eq(c))throw Error(o+"NaN");if(D.s<1)throw Error(o+(D.s?"NaN":"-Infinity"));return D.eq(c)?new T(0):(n=!1,O=v(k(D,P),k(N,P),P),n=!0,C(O,I))},y.minus=y.sub=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?E(O,N):b(O,(N.s=-N.s,N))},y.modulo=y.mod=function(N){var O,D=this,T=D.constructor,I=T.precision;if(N=new T(N),!N.s)throw Error(o+"NaN");return D.s?(n=!1,O=v(D,N,0,1).times(N),n=!0,D.minus(O)):C(new T(D),I)},y.naturalExponential=y.exp=function(){return x(this)},y.naturalLogarithm=y.ln=function(){return k(this)},y.negated=y.neg=function(){var N=new this.constructor(this);return N.s=-N.s||0,N},y.plus=y.add=function(N){var O=this;return N=new O.constructor(N),O.s==N.s?b(O,N):E(O,(N.s=-N.s,N))},y.precision=y.sd=function(N){var O,D,T,I=this;if(N!==void 0&&N!==!!N&&N!==1&&N!==0)throw Error(a+N);if(O=S(I)+1,T=I.d.length-1,D=T*p+1,T=I.d[T],T){for(;T%10==0;T/=10)D--;for(T=I.d[0];T>=10;T/=10)D++}return N&&O>D?O:D},y.squareRoot=y.sqrt=function(){var N,O,D,T,I,P,H,G=this,L=G.constructor;if(G.s<1){if(!G.s)return new L(0);throw Error(o+"NaN")}for(N=S(G),n=!1,I=Math.sqrt(+G),I==0||I==1/0?(O=g(G.d),(O.length+N)%2==0&&(O+="0"),I=Math.sqrt(O),N=s((N+1)/2)-(N<0||N%2),I==1/0?O="5e"+N:(O=I.toExponential(),O=O.slice(0,O.indexOf("e")+1)+N),T=new L(O)):T=new L(I.toString()),D=L.precision,I=H=D+3;;)if(P=T,T=P.plus(v(G,P,H+2)).times(.5),g(P.d).slice(0,H)===(O=g(T.d)).slice(0,H)){if(O=O.slice(H-3,H+1),I==H&&O=="4999"){if(C(P,D+1,0),P.times(P).eq(G)){T=P;break}}else if(O!="9999")break;H+=4}return n=!0,C(T,D)},y.times=y.mul=function(N){var O,D,T,I,P,H,G,L,Y,W=this,ie=W.constructor,Me=W.d,pe=(N=new ie(N)).d;if(!W.s||!N.s)return new ie(0);for(N.s*=W.s,D=W.e+N.e,L=Me.length,Y=pe.length,L=0;){for(O=0,I=L+T;I>T;)G=P[I]+pe[T]*Me[I-T-1]+O,P[I--]=G%d|0,O=G/d|0;P[I]=(P[I]+O)%d|0}for(;!P[--H];)P.pop();return O?++D:P.shift(),N.d=P,N.e=D,n?C(N,ie.precision):N},y.toDecimalPlaces=y.todp=function(N,O){var D=this,T=D.constructor;return D=new T(D),N===void 0?D:(h(N,0,t),O===void 0?O=T.rounding:h(O,0,8),C(D,N+S(D)+1,O))},y.toExponential=function(N,O){var D,T=this,I=T.constructor;return N===void 0?D=j(T,!0):(h(N,0,t),O===void 0?O=I.rounding:h(O,0,8),T=C(new I(T),N+1,O),D=j(T,!0,N+1)),D},y.toFixed=function(N,O){var D,T,I=this,P=I.constructor;return N===void 0?j(I):(h(N,0,t),O===void 0?O=P.rounding:h(O,0,8),T=C(new P(I),N+S(I)+1,O),D=j(T.abs(),!1,N+S(T)+1),I.isneg()&&!I.isZero()?"-"+D:D)},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,D,T,I,P,H,G=this,L=G.constructor,Y=12,W=+(N=new L(N));if(!N.s)return new L(c);if(G=new L(G),!G.s){if(N.s<1)throw Error(o+"Infinity");return G}if(G.eq(c))return G;if(T=L.precision,N.eq(c))return C(G,T);if(O=N.e,D=N.d.length-1,H=O>=D,P=G.s,H){if((D=W<0?-W:W)<=f){for(I=new L(c),O=Math.ceil(T/p+4),n=!1;D%2&&(I=I.times(G),X(I.d,O)),D=s(D/2),D!==0;)G=G.times(G),X(G.d,O);return n=!0,N.s<0?new L(c).div(I):C(I,T)}}else if(P<0)throw Error(o+"NaN");return P=P<0&&N.d[Math.max(O,D)]&1?-1:1,G.s=1,n=!1,I=N.times(k(G,T+Y)),n=!0,I=x(I),I.s=P,I},y.toPrecision=function(N,O){var D,T,I=this,P=I.constructor;return N===void 0?(D=S(I),T=j(I,D<=P.toExpNeg||D>=P.toExpPos)):(h(N,1,t),O===void 0?O=P.rounding:h(O,0,8),I=C(new P(I),N,O),D=S(I),T=j(I,N<=D||D<=P.toExpNeg,N)),T},y.toSignificantDigits=y.tosd=function(N,O){var D=this,T=D.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(D),N,O)},y.toString=y.valueOf=y.val=y.toJSON=function(){var N=this,O=S(N),D=N.constructor;return j(N,O<=D.toExpNeg||O>=D.toExpPos)};function b(N,O){var D,T,I,P,H,G,L,Y,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,Y=O.d,H=N.e,I=O.e,L=L.slice(),P=H-I,P){for(P<0?(T=L,P=-P,G=Y.length):(T=Y,I=H,G=L.length),H=Math.ceil(ie/p),G=H>G?H+1:G+1,P>G&&(P=G,T.length=1),T.reverse();P--;)T.push(0);T.reverse()}for(G=L.length,P=Y.length,G-P<0&&(P=G,T=Y,Y=L,L=T),D=0;P;)D=(L[--P]=L[P]+Y[P]+D)/d|0,L[P]%=d;for(D&&(L.unshift(D),++I),G=L.length;L[--G]==0;)L.pop();return O.d=L,O.e=I,n?C(O,ie):O}function h(N,O,D){if(N!==~~N||ND)throw Error(a+N)}function g(N){var O,D,T,I=N.length-1,P="",H=N[0];if(I>0){for(P+=H,O=1;OH?1:-1;else for(G=L=0;GI[G]?1:-1;break}return L}function D(T,I,P){for(var H=0;P--;)T[P]-=H,H=T[P]1;)T.shift()}return function(T,I,P,H){var G,L,Y,W,ie,Me,pe,ce,Q,ee,$,B,K,M,ae,F,se,oe,ve=T.constructor,Re=T.s==I.s?1:-1,tt=T.d,he=I.d;if(!T.s)return new ve(T);if(!I.s)throw Error(o+"Division by zero");for(L=T.e-I.e,se=he.length,ae=tt.length,pe=new ve(Re),ce=pe.d=[],Y=0;he[Y]==(tt[Y]||0);)++Y;if(he[Y]>(tt[Y]||0)&&--L,P==null?B=P=ve.precision:H?B=P+(S(T)-S(I))+1:B=P,B<0)return new ve(0);if(B=B/p+2|0,Y=0,se==1)for(W=0,he=he[0],B++;(Y1&&(he=N(he,W),tt=N(tt,W),se=he.length,ae=tt.length),M=se,Q=tt.slice(0,se),ee=Q.length;ee=d/2&&++F;do W=0,G=O(he,Q,se,ee),G<0?($=Q[0],se!=ee&&($=$*d+(Q[1]||0)),W=$/F|0,W>1?(W>=d&&(W=d-1),ie=N(he,W),Me=ie.length,ee=Q.length,G=O(ie,Q,Me,ee),G==1&&(W--,D(ie,se16)throw Error(i+S(N));if(!N.s)return new W(c);for(O==null?(n=!1,G=ie):G=O,H=new W(.03125);N.abs().gte(.1);)N=N.times(H),Y+=5;for(T=Math.log(l(2,Y))/Math.LN10*2+5|0,G+=T,D=I=P=new W(c),W.precision=G;;){if(I=C(I.times(N),G),D=D.times(++L),H=P.plus(v(I,D,G)),g(H.d).slice(0,G)===g(P.d).slice(0,G)){for(;Y--;)P=C(P.times(P),G);return W.precision=ie,O==null?(n=!0,C(P,ie)):P}P=H}}function S(N){for(var O=N.e*p,D=N.d[0];D>=10;D/=10)O++;return O}function w(N,O,D){if(O>N.LN10.sd())throw n=!0,D&&(N.precision=D),Error(o+"LN10 precision limit exceeded");return C(new N(N.LN10),O)}function A(N){for(var O="";N--;)O+="0";return O}function k(N,O){var D,T,I,P,H,G,L,Y,W,ie=1,Me=10,pe=N,ce=pe.d,Q=pe.constructor,ee=Q.precision;if(pe.s<1)throw Error(o+(pe.s?"NaN":"-Infinity"));if(pe.eq(c))return new Q(0);if(O==null?(n=!1,Y=ee):Y=O,pe.eq(10))return O==null&&(n=!0),w(Q,Y);if(Y+=Me,Q.precision=Y,D=g(ce),T=D.charAt(0),P=S(pe),Math.abs(P)<15e14){for(;T<7&&T!=1||T==1&&D.charAt(1)>3;)pe=pe.times(N),D=g(pe.d),T=D.charAt(0),ie++;P=S(pe),T>1?(pe=new Q("0."+D),P++):pe=new Q(T+"."+D.slice(1))}else return L=w(Q,Y+2,ee).times(P+""),pe=k(new Q(T+"."+D.slice(1)),Y-Me).plus(L),Q.precision=ee,O==null?(n=!0,C(pe,ee)):pe;for(G=H=pe=v(pe.minus(c),pe.plus(c),Y),W=C(pe.times(pe),Y),I=3;;){if(H=C(H.times(W),Y),L=G.plus(v(H,new Q(I),Y)),g(L.d).slice(0,Y)===g(G.d).slice(0,Y))return G=G.times(2),P!==0&&(G=G.plus(w(Q,Y+2,ee).times(P+""))),G=v(G,new Q(ie),Y),Q.precision=ee,O==null?(n=!0,C(G,ee)):G;G=L,I+=2}}function _(N,O){var D,T,I;for((D=O.indexOf("."))>-1&&(O=O.replace(".","")),(T=O.search(/e/i))>0?(D<0&&(D=T),D+=+O.slice(T+1),O=O.substring(0,T)):D<0&&(D=O.length),T=0;O.charCodeAt(T)===48;)++T;for(I=O.length;O.charCodeAt(I-1)===48;)--I;if(O=O.slice(T,I),O){if(I-=T,D=D-T-1,N.e=s(D/p),N.d=[],T=(D+1)%p,D<0&&(T+=p),Tm||N.e<-m))throw Error(i+D)}else N.s=0,N.e=0,N.d=[0];return N}function C(N,O,D){var T,I,P,H,G,L,Y,W,ie=N.d;for(H=1,P=ie[0];P>=10;P/=10)H++;if(T=O-H,T<0)T+=p,I=O,Y=ie[W=0];else{if(W=Math.ceil((T+1)/p),P=ie.length,W>=P)return N;for(Y=P=ie[W],H=1;P>=10;P/=10)H++;T%=p,I=T-p+H}if(D!==void 0&&(P=l(10,H-I-1),G=Y/P%10|0,L=O<0||ie[W+1]!==void 0||Y%P,L=D<4?(G||L)&&(D==0||D==(N.s<0?3:2)):G>5||G==5&&(D==4||L||D==6&&(T>0?I>0?Y/l(10,H-I):0:ie[W-1])%10&1||D==(N.s<0?8:7))),O<1||!ie[0])return L?(P=S(N),ie.length=1,O=O-P-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,P=1,W--):(ie.length=W+1,P=l(10,p-T),ie[W]=I>0?(Y/l(10,H-I)%l(10,I)|0)*P:0),L)for(;;)if(W==0){(ie[0]+=P)==d&&(ie[0]=1,++N.e);break}else{if(ie[W]+=P,ie[W]!=d)break;ie[W--]=0,P=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 D,T,I,P,H,G,L,Y,W,ie,Me=N.constructor,pe=Me.precision;if(!N.s||!O.s)return O.s?O.s=-O.s:O=new Me(N),n?C(O,pe):O;if(L=N.d,ie=O.d,T=O.e,Y=N.e,L=L.slice(),H=Y-T,H){for(W=H<0,W?(D=L,H=-H,G=ie.length):(D=ie,T=Y,G=L.length),I=Math.max(Math.ceil(pe/p),G)+2,H>I&&(H=I,D.length=1),D.reverse(),I=H;I--;)D.push(0);D.reverse()}else{for(I=L.length,G=ie.length,W=I0;--I)L[G++]=0;for(I=ie.length;I>H;){if(L[--I]0?P=P.charAt(0)+"."+P.slice(1)+A(T):H>1&&(P=P.charAt(0)+"."+P.slice(1)),P=P+(I<0?"e":"e+")+I):I<0?(P="0."+A(-I-1)+P,D&&(T=D-H)>0&&(P+=A(T))):I>=H?(P+=A(I+1-H),D&&(T=D-I-1)>0&&(P=P+"."+A(T))):((T=I+1)0&&(I+1===H&&(P+="."),P+=A(T))),N.s<0?"-"+P:P}function X(N,O){if(N.length>O)return N.length=O,!0}function z(N){var O,D,T;function I(P){var H=this;if(!(H instanceof I))return new I(P);if(H.constructor=I,P instanceof I){H.s=P.s,H.e=P.e,H.d=(P=P.d)?P.slice():P;return}if(typeof P=="number"){if(P*0!==0)throw Error(a+P);if(P>0)H.s=1;else if(P<0)P=-P,H.s=-1;else{H.s=0,H.e=0,H.d=[0];return}if(P===~~P&&P<1e7){H.e=0,H.d=[P];return}return _(H,P.toString())}else if(typeof P!="string")throw Error(a+P);if(P.charCodeAt(0)===45?(P=P.slice(1),H.s=-1):H.s=1,u.test(P))_(H,P);else throw Error(a+P)}if(I.prototype=y,I.ROUND_UP=0,I.ROUND_DOWN=1,I.ROUND_CEIL=2,I.ROUND_FLOOR=3,I.ROUND_HALF_UP=4,I.ROUND_HALF_DOWN=5,I.ROUND_HALF_EVEN=6,I.ROUND_HALF_CEIL=7,I.ROUND_HALF_FLOOR=8,I.clone=z,I.config=I.set=U,N===void 0&&(N={}),N)for(T=["precision","rounding","toExpNeg","toExpPos","LN10"],O=0;O=I[O+1]&&T<=I[O+2])this[D]=T;else throw Error(a+D+": "+T);if((T=N[D="LN10"])!==void 0)if(T==Math.LN10)this[D]=new this(T);else throw Error(a+D+": "+T);return this}r=z(r),r.default=r.Decimal=r,c=new r(1),typeof define=="function"&&define.amd?define(function(){return r}):typeof OS<"u"&&OS.exports?OS.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(x9)});var mW=To((hze,f5)=>{"use strict";var hme=Object.prototype.hasOwnProperty,Sa="~";function Qv(){}Object.create&&(Qv.prototype=Object.create(null),new Qv().__proto__||(Sa=!1));function yme(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function fW(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new yme(r,n||e,o),i=Sa?Sa+t:t;return e._events[i]?e._events[i].fn?e._events[i]=[e._events[i],a]:e._events[i].push(a):(e._events[i]=a,e._eventsCount++),e}function e_(e,t){--e._eventsCount===0?e._events=new Qv:delete e._events[t]}function na(){this._events=new Qv,this._eventsCount=0}na.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)hme.call(r,n)&&t.push(Sa?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};na.prototype.listeners=function(t){var r=Sa?Sa+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,a=n.length,i=new Array(a);o{"use strict";var k5=Symbol.for("react.transitional.element"),_5=Symbol.for("react.portal"),m_=Symbol.for("react.fragment"),g_=Symbol.for("react.strict_mode"),h_=Symbol.for("react.profiler"),y_=Symbol.for("react.consumer"),v_=Symbol.for("react.context"),x_=Symbol.for("react.forward_ref"),b_=Symbol.for("react.suspense"),w_=Symbol.for("react.suspense_list"),S_=Symbol.for("react.memo"),k_=Symbol.for("react.lazy"),rhe=Symbol.for("react.view_transition"),nhe=Symbol.for("react.client.reference");function ts(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case k5:switch(e=e.type,e){case m_:case h_:case g_:case b_:case w_:case rhe:return e;default:switch(e=e&&e.$$typeof,e){case v_:case x_:case k_:case S_:return e;case y_:return e;default:return t}}case _5:return t}}}Yr.ContextConsumer=y_;Yr.ContextProvider=v_;Yr.Element=k5;Yr.ForwardRef=x_;Yr.Fragment=m_;Yr.Lazy=k_;Yr.Memo=S_;Yr.Portal=_5;Yr.Profiler=h_;Yr.StrictMode=g_;Yr.Suspense=b_;Yr.SuspenseList=w_;Yr.isContextConsumer=function(e){return ts(e)===y_};Yr.isContextProvider=function(e){return ts(e)===v_};Yr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===k5};Yr.isForwardRef=function(e){return ts(e)===x_};Yr.isFragment=function(e){return ts(e)===m_};Yr.isLazy=function(e){return ts(e)===k_};Yr.isMemo=function(e){return ts(e)===S_};Yr.isPortal=function(e){return ts(e)===_5};Yr.isProfiler=function(e){return ts(e)===h_};Yr.isStrictMode=function(e){return ts(e)===g_};Yr.isSuspense=function(e){return ts(e)===b_};Yr.isSuspenseList=function(e){return ts(e)===w_};Yr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===m_||e===h_||e===g_||e===b_||e===w_||typeof e=="object"&&e!==null&&(e.$$typeof===k_||e.$$typeof===S_||e.$$typeof===v_||e.$$typeof===y_||e.$$typeof===x_||e.$$typeof===nhe||e.getModuleId!==void 0)};Yr.typeOf=ts});var AH=To((v7e,CH)=>{"use strict";CH.exports=_H()});var yee=Z(J()),vee=Z(q8());var Nt=Z(J());var ct=Z(J());var Sr=Z(J()),Dd={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"}},jd={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"}},dm={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 Mne=({id:e="mascot"})=>Sr.default.createElement("g",{stroke:"none",fill:"none",fillRule:"evenodd",strokeWidth:"1"},Sr.default.createElement("g",{transform:"translate(25, 475) scale(-1, 1) rotate(-180) translate(-25, -475) translate(0, 450)"},Sr.default.createElement("g",{fillRule:"nonzero"},Sr.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"})),Sr.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"}),Sr.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"}),Sr.default.createElement("g",{transform:"translate(75.105, 196.182)"},Sr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"87",cy:"55",rx:"35",ry:"29"}),Sr.default.createElement("ellipse",{fill:"#5D4037",cx:"87",cy:"57",rx:"20",ry:"20"}),Sr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"87",cy:"57",rx:"12",ry:"12"}),Sr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"80",cy:"51",rx:"5",ry:"5"}),Sr.default.createElement("ellipse",{fill:"#F5E6D3",cx:"259",cy:"55",rx:"35",ry:"29"}),Sr.default.createElement("ellipse",{fill:"#5D4037",cx:"259",cy:"57",rx:"20",ry:"20"}),Sr.default.createElement("ellipse",{fill:"#2D1F1F",cx:"259",cy:"57",rx:"12",ry:"12"}),Sr.default.createElement("ellipse",{fill:"#FFFFFF",cx:"252",cy:"51",rx:"5",ry:"5"})),Sr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Sr.default.createElement("g",{transform:"translate(267.395, 54.835) scale(-1, 1) translate(-267.395, -54.835)"},Sr.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"})),Sr.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"})),Sr.default.createElement("g",{transform:"translate(75.105, 196.182)",fillRule:"nonzero"},Sr.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"})),Sr.default.createElement("g",{transform:"translate(83.563, 252.212)",fill:"#FFFFFF",fillRule:"nonzero"},Sr.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"}),Sr.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 Tn({size:e=200,instructions:t=[],tools:r=[],showDecorations:n=!1,className:o="",hat:a,hatAccessory:i,heldItem:s,theme:l,customColors:u}){return Sr.default.createElement("div",{className:`inline-flex flex-col items-center ${o}`},n&&t.length>0&&Sr.default.createElement("div",{className:"flex gap-1 mb-1"},t.map(c=>{let d=Dd[c];return d?Sr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})),Sr.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"},Sr.default.createElement("title",null,"ActiveAgent"),Sr.default.createElement(Mne,null)),n&&r.length>0&&Sr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=jd[c];return d?Sr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var $a=Z(J());var Ss=Z(J()),K8=(0,Ss.createContext)();function V8({children:e}){let[t,r]=(0,Ss.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,Ss.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,Ss.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 Ss.default.createElement(K8.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function ut(){let e=(0,Ss.useContext)(K8);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function pm({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=$a.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 $a.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"}},$a.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},$a.default.createElement("div",{style:{minWidth:0}},$a.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&&$a.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&$a.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&$a.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>$a.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},$a.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),$a.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&$a.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&$a.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function HN(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var Rs="~ estimated from tokens \xD7 model rates",N1=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),X8=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),fm=e=>N1(e)?`${X8(Number(e)*100)}%`:"\u2014",lo=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${X8(n*100/r)}%`},ea=e=>fm(e),T1=e=>`pass \u2265 ${fm(e)}`,Or=(e,{estimated:t=!1}={})=>{if(!N1(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},G8=e=>Math.round(Number(e)||0).toLocaleString("en-US"),Y8=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},Ine=["pattern","default"],mm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!N1(r.input)||!N1(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${G8(e)} in \xD7 ${Y8(r.input)} + ${G8(t)} out \xD7 ${Y8(r.output)} \xB7 ${n} rate${Ine.includes(n)?" (fallback rate)":""}`};var Dne=[{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 qN({agents:e,meta:t,onSelect:r,onNew:n,onBrowseTemplates:o,onDuplicate:a,onDelete:i,onRefresh:s,sort:l="recent",onSortChange:u,isLoading:c}){let[d,p]=(0,ct.useState)(""),[f,m]=(0,ct.useState)(""),[y,b]=(0,ct.useState)(""),h=e.filter(k=>{let _=!d||k.name.toLowerCase().includes(d.toLowerCase())||k.description?.toLowerCase().includes(d.toLowerCase()),C=!f||k.provider===f,E=!y||k.status===y;return _&&C&&E}),g=k=>{let _=new Date(k),E=new Date-_,j=Math.floor(E/(1e3*60*60*24));return j===0?"Today":j===1?"Yesterday":j<7?`${j} days ago`:_.toLocaleDateString()},v=k=>{switch(k){case"active":return"bg-green-100 text-green-700";case"draft":return"bg-yellow-100 text-yellow-700";case"archived":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},x=k=>k==null?"\u2014":k<1e3?`${Math.round(k)}ms`:`${(k/1e3).toFixed(1)}s`,S=k=>k==null?"\u2014":k>=1e6?`${(k/1e6).toFixed(1)}M`:k>=1e3?`${(k/1e3).toFixed(1)}k`:`${k}`,w=k=>k==null?"\u2014":k>0&&k<.01?"<$0.01":`$${k.toFixed(2)}`,A=k=>{if(!k)return"\u2014";let _=Math.floor((new Date-new Date(k))/(1e3*60*60*24));return _<=0?"Today":_<30?`${_}d ago`:new Date(k).toLocaleDateString()};return ct.default.createElement("div",{className:"space-y-6"},ct.default.createElement("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4"},ct.default.createElement("div",{className:"flex-1 flex items-center space-x-4"},ct.default.createElement("div",{className:"relative flex-1 max-w-md"},ct.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"}),ct.default.createElement("svg",{className:"absolute left-3 top-2.5 h-5 w-5 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"}))),ct.default.createElement("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"},ct.default.createElement("option",{value:""},"All Providers"),t.providers?.map(k=>ct.default.createElement("option",{key:k,value:k},k.charAt(0).toUpperCase()+k.slice(1)))),ct.default.createElement("select",{value:y,onChange:k=>b(k.target.value),className:"px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500"},ct.default.createElement("option",{value:""},"All Status"),ct.default.createElement("option",{value:"active"},"Active"),ct.default.createElement("option",{value:"draft"},"Draft"),ct.default.createElement("option",{value:"archived"},"Archived")),ct.default.createElement("select",{value:l,onChange: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"},Dne.map(k=>ct.default.createElement("option",{key:k.value,value:k.value},k.label)))),ct.default.createElement("div",{className:"flex items-center space-x-3"},ct.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"},ct.default.createElement("svg",{className:`h-5 w-5 ${c?"animate-spin":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"}))),ct.default.createElement("button",{onClick:o,className:"flex items-center space-x-2 px-4 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors"},ct.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),ct.default.createElement("span",null,"Browse Templates")),ct.default.createElement("button",{onClick:n,className:"flex items-center space-x-2 px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors"},ct.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),ct.default.createElement("span",null,"New Agent")))),h.length>0?ct.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"},h.map(k=>{let _=k.stats||{},C=_.run_sources||[],E=C.length?`Counted from ${C.map(j=>j==="platform"?"dashboard runs":"reported telemetry").join(" + ")}`:void 0;return ct.default.createElement(pm,{key:k.id,name:k.name,subtitle:k.description||"No description",badge:ct.default.createElement("span",{className:`px-2 py-0.5 text-xs font-medium rounded-full ${v(k.status)}`},k.status),onClick:()=>r(k),stats:[{label:`Runs ${_.window_days||30}d`,value:_.runs??0,title:E},{label:"Success",value:_.success_rate!=null?`${Math.round(_.success_rate)}%`:"\u2014",tone:HN(_.success_rate!=null?_.success_rate/100:null)},{label:"Avg time",value:x(_.avg_duration_ms)},{label:"Eval",title:_.eval_samples_evaluated?`${lo(_.eval_samples_passed,_.eval_samples_evaluated)} passed over ${_.eval_runs??"the"} current evaluation${_.eval_runs===1?"":"s"}${_.eval_not_counted?` \xB7 ${_.eval_not_counted} stale or archived not counted`:""}`:_.eval_not_counted?`${_.eval_not_counted} evaluation${_.eval_not_counted===1?"":"s"} stale or archived, none counted`:"No evaluation counted yet",value:fm(_.eval_score),tone:HN(_.eval_score)},{label:"Tokens",value:S(_.tokens)},{label:"Cost",value:w(_.cost),title:"Estimated from token counts at each model's published rates",tone:_.cost==null?"muted":void 0}],footer:ct.default.createElement(ct.default.Fragment,null,ct.default.createElement("span",{style:{display:"flex",alignItems:"center",gap:"6px",minWidth:0}},ct.default.createElement("span",{style:{padding:"2px 6px",borderRadius:"4px",background:"rgba(128,128,128,0.15)",whiteSpace:"nowrap",flexShrink:0}},k.provider),ct.default.createElement("span",{title:k.model,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},k.model)),ct.default.createElement("span",{style:{whiteSpace:"nowrap"},title:`Updated ${g(k.updatedAt||k.updated_at)}`},_.last_run_at?`Last run ${A(_.last_run_at)}`:`Updated ${g(k.updatedAt||k.updated_at)}`)),actions:ct.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"13px"}},ct.default.createElement("button",{onClick:j=>{j.stopPropagation(),a(k.id)},className:"text-gray-500 hover:text-red-600 transition-colors"},"Duplicate"),ct.default.createElement("button",{onClick:j=>{j.stopPropagation(),i(k.id)},className:"text-red-500 hover:text-red-700 transition-colors"},"Delete"))})})):ct.default.createElement("div",{className:"text-center py-16"},ct.default.createElement("div",{className:"inline-block mb-4"},ct.default.createElement(Tn,{size:100})),ct.default.createElement("h3",{className:"text-lg font-medium text-gray-900 mb-2"},e.length===0?"No agents yet":"No matching agents"),ct.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&&ct.default.createElement("div",{className:"flex items-center justify-center space-x-4"},ct.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"},ct.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"})),ct.default.createElement("span",null,"Browse Templates")),ct.default.createElement("span",{className:"text-gray-400"},"or"),ct.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"},ct.default.createElement("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},ct.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})),ct.default.createElement("span",null,"Create From Scratch")))))}var _e=Z(J());var Io={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 Ot={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 Z8(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 gm={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"]},O1=Object.keys(gm),jne=300*1e3,J8=Z8($ne,{ttlMs:jne,keep:e=>e!==null});async function Q8(e){return await J8(e)??(gm[e]||[])}function KN(){J8.clear()}async function $ne(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 P1=Z(J());function pc(e){let[t,r]=(0,P1.useState)(gm),n=e.join(",");return(0,P1.useEffect)(()=>{let o=!1;return e.forEach(a=>{Q8(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var fc=Z(J());function Yl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,fc.useId)();return fc.default.createElement(fc.default.Fragment,null,fc.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}),fc.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>fc.default.createElement("option",{key:u,value:u}))))}var M1=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],Lne=["name","slug","description","provider","model"];function VN({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,_e.useState)(0),[s,l]=(0,_e.useState)({name:"",description:"",provider:"openai",model:gm.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],model_config:{temperature:.7},...o?{name:o.name,description:o.description||"",instructions:o.instructions,provider:o.provider,model:o.model,tools:o.tools||[],instruction_sets:[],mcp_servers:[]}:{}}),u=pc([s.provider]),c=(0,_e.useMemo)(()=>{let v=o?.model&&o.provider;return!v||!u[v]?u:{...u,[v]:[...new Set([o.model,...u[v]])]}},[u]),d=c[s.provider];(0,_e.useEffect)(()=>{d?.length&&l(v=>d.includes(v.model)?v:{...v,model:d[0]})},[d]);let[p,f]=(0,_e.useState)(null),m=(v,x)=>{l(S=>({...S,[v]:x}))},y=(v,x)=>{l(S=>{let w=S[v]||[],A=w.includes(x)?w.filter(k=>k!==x):[...w,x];return{...S,[v]:A}})},b=v=>{if(m("preset_type",v),dm[v]){let x=dm[v];m("instruction_sets",[...x.instructions]),m("tools",[...x.tools])}},h=()=>{switch(a){case 0:return s.name.trim().length>=2;case 1:return!0;case 2:return!0;default:return!1}},g=async()=>{f(null);let v=await t(s);v&&(f(v),Object.keys(v.fieldErrors||{}).some(x=>Lne.includes(x))&&i(0))};return _e.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&_e.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."),_e.default.createElement("div",{className:"mb-8"},_e.default.createElement("div",{className:"flex items-center justify-between"},M1.map((v,x)=>_e.default.createElement("div",{key:v.id,className:"flex items-center"},_e.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${x_e.default.createElement("li",{key:v},v)))),_e.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&_e.default.createElement(zne,{formData:s,updateField:m,providerModels:c,fieldErrors:p?.fieldErrors||{}}),a===1&&_e.default.createElement(Bne,{formData:s,meta:e,toggleArrayItem:y,updateField:m,selectPreset:b}),a===2&&_e.default.createElement(Fne,{formData:s})),_e.default.createElement("div",{className:"flex justify-between mt-6"},_e.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"),_e.default.createElement("button",{onClick:a===M1.length-1?g:()=>i(a+1),disabled:!h()||n,className:`px-6 py-2 rounded-lg transition-colors ${h()&&!n?"bg-red-500 text-white hover:bg-red-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},a===M1.length-1?"Create Agent":"Continue")))}function I1({messages:e}){return e.length?_e.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function zne({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return _e.default.createElement("div",{className:"space-y-6"},_e.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),_e.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),_e.default.createElement("div",{className:"space-y-4"},_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),_e.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"}),_e.default.createElement(I1,{messages:o("name","slug")})),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),_e.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"}),_e.default.createElement(I1,{messages:o("description")})),_e.default.createElement("div",{className:"grid grid-cols-2 gap-4"},_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),_e.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=>_e.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),_e.default.createElement(I1,{messages:o("provider")})),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),_e.default.createElement(Yl,{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"}),_e.default.createElement(I1,{messages:o("model")}))),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),_e.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"}),_e.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},_e.default.createElement("span",null,"Precise"),_e.default.createElement("span",null,"Creative")))))}function Bne({formData:e,meta:t,toggleArrayItem:r,updateField:n,selectPreset:o}){let a=Object.keys(dm),i=Object.keys(Dd),s=Object.keys(jd);return _e.default.createElement("div",{className:"space-y-6"},_e.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),_e.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),_e.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},_e.default.createElement("div",{className:"flex flex-col items-center"},_e.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(l=>{let u=Dd[l];return u?_e.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})),_e.default.createElement(Tn,{size:120}),_e.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(l=>{let u=jd[l];return u?_e.default.createElement("span",{key:l,className:"text-lg",title:u.label},u.emoji):null})))),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),_e.default.createElement("div",{className:"flex flex-wrap gap-2"},a.map(l=>_e.default.createElement("button",{key:l,onClick:()=>o(l),className:`px-4 py-2 rounded-lg border-2 text-sm transition-all ${e.preset_type===l?"border-red-500 bg-red-50 text-red-700":"border-gray-200 hover:border-gray-300 text-gray-600"}`},_e.default.createElement("span",{className:"capitalize"},l.replace(/([A-Z])/g," $1").trim()))))),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},_e.default.createElement("strong",null,"Instructions"),_e.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),_e.default.createElement("div",{className:"flex flex-wrap gap-2"},i.map(l=>{let u=Dd[l];return _e.default.createElement("button",{key:l,onClick:()=>r("instruction_sets",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.instruction_sets.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},_e.default.createElement("span",null,u.emoji),_e.default.createElement("span",null,u.label))}))),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},_e.default.createElement("strong",null,"Tools"),_e.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"MCPs and integrations")),_e.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(l=>{let u=jd[l];return _e.default.createElement("button",{key:l,onClick:()=>r("tools",l),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm transition-colors ${e.tools.includes(l)?"bg-red-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`},_e.default.createElement("span",null,u.emoji),_e.default.createElement("span",null,u.label))}))),_e.default.createElement("div",null,_e.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),_e.default.createElement("textarea",{value:e.instructions,onChange:l=>n("instructions",l.target.value),placeholder:"You are a helpful AI assistant that...",rows:4,className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-red-500 focus:border-transparent font-mono text-sm"})))}function Fne({formData:e}){return _e.default.createElement("div",{className:"space-y-6"},_e.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),_e.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),_e.default.createElement("div",{className:"grid grid-cols-2 gap-8"},_e.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},_e.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(t=>{let r=Dd[t];return r?_e.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),_e.default.createElement(Tn,{size:100}),_e.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(t=>{let r=jd[t];return r?_e.default.createElement("span",{key:t,className:"text-lg",title:r.label},r.emoji):null})),_e.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),_e.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),_e.default.createElement("div",{className:"space-y-4"},_e.default.createElement("div",null,_e.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),_e.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),_e.default.createElement("div",null,_e.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),_e.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),_e.default.createElement("div",null,_e.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),_e.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(t=>{let r=Dd[t];return r?_e.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},r.emoji," ",r.label):null}):_e.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),_e.default.createElement("div",null,_e.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),_e.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(t=>{let r=jd[t];return r?_e.default.createElement("span",{key:t,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r.emoji," ",r.label):null}):_e.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&_e.default.createElement("div",null,_e.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),_e.default.createElement("pre",{className:"mt-2 p-4 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap font-mono"},e.instructions)))}var ke=Z(J());var Ui=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"}),Vo="#ef4444";var q=Z(J());var D1=Z(J()),n6=Z(J());function R8(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=Kne(e,qne),d=a||{width:n,height:o,x:0,y:0},p=xt("recharts-surface",i);return D1.createElement("svg",XN({},pn(c),{className:p,width:n,height:o,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height),ref:t}),D1.createElement("title",null,l),D1.createElement("desc",null,u),r)});var j1=Z(J());var Gne=["children","className"];function ZN(){return ZN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=Yne(e,Gne),a=xt("recharts-layer",n);return j1.createElement("g",ZN({className:a},pn(o),{ref:t}),r)});var yi=Z(J()),lS=Z(J()),n7=Z(Wh());function $1(e){return e==="__proto__"}var Zne=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function L1(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:Zne.test(e);default:return!1}}function hm(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function JN(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(JN).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function ym(e){if(Array.isArray(e))return e.map(hm);if(typeof e=="symbol")return[e];e=JN(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]:Qne,r=10**t,n=Math.round(e*r)/r;return Object.is(n,-0)?0:n}function xo(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+Wi(s)+a:o+a},"")}var Vr=e=>e===0?0:e>0?1:-1,jo=e=>typeof e=="number"&&e!=+e,Xl=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,De=e=>(typeof e=="number"||e instanceof Number)&&!jo(e),ya=e=>De(e)||typeof e=="string",Rne=0,Zl=e=>{var t=++Rne;return"".concat(e||"").concat(t)},On=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(!De(t)&&typeof t!="string")return n;var a;if(Xl(t)){if(r==null)return n;var i=t.indexOf("%");a=r*parseFloat(t.slice(0,i))/100}else a=+t;return jo(a)&&(a=n),o&&r!=null&&a>r&&(a=r),a},QN=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,r={},n=0;nn&&(typeof t=="function"?t(n):Do(n,t))===r)}var or=e=>e===null||typeof e>"u",Jl=e=>or(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function bo(e){return e!=null}function va(){}function Wy(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 o6(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 el(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=Wy(t),l=s.x,u=s.y,c=s.height,d=s.upperWidth,p=s.lowerWidth,f=l,m=l+(d-p)/2,y=(f+m)/2,b=(d+p)/2,h=f+d/2,g=c>=0?1:-1,v=g*o,x=g>0?"end":"start",S=g>0?"start":"end",w=d>=0?1:-1,A=w*o,k=w>0?"end":"start",_=w>0?"start":"end",C=a;if(r==="top"){var E={x:f+d/2,y:u-v,horizontalAnchor:"middle",verticalAnchor:x};return i&&C&&(E.height=Math.max(u-C.y,0),E.width=d),E}if(r==="bottom"){var j={x:m+p/2,y:u+c+v,horizontalAnchor:"middle",verticalAnchor:S};return i&&C&&(j.height=Math.max(C.y+C.height-(u+c),0),j.width=p),j}if(r==="left"){var X={x:y-A,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"};return i&&C&&(X.width=Math.max(X.x-C.x,0),X.height=c),X}if(r==="right"){var z={x:y+b+A,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"};return i&&C&&(z.width=Math.max(C.x+C.width-z.x,0),z.height=c),z}var U=i&&C?{width:b,height:c}:{};return r==="insideLeft"?el({x:y+A,y:u+c/2,horizontalAnchor:_,verticalAnchor:"middle"},U):r==="insideRight"?el({x:y+b-A,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},U):r==="insideTop"?el({x:f+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:S},U):r==="insideBottom"?el({x:m+p/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:x},U):r==="insideTopLeft"?el({x:f+A,y:u+v,horizontalAnchor:_,verticalAnchor:S},U):r==="insideTopRight"?el({x:f+d-A,y:u+v,horizontalAnchor:k,verticalAnchor:S},U):r==="insideBottomLeft"?el({x:m+A,y:u+c-v,horizontalAnchor:_,verticalAnchor:x},U):r==="insideBottomRight"?el({x:m+p-A,y:u+c-v,horizontalAnchor:k,verticalAnchor:x},U):r&&typeof r=="object"&&(De(r.x)||Xl(r.x))&&(De(r.y)||Xl(r.y))?el({x:l+On(r.x,b),y:u+On(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},U):el({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},U)},noe=["top","left","right","bottom"];function Hy(e){return e==null?!1:typeof e=="object"?!0:noe.includes(e)}var F1=Z(J()),RN=(0,F1.createContext)(null),a6=()=>(0,F1.useContext)(RN);var xa=Z(J());var _6=Z(J());function Pr(e){return function(){return e}}var eT=Math.cos;var qy=Math.sin,$o=Math.sqrt;var $d=Math.PI,tEe=$d/2,vm=2*$d;var tT=Math.PI,rT=2*tT,Ld=1e-6,ooe=rT-Ld;function i6(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return i6;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oLd)if(!(Math.abs(d*l-u*c)>Ld)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let f=n-i,m=o-s,y=l*l+u*u,b=f*f+m*m,h=Math.sqrt(y),g=Math.sqrt(p),v=a*Math.tan((tT-Math.acos((y+p-b)/(2*h*g)))/2),x=v/g,S=v/h;Math.abs(x-1)>Ld&&this._append`L${t+x*c},${r+x*d}`,this._append`A${a},${a},0,0,${+(d*f>c*m)},${this._x1=t+S*l},${this._y1=r+S*u}`}}arc(t,r,n,o,a,i){if(t=+t,r=+r,n=+n,i=!!i,n<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(o),l=n*Math.sin(o),u=t+s,c=r+l,d=1^i,p=i?o-a:a-o;this._x1===null?this._append`M${u},${c}`:(Math.abs(this._x1-u)>Ld||Math.abs(this._y1-c)>Ld)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%rT+rT),p>ooe?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>Ld&&this._append`A${n},${n},0,${+(p>=tT)},${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 s6(){return new zd}s6.prototype=zd.prototype;function xm(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 zd(t)}var uEe=Array.prototype.slice;function bm(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function l6(e){this._context=e}l6.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 mc(e){return new l6(e)}function U1(e){return e[0]}function W1(e){return e[1]}function Ky(e,t){var r=Pr(!0),n=null,o=mc,a=null,i=xm(s);e=typeof e=="function"?e:e===void 0?U1:Pr(e),t=typeof t=="function"?t:t===void 0?W1:Pr(t);function s(l){var u,c=(l=bm(l)).length,d,p=!1,f;for(n==null&&(a=o(f=i())),u=0;u<=c;++u)!(u=f;--m)s.point(v[m],x[m]);s.lineEnd(),s.areaEnd()}h&&(v[p]=+e(b,p,d),x[p]=+t(b,p,d),s.point(n?+n(b,p,d):v[p],r?+r(b,p,d):x[p]))}if(g)return s=null,g+""||null}function c(){return Ky().defined(o).curve(i).context(a)}return u.x=function(d){return arguments.length?(e=typeof d=="function"?d:Pr(+d),n=null,u):e},u.x0=function(d){return arguments.length?(e=typeof d=="function"?d:Pr(+d),u):e},u.x1=function(d){return arguments.length?(n=d==null?null:typeof d=="function"?d:Pr(+d),u):n},u.y=function(d){return arguments.length?(t=typeof d=="function"?d:Pr(+d),r=null,u):t},u.y0=function(d){return arguments.length?(t=typeof d=="function"?d:Pr(+d),u):t},u.y1=function(d){return arguments.length?(r=d==null?null:typeof d=="function"?d:Pr(+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:Pr(!!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 H1=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 nT(e){return new H1(e,!0)}function oT(e){return new H1(e,!1)}var Sm={draw(e,t){let r=$o(t/$d);e.moveTo(r,0),e.arc(0,0,r,0,vm)}};var aT={draw(e,t){let r=$o(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 u6=$o(1/3),ioe=u6*2,iT={draw(e,t){let r=$o(t/ioe),n=r*u6;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var sT={draw(e,t){let r=$o(t),n=-r/2;e.rect(n,n,r,r)}};var soe=.8908130915292852,c6=qy($d/10)/qy(7*$d/10),loe=qy(vm/10)*c6,uoe=-eT(vm/10)*c6,lT={draw(e,t){let r=$o(t*soe),n=loe*r,o=uoe*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=vm*a/5,s=eT(i),l=qy(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var uT=$o(3),cT={draw(e,t){let r=-$o(t/(uT*3));e.moveTo(0,r*2),e.lineTo(-uT*r,-r),e.lineTo(uT*r,-r),e.closePath()}};var Hi=-.5,qi=$o(3)/2,dT=1/$o(12),coe=(dT/2+1)*3,pT={draw(e,t){let r=$o(t/coe),n=r/2,o=r*dT,a=n,i=r*dT+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(Hi*n-qi*o,qi*n+Hi*o),e.lineTo(Hi*a-qi*i,qi*a+Hi*i),e.lineTo(Hi*s-qi*l,qi*s+Hi*l),e.lineTo(Hi*n+qi*o,Hi*o-qi*n),e.lineTo(Hi*a+qi*i,Hi*i-qi*a),e.lineTo(Hi*s+qi*l,Hi*l-qi*s),e.closePath()}};function q1(e,t){let r=null,n=xm(o);e=typeof e=="function"?e:Pr(e||Sm),t=typeof t=="function"?t:Pr(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:Pr(a),o):e},o.size=function(a){return arguments.length?(t=typeof a=="function"?a:Pr(+a),o):t},o.context=function(a){return arguments.length?(r=a??null,o):r},o}function km(){}function _m(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 d6(e){this._context=e}d6.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:_m(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:_m(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function fT(e){return new d6(e)}function p6(e){this._context=e}p6.prototype={areaStart:km,areaEnd:km,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:_m(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function mT(e){return new p6(e)}function f6(e){this._context=e}f6.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:_m(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function gT(e){return new f6(e)}function m6(e){this._context=e}m6.prototype={areaStart:km,areaEnd:km,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 hT(e){return new m6(e)}function g6(e){return e<0?-1:1}function h6(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(g6(a)+g6(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function y6(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 K1(e){this._context=e}K1.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,y6(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,y6(this,r=h6(this,e,t)),r);break;default:yT(this,this._t0,r=h6(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function v6(e){this._context=new x6(e)}(v6.prototype=Object.create(K1.prototype)).point=function(e,t){K1.prototype.point.call(this,t,e)};function x6(e){this._context=e}x6.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 vT(e){return new K1(e)}function xT(e){return new v6(e)}function w6(e){this._context=e}w6.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=b6(e),o=b6(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 wT(e){return new V1(e,.5)}function ST(e){return new V1(e,0)}function kT(e){return new V1(e,1)}function pi(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 doe(e,t){return e[t]}function poe(e){let t=[];return t.key=e,t}function _T(){var e=Pr([]),t=Cm,r=pi,n=doe;function o(a){var i=Array.from(e.apply(this,arguments),poe),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(Jl(e));return C6[t]||Sm},Soe=(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*boe;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}},koe=(e,t)=>{C6["symbol".concat(Jl(e))]=t},TT=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=voe(e,moe),l=k6(k6({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=woe(u),b=q1().type(y).size(Soe(o,i,u)),h=b();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=pn(l);return De(p)&&De(f)&&De(o)?_6.createElement("path",NT({},m,{className:xt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};TT.registerSymbol=koe;var A6=Z(J());var G1=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Am=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,A6.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{Fy(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},_oe=(e,t,r)=>n=>(e(t,r,n),null),Ql=(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];Fy(o)&&typeof a=="function"&&(n||(n={}),n[o]=_oe(a,t,r))}),n};function E6(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 Coe(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function Y1(){return Y1=Object.assign?Object.assign.bind():function(e){for(var t=1;t>>=0,e===0?32:31-(Bte(e)/Fte|0)|0}var yb=256,vb=262144,xb=4194304;function kd(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 _1(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=kd(n):(i&=s,i!==0?o=kd(i):r||(r=s&~e,r!==0&&(o=kd(r))))):(s=n&~a,s!==0?o=kd(s):i!==0?o=kd(i):r||(r=n&~e,r!==0&&(o=kd(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 Fy(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Wte(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 A$(){var e=xb;return xb<<=1,(xb&62914560)===0&&(xb=4194304),e}function zA(e){for(var t=[],r=0;31>r;r++)t.push(e);return t}function Uy(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Hte(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 Xte=/[\n"\\]/g;function $i(e){return e.replace(Xte,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function kE(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=""+Ii(t)):e.value!==""+Ii(t)&&(e.value=""+Ii(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?_E(e,i,Ii(t)):r!=null?_E(e,i,Ii(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=""+Ii(s):e.removeAttribute("name")}function j$(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)){SE(e);return}r=r!=null?""+Ii(r):"",t=t!=null?""+Ii(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),SE(e)}function _E(e,t,r){t==="number"&&Rb(e.ownerDocument)===e||e.defaultValue===""+r||(e.defaultValue=""+r)}function Gf(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"),AE=!1;if(Wl)try{Tf={},Object.defineProperty(Tf,"passive",{get:function(){AE=!0}}),window.addEventListener("test",Tf,Tf),window.removeEventListener("test",Tf,Tf)}catch{AE=!1}var Tf,Vu=null,hN=null,$b=null;function F$(){if($b)return $b;var e,t=hN,r=t.length,n,o="value"in Vu?Vu.value:Vu.textContent,a=o.length;for(e=0;e=dy),a4=" ",i4=!1;function W$(e,t){switch(e){case"keyup":return kre.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function H$(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var zf=!1;function Cre(e,t){switch(e){case"compositionend":return H$(t);case"keypress":return t.which!==32?null:(i4=!0,a4);case"textInput":return e=t.data,e===a4&&i4?null:e;default:return null}}function Are(e,t){if(zf)return e==="compositionend"||!vN&&W$(e,t)?(e=F$(),$b=hN=Vu=null,zf=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=c4(r)}}function G$(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?G$(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Y$(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Rb(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=Rb(e.document)}return t}function xN(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 Dre=Wl&&"documentMode"in document&&11>=document.documentMode,Bf=null,EE=null,fy=null,NE=!1;function p4(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;NE||Bf==null||Bf!==Rb(n)||(n=Bf,"selectionStart"in n&&xN(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}),fy&&Ey(fy,n)||(fy=n,n=y1(EE,"onSelect"),0>=i,o-=i,Gs=1<<32-li(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&&Dl(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&&Dl(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&&Dl(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&&Dl(h,k),S}function x(h,g,v,b){if(typeof v=="object"&&v!==null&&v.type===Df&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case hb:e:{for(var S=v.key;g!==null;){if(g.key===S){if(S=v.type,S===Df){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===Bu&&_d(S)===g.type){r(h,g.sibling),b=o(g,v.props),ty(b,v),b.return=h,h=b;break e}r(h,g);break}else t(h,g);g=g.sibling}v.type===Df?(b=Ed(v.props.children,h.mode,b,v.key),b.return=h,h=b):(b=zb(v.type,v.key,v.props,null,h.mode,b),ty(b,v),b.return=h,h=b)}return i(h);case iy: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=VA(v,h.mode,b),b.return=h,h=b}return i(h);case Bu:return v=_d(v),x(h,g,v,b)}if(sy(v))return m(h,g,v,b);if(Rh(v)){if(S=Rh(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,Cb(v),b);if(v.$$typeof===$l)return x(h,g,_b(h,v),b);Ab(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=KA(v,h.mode,b),b.return=h,h=b),i(h)):r(h,g)}return function(h,g,v,b){try{Oy=0;var S=x(h,g,v,b);return Zf=null,S}catch(_){if(_===fm||_===O1)throw _;var w=oi(29,_,null,h.mode);return w.lanes=b,w.return=h,w}}}var Id=uL(!0),cL=uL(!1),Fu=!1;function NN(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function jE(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 Qu(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ru(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=t1(e),tL(e,null,r),t}return T1(e,n,t,r),t1(e)}function gy(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,N$(e,r)}}function YA(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 $E=!1;function hy(){if($E){var e=Xf;if(e!==null)throw e}}function yy(e,t,r,n){$E=!1;var o=e.updateQueue;Fu=!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===rm&&($E=!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:Fu=!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),lc|=i,e.lanes=i,e.memoizedState=d}}function dL(e,t){if(typeof e!="function")throw Error(Ee(191,e));e.call(t)}function pL(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,UN(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=Hre(l,n);vy(e,t,c,ui(e))}else vy(e,t,n,ui(e))}catch(d){vy(e,t,{then:function(){},status:"rejected",reason:d},ui())}finally{Or.p=a,i!==null&&s.types!==null&&(i.types=s.types),jt.T=i}}function Xre(){}function UE(e,t,r,n){if(e.tag!==5)throw Error(Ee(476));var o=LL(e).queue;$L(e,o,t,Ad,r===null?Xre:function(){return zL(e),r(n)})}function LL(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ad,baseState:Ad,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ql,lastRenderedState:Ad},next:null};var r={};return t.next={memoizedState:r,baseState:r,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ql,lastRenderedState:r},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function zL(e){var t=LL(e);t.next===null&&(t=e.alternate.memoizedState),vy(e,t.next.queue,{},ui())}function FN(){return Zo(jy)}function BL(){return Zn().memoizedState}function FL(){return Zn().memoizedState}function Zre(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var r=ui();e=Qu(r);var n=Ru(t,e,r);n!==null&&(La(n,t,r),gy(n,t,r)),t={cache:CN()},e.payload=t;return}t=t.return}}function Jre(e,t,r){var n=ui();r={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},D1(e)?WL(t,r):(r=wN(e,t,r,n),r!==null&&(La(r,e,n),HL(r,t,n)))}function UL(e,t,r){var n=ui();vy(e,t,r,n)}function vy(e,t,r,n){var o={lane:n,revertLane:0,gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null};if(D1(e))WL(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,ci(s,i))return T1(e,t,o,0),Gr===null&&N1(),!1}catch{}if(r=wN(e,t,o,n),r!==null)return La(r,e,n),HL(r,t,n),!0}return!1}function UN(e,t,r,n){if(n={lane:2,revertLane:ZN(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},D1(e)){if(t)throw Error(Ee(479))}else t=wN(e,r,n,2),t!==null&&La(t,e,2)}function D1(e){var t=e.alternate;return e===Zt||t!==null&&t===Zt}function WL(e,t){Jf=s1=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function HL(e,t,r){if((r&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,r|=n,t.lanes=r,N$(e,r)}}var My={readContext:Zo,use:M1,useCallback:Bn,useContext:Bn,useEffect:Bn,useImperativeHandle:Bn,useLayoutEffect:Bn,useInsertionEffect:Bn,useMemo:Bn,useReducer:Bn,useRef:Bn,useState:Bn,useDebugValue:Bn,useDeferredValue:Bn,useTransition:Bn,useSyncExternalStore:Bn,useId:Bn,useHostTransitionStatus:Bn,useFormState:Bn,useActionState:Bn,useOptimistic:Bn,useMemoCache:Bn,useCacheRefresh:Bn};My.useEffectEvent=Bn;var qL={readContext:Zo,use:M1,useCallback:function(e,t){return ba().memoizedState=[e,t===void 0?null:t],e},useContext:Zo,useEffect:E4,useImperativeHandle:function(e,t,r){r=r!=null?r.concat([e]):null,Ub(4194308,4,PL.bind(null,t,e),r)},useLayoutEffect:function(e,t){return Ub(4194308,4,e,t)},useInsertionEffect:function(e,t){Ub(4,2,e,t)},useMemo:function(e,t){var r=ba();t=t===void 0?null:t;var n=e();if(Dd){Ku(!0);try{e()}finally{Ku(!1)}}return r.memoizedState=[n,t],n},useReducer:function(e,t,r){var n=ba();if(r!==void 0){var o=r(t);if(Dd){Ku(!0);try{r(t)}finally{Ku(!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=Jre.bind(null,Zt,e),[n.memoizedState,e]},useRef:function(e){var t=ba();return e={current:e},t.memoizedState=e},useState:function(e){e=BE(e);var t=e.queue,r=UL.bind(null,Zt,t);return t.dispatch=r,[e.memoizedState,r]},useDebugValue:zN,useDeferredValue:function(e,t){var r=ba();return BN(r,e,t)},useTransition:function(){var e=BE(!1);return e=$L.bind(null,Zt,e.queue,!0,!1),ba().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,r){var n=Zt,o=ba();if(gr){if(r===void 0)throw Error(Ee(407));r=r()}else{if(r=t(),Gr===null)throw Error(Ee(349));(pr&127)!==0||yL(n,t,r)}o.memoizedState=r;var a={value:r,getSnapshot:t};return o.queue=a,E4(xL.bind(null,n,a,e),[e]),n.flags|=2048,om(9,{destroy:void 0},vL.bind(null,n,a,r,t),null),r},useId:function(){var e=ba(),t=Gr.identifierPrefix;if(gr){var r=Ys,n=Gs;r=(n&~(1<<32-li(n)-1)).toString(32)+r,t="_"+t+"R_"+r,r=l1++,0<\/script>",a=a.removeChild(a.firstChild);break;case"select":a=typeof n.is=="string"?i.createElement("select",{is:n.is}):i.createElement("select"),n.multiple?a.multiple=!0:n.size&&(a.size=n.size);break;default:a=typeof n.is=="string"?i.createElement(o,{is:n.is}):i.createElement(o)}}a[Yo]=t,a[za]=n;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)a.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=a;e:switch(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&&Ol(t)}}return dn(t),rE(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,r),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Ol(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(Ee(166));if(e=Zu.current,Of(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||U8(e.nodeValue,r)),e||ic(t,!0)}else e=v1(e).createTextNode(n),e[Yo]=t,t.stateNode=e}return dn(t),null;case 31:if(r=t.memoizedState,e===null||e.memoizedState!==null){if(n=Of(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 Pd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dn(t),e=!1}else r=GA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),e=!0;if(!e)return t.flags&256?(ni(t),t):(ni(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=Of(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 Pd(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;dn(t),o=!1}else o=GA(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(ni(t),t):(ni(t),null)}return ni(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),Eb(t,t.updateQueue),dn(t),null);case 4:return Rf(),e===null&&JN(t.stateNode.containerInfo),dn(t),null;case 10:return Fl(t.type),dn(t),null;case 19:if(Bo(Xn),n=t.memoizedState,n===null)return dn(t),null;if(o=(t.flags&128)!==0,a=n.rendering,a===null)if(o)ry(n,!1);else{if(Fn!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(a=i1(e),a!==null){for(t.flags|=128,ry(n,!1),e=a.updateQueue,t.updateQueue=e,Eb(t,e),t.subtreeFlags=0,e=r,r=t.child;r!==null;)rL(r,e),r=r.sibling;return rn(Xn,Xn.current&1|2),gr&&Dl(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&ii()>p1&&(t.flags|=128,o=!0,ry(n,!1),t.lanes=4194304)}else{if(!o)if(e=i1(a),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,Eb(t,e),ry(n,!0),n.tail===null&&n.tailMode==="hidden"&&!a.alternate&&!gr)return dn(t),null}else 2*ii()-n.renderingStartTime>p1&&r!==536870912&&(t.flags|=128,o=!0,ry(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=ii(),e.sibling=null,r=Xn.current,rn(Xn,o?r&1|2:r&1),gr&&Dl(t,n.treeForkCount),e):(dn(t),null);case 22:case 23:return ni(t),TN(),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&&Eb(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(Nd),null;case 24:return r=null,e!==null&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),Fl(po),dn(t),null;case 25:return null;case 30:return null}throw Error(Ee(156,t.tag))}function rne(e,t){switch(_N(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Fl(po),Rf(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Jb(t),null;case 31:if(t.memoizedState!==null){if(ni(t),t.alternate===null)throw Error(Ee(340));Pd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ni(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Ee(340));Pd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(Xn),null;case 4:return Rf(),null;case 10:return Fl(t.type),null;case 22:case 23:return ni(t),TN(),e!==null&&Bo(Nd),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Fl(po),null;case 25:return null;default:return null}}function r8(e,t){switch(_N(t),t.tag){case 3:Fl(po),Rf();break;case 26:case 27:case 5:Jb(t);break;case 4:Rf();break;case 31:t.memoizedState!==null&&ni(t);break;case 13:ni(t);break;case 19:Bo(Xn);break;case 10:Fl(t.type);break;case 22:case 23:ni(t),TN(),e!==null&&Bo(Nd);break;case 24:Fl(po)}}function Vy(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 sc(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 n8(e){var t=e.updateQueue;if(t!==null){var r=e.stateNode;try{pL(t,r)}catch(n){Br(e,e.return,n)}}}function o8(e,t,r){r.props=jd(e.type,e.memoizedProps),r.state=e.memoizedState;try{r.componentWillUnmount()}catch(n){Br(e,t,n)}}function xy(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 Xs(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 a8(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 nE(e,t,r){try{var n=e.stateNode;Sne(n,e.type,r,t),n[za]=t}catch(o){Br(e,e.return,o)}}function i8(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&cc(e.type)||e.tag===4}function oE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||i8(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&&cc(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 VE(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=Ll));else if(n!==4&&(n===27&&cc(e.type)&&(r=e.stateNode,t=null),e=e.child,e!==null))for(VE(e,t,r),e=e.sibling;e!==null;)VE(e,t,r),e=e.sibling}function d1(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&&cc(e.type)&&(r=e.stateNode),e=e.child,e!==null))for(d1(e,t,r),e=e.sibling;e!==null;)d1(e,t,r),e=e.sibling}function s8(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[za]=r}catch(a){Br(e,e.return,a)}}var jl=!1,co=!1,aE=!1,F4=typeof WeakSet=="function"?WeakSet:Set,Lo=null;function nne(e,t){if(e=e.containerInfo,RE=S1,e=Y$(e),xN(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(eN={focusedElem:e,selectionRange:r},S1=!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=l$("link","href",o).get(n+(r.href||""));if(i){for(var s=0;sx&&(i=x,x=y,y=i);var h=d4(s,y),g=d4(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=XE,XE=null;var a=tc,i=Ul;if(wo=0,im=tc=null,Ul=0,(Tr&6)!==0)throw Error(Ee(331));var s=Tr;if(Tr|=4,v8(a.current),g8(a,a.current,i,r),Tr=s,Gy(0,!1),si&&typeof si.onPostCommitFiberRoot=="function")try{si.onPostCommitFiberRoot(By,a)}catch{}return!0}finally{Or.p=o,jt.T=n,I8(e,t)}}function q4(e,t,r){t=Li(r,t),t=HE(e.stateNode,t,2),e=Ru(e,t,2),e!==null&&(Uy(e,2),Qs(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"&&(ec===null||!ec.has(n))){e=Li(r,e),r=XL(2),n=Ru(t,r,2),n!==null&&(ZL(r,n,t,e),Uy(n,2),Qs(n));break}}t=t.return}}function sE(e,t,r){var n=e.pingCache;if(n===null){n=e.pingCache=new ine;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)||(GN=!0,o.add(r),e=dne.bind(null,e,t,r),t.then(e,e))}function dne(e,t,r){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&r,e.warmLanes&=~r,Gr===e&&(pr&r)===r&&(Fn===4||Fn===3&&(pr&62914560)===pr&&300>ii()-j1?(Tr&2)===0&&sm(e,0):YN|=r,am===pr&&(am=0)),Qs(e)}function j8(e,t){t===0&&(t=A$()),e=Bd(e,t),e!==null&&(Uy(e,t),Qs(e))}function pne(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),j8(e,r)}function fne(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),j8(e,r)}function mne(e,t){return cN(e,t)}var g1=null,If=null,JE=!1,h1=!1,lE=!1,Xu=0;function Qs(e){e!==If&&e.next===null&&(If===null?g1=If=e:If=If.next=e),h1=!0,JE||(JE=!0,hne())}function Gy(e,t){if(!lE&&h1){lE=!0;do for(var r=!1,n=g1;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-li(42|e)+1)-1,a&=o&~(i&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(r=!0,K4(n,a))}else a=pr,a=_1(n,n===Gr?a:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(a&3)===0||Fy(n,a)||(r=!0,K4(n,a));n=n.next}while(r);lE=!1}}function gne(){$8()}function $8(){h1=JE=!1;var e=0;Xu!==0&&_ne()&&(e=Xu);for(var t=ii(),r=null,n=g1;n!==null;){var o=n.next,a=L8(n,t);a===0?(n.next=null,r===null?g1=o:r.next=o,o===null&&(If=r)):(r=n,(e!==0||(a&3)!==0)&&(h1=!0)),n=o}wo!==0&&wo!==5||Gy(e,!1),Xu!==0&&(Xu=0)}function L8(e,t){for(var r=e.suspendedLanes,n=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var c=l.transferSize,d=l.initiatorType;c&&Q4(d)&&(l=l.responseEnd,i+=c*(l"u"?null:document;function V8(e,t,r){var n=gm;if(n&&typeof t=="string"&&t){var o=$i(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof r=="string"&&(o+='[crossorigin="'+r+'"]'),a$.has(o)||(a$.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 Ine(e){Gl.D(e),V8("dns-prefetch",e,null)}function Dne(e,t){Gl.C(e,t),V8("preconnect",e,t)}function jne(e,t,r){Gl.L(e,t,r);var n=gm;if(n&&e&&t){var o='link[rel="preload"][as="'+$i(t)+'"]';t==="image"&&r&&r.imageSrcSet?(o+='[imagesrcset="'+$i(r.imageSrcSet)+'"]',typeof r.imageSizes=="string"&&(o+='[imagesizes="'+$i(r.imageSizes)+'"]')):o+='[href="'+$i(e)+'"]';var a=o;switch(t){case"style":a=lm(e);break;case"script":a=hm(e)}Ui.has(a)||(e=fn({rel:"preload",href:t==="image"&&r&&r.imageSrcSet?void 0:e,as:t},r),Ui.set(a,e),n.querySelector(o)!==null||t==="style"&&n.querySelector(Yy(a))||t==="script"&&n.querySelector(Xy(a))||(t=n.createElement("link"),Jo(t,"link",e),zo(t),n.head.appendChild(t)))}}function $ne(e,t){Gl.m(e,t);var r=gm;if(r&&e){var n=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+$i(n)+'"][href="'+$i(e)+'"]',a=o;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":a=hm(e)}if(!Ui.has(a)&&(e=fn({rel:"modulepreload",href:e},t),Ui.set(a,e),r.querySelector(o)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(r.querySelector(Xy(a)))return}n=r.createElement("link"),Jo(n,"link",e),zo(n),r.head.appendChild(n)}}}function Lne(e,t,r){Gl.S(e,t,r);var n=gm;if(n&&e){var o=Vf(n).hoistableStyles,a=lm(e);t=t||"default";var i=o.get(a);if(!i){var s={loading:0,preload:null};if(i=n.querySelector(Yy(a)))s.loading=5;else{e=fn({rel:"stylesheet",href:e,"data-precedence":t},r),(r=Ui.get(a))&&QN(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,Kb(i,t,n)}i={type:"stylesheet",instance:i,count:1,state:s},o.set(a,i)}}}function zne(e,t){Gl.X(e,t);var r=gm;if(r&&e){var n=Vf(r).hoistableScripts,o=hm(e),a=n.get(o);a||(a=r.querySelector(Xy(o)),a||(e=fn({src:e,async:!0},t),(t=Ui.get(o))&&RN(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 Bne(e,t){Gl.M(e,t);var r=gm;if(r&&e){var n=Vf(r).hoistableScripts,o=hm(e),a=n.get(o);a||(a=r.querySelector(Xy(o)),a||(e=fn({src:e,async:!0,type:"module"},t),(t=Ui.get(o))&&RN(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 i$(e,t,r,n){var o=(o=Zu.current)?x1(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=lm(r.href),r=Vf(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=lm(r.href);var a=Vf(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(Yy(e)))&&!a._p&&(i.instance=a,i.state.loading=5),Ui.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},Ui.set(e,r),a||Fne(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=hm(r),r=Vf(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 lm(e){return'href="'+$i(e)+'"'}function Yy(e){return'link[rel="stylesheet"]['+e+"]"}function G8(e){return fn({},e,{"data-precedence":e.precedence,precedence:null})}function Fne(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 hm(e){return'[src="'+$i(e)+'"]'}function Xy(e){return"script[async]"+e}function s$(e,t,r){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+$i(r.href)+'"]');if(n)return t.instance=n,zo(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"),zo(n),Jo(n,"style",o),Kb(n,r.precedence,e),t.instance=n;case"stylesheet":o=lm(r.href);var a=e.querySelector(Yy(o));if(a)return t.state.loading|=4,t.instance=a,zo(a),a;n=G8(r),(o=Ui.get(o))&&QN(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,Kb(a,r.precedence,e),t.instance=a;case"script":return a=hm(r.src),(o=e.querySelector(Xy(a)))?(t.instance=o,zo(o),o):(n=r,(o=Ui.get(a))&&(n=fn({},r),RN(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,Kb(n,r.precedence,e));return t.instance}function Kb(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 Une(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 Y8(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Wne(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=lm(n.href),a=t.querySelector(Yy(o));if(a){t=a._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=b1.bind(e),t.then(e,e)),r.state.loading|=4,r.instance=a,zo(a);return}a=t.ownerDocument||t,n=G8(n),(o=Ui.get(o))&&QN(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=b1.bind(e),t.addEventListener("load",r),t.addEventListener("error",r))}}var pE=0;function Hne(e,t){return e.stylesheets&&e.count===0&&Gb(e,e.stylesheets),0pE?50:800)+t);return e.unsuspend=r,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(o)}}:null}function b1(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Gb(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var w1=null;function Gb(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,w1=new Map,t.forEach(qne,e),w1=null,b1.call(e))}function qne(e,t){if(!(t.state.loading&4)){var r=w1.get(e);if(r)var n=r.get(null);else{r=new Map,w1.set(e,r);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";function n6(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n6)}catch(e){console.error(e)}}n6(),o6.exports=r6()});var Tz=$o(Nz=>{"use strict";var Bm=J();function fae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mae=typeof Object.is=="function"?Object.is:fae,gae=Bm.useState,hae=Bm.useEffect,yae=Bm.useLayoutEffect,vae=Bm.useDebugValue;function xae(e,t){var r=t(),n=gae({inst:{value:r,getSnapshot:t}}),o=n[0].inst,a=n[1];return yae(function(){o.value=r,o.getSnapshot=t,tO(o)&&a({inst:o})},[e,r,t]),hae(function(){return tO(o)&&a({inst:o}),e(function(){tO(o)&&a({inst:o})})},[e]),vae(r),r}function tO(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!mae(e,r)}catch{return!0}}function bae(e,t){return t()}var wae=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?bae:xae;Nz.useSyncExternalStore=Bm.useSyncExternalStore!==void 0?Bm.useSyncExternalStore:wae});var Pz=$o((ROe,Oz)=>{"use strict";Oz.exports=Tz()});var Iz=$o(Mz=>{"use strict";var Lw=J(),Sae=Pz();function kae(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var _ae=typeof Object.is=="function"?Object.is:kae,Cae=Sae.useSyncExternalStore,Aae=Lw.useRef,Eae=Lw.useEffect,Nae=Lw.useMemo,Tae=Lw.useDebugValue;Mz.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=Aae(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=Nae(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,_ae(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=Cae(e,a[0],a[1]);return Eae(function(){i.hasValue=!0,i.value=s},[s]),Tae(s),s}});var jz=$o((tPe,Dz)=>{"use strict";Dz.exports=Iz()});var S7=$o(w7=>{"use strict";var wv=J();function Ise(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Dse=typeof Object.is=="function"?Object.is:Ise,jse=wv.useSyncExternalStore,$se=wv.useRef,Lse=wv.useEffect,zse=wv.useMemo,Bse=wv.useDebugValue;w7.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var a=$se(null);if(a.current===null){var i={hasValue:!1,value:null};a.current=i}else i=a.current;a=zse(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,Dse(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 Lse(function(){i.hasValue=!0,i.value=s},[s]),Bse(s),s}});var _7=$o((eMe,k7)=>{"use strict";k7.exports=S7()});var ZO=$o((X9,GS)=>{(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,q,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=q=j+3;;)if(M=T,T=M.plus(v(V,M,q+2)).times(.5),g(M.d).slice(0,q)===(O=g(T.d)).slice(0,q)){if(O=O.slice(q-3,q+1),D==q&&O=="4999"){if(C(M,j+1,0),M.times(M).eq(V)){T=M;break}}else if(O!="9999")break;q+=4}return n=!0,C(T,j)},y.times=y.mul=function(N){var O,j,T,D,M,q,V,L,G,W=this,ie=W.constructor,Me=W.d,he=(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=Me.length,G=he.length,L=0;){for(O=0,D=L+T;D>T;)V=M[D]+he[T]*Me[D-T-1]+O,M[D--]=V%d|0,O=V/d|0;M[D]=(M[D]+O)%d|0}for(;!M[--q];)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,q,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,q=O>=j,M=V.s,q){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,q,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,q=N.e,D=O.e,L=L.slice(),M=q-D,M){for(M<0?(T=L,M=-M,V=G.length):(T=G,D=q,V=L.length),q=Math.ceil(ie/p),V=q>V?q+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="",q=N[0];if(D>0){for(M+=q,O=1;Oq?1:-1;else for(V=L=0;VD[V]?1:-1;break}return L}function j(T,D,M){for(var q=0;M--;)T[M]-=q,q=T[M]1;)T.shift()}return function(T,D,M,q){var V,L,G,W,ie,Me,he,ce,R,te,z,ee,U,P,Y,B,se,ne,ye=T.constructor,at=T.s==D.s?1:-1,it=T.d,pe=D.d;if(!T.s)return new ye(T);if(!D.s)throw Error(o+"Division by zero");for(L=T.e-D.e,se=pe.length,Y=it.length,he=new ye(at),ce=he.d=[],G=0;pe[G]==(it[G]||0);)++G;if(pe[G]>(it[G]||0)&&--L,M==null?ee=M=ye.precision:q?ee=M+(S(T)-S(D))+1:ee=M,ee<0)return new ye(0);if(ee=ee/p+2|0,G=0,se==1)for(W=0,pe=pe[0],ee++;(G1&&(pe=N(pe,W),it=N(it,W),se=pe.length,Y=it.length),P=se,R=it.slice(0,se),te=R.length;te=d/2&&++B;do W=0,V=O(pe,R,se,te),V<0?(z=R[0],se!=te&&(z=z*d+(R[1]||0)),W=z/B|0,W>1?(W>=d&&(W=d-1),ie=N(pe,W),Me=ie.length,te=R.length,V=O(ie,R,Me,te),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,q=new W(.03125);N.abs().gte(.1);)N=N.times(q),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),q=M.plus(v(D,j,V)),g(q.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=q}}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,q,V,L,G,W,ie=1,Me=10,he=N,ce=he.d,R=he.constructor,te=R.precision;if(he.s<1)throw Error(o+(he.s?"NaN":"-Infinity"));if(he.eq(c))return new R(0);if(O==null?(n=!1,G=te):G=O,he.eq(10))return O==null&&(n=!0),w(R,G);if(G+=Me,R.precision=G,j=g(ce),T=j.charAt(0),M=S(he),Math.abs(M)<15e14){for(;T<7&&T!=1||T==1&&j.charAt(1)>3;)he=he.times(N),j=g(he.d),T=j.charAt(0),ie++;M=S(he),T>1?(he=new R("0."+j),M++):he=new R(T+"."+j.slice(1))}else return L=w(R,G+2,te).times(M+""),he=k(new R(T+"."+j.slice(1)),G-Me).plus(L),R.precision=te,O==null?(n=!0,C(he,te)):he;for(V=q=he=v(he.minus(c),he.plus(c),G),W=C(he.times(he),G),D=3;;){if(q=C(q.times(W),G),L=V.plus(v(q,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,te).times(M+""))),V=v(V,new R(ie),G),R.precision=te,O==null?(n=!0,C(V,te)):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,q,V,L,G,W,ie=N.d;for(q=1,M=ie[0];M>=10;M/=10)q++;if(T=O-q,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],q=1;M>=10;M/=10)q++;T%=p,D=T-p+q}if(j!==void 0&&(M=l(10,q-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,q-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,q-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,q,V,L,G,W,ie,Me=N.constructor,he=Me.precision;if(!N.s||!O.s)return O.s?O.s=-O.s:O=new Me(N),n?C(O,he):O;if(L=N.d,ie=O.d,T=O.e,G=N.e,L=L.slice(),q=G-T,q){for(W=q<0,W?(j=L,q=-q,V=ie.length):(j=ie,T=G,V=L.length),D=Math.max(Math.ceil(he/p),V)+2,q>D&&(q=D,j.length=1),j.reverse(),D=q;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>q;){if(L[--D]0?M=M.charAt(0)+"."+M.slice(1)+_(T):q>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-q)>0&&(M+=_(T))):D>=q?(M+=_(D+1-q),j&&(T=j-D-1)>0&&(M=M+"."+_(T))):((T=D+1)0&&(D+1===q&&(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 q=this;if(!(q instanceof D))return new D(M);if(q.constructor=D,M instanceof D){q.s=M.s,q.e=M.e,q.d=(M=M.d)?M.slice():M;return}if(typeof M=="number"){if(M*0!==0)throw Error(a+M);if(M>0)q.s=1;else if(M<0)M=-M,q.s=-1;else{q.s=0,q.e=0,q.d=[0];return}if(M===~~M&&M<1e7){q.e=0,q.d=[M];return}return A(q,M.toString())}else if(typeof M!="string")throw Error(a+M);if(M.charCodeAt(0)===45?(M=M.slice(1),q.s=-1):q.s=1,u.test(M))A(q,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 GS<"u"&&GS.exports?GS.exports=r:(e||(e=typeof self<"u"&&self&&self.self==self?self:Function("return this")()),e.Decimal=r)})(X9)});var qW=$o((Wze,j5)=>{"use strict";var Wme=Object.prototype.hasOwnProperty,Aa="~";function px(){}Object.create&&(px.prototype=Object.create(null),new px().__proto__||(Aa=!1));function Hme(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function HW(e,t,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new Hme(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 y_(e,t){--e._eventsCount===0?e._events=new px:delete e._events[t]}function la(){this._events=new px,this._eventsCount=0}la.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Wme.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 K5=Symbol.for("react.transitional.element"),V5=Symbol.for("react.portal"),P_=Symbol.for("react.fragment"),M_=Symbol.for("react.strict_mode"),I_=Symbol.for("react.profiler"),D_=Symbol.for("react.consumer"),j_=Symbol.for("react.context"),$_=Symbol.for("react.forward_ref"),L_=Symbol.for("react.suspense"),z_=Symbol.for("react.suspense_list"),B_=Symbol.for("react.memo"),F_=Symbol.for("react.lazy"),Nhe=Symbol.for("react.view_transition"),The=Symbol.for("react.client.reference");function rs(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case K5:switch(e=e.type,e){case P_:case I_:case M_:case L_:case z_:case Nhe:return e;default:switch(e=e&&e.$$typeof,e){case j_:case $_:case F_:case B_:return e;case D_:return e;default:return t}}case V5:return t}}}Zr.ContextConsumer=D_;Zr.ContextProvider=j_;Zr.Element=K5;Zr.ForwardRef=$_;Zr.Fragment=P_;Zr.Lazy=F_;Zr.Memo=B_;Zr.Portal=V5;Zr.Profiler=I_;Zr.StrictMode=M_;Zr.Suspense=L_;Zr.SuspenseList=z_;Zr.isContextConsumer=function(e){return rs(e)===D_};Zr.isContextProvider=function(e){return rs(e)===j_};Zr.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===K5};Zr.isForwardRef=function(e){return rs(e)===$_};Zr.isFragment=function(e){return rs(e)===P_};Zr.isLazy=function(e){return rs(e)===F_};Zr.isMemo=function(e){return rs(e)===B_};Zr.isPortal=function(e){return rs(e)===V5};Zr.isProfiler=function(e){return rs(e)===I_};Zr.isStrictMode=function(e){return rs(e)===M_};Zr.isSuspense=function(e){return rs(e)===L_};Zr.isSuspenseList=function(e){return rs(e)===z_};Zr.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===P_||e===I_||e===M_||e===L_||e===z_||typeof e=="object"&&e!==null&&(e.$$typeof===F_||e.$$typeof===B_||e.$$typeof===j_||e.$$typeof===D_||e.$$typeof===$_||e.$$typeof===The||e.getModuleId!==void 0)};Zr.typeOf=rs});var rq=$o((q7e,tq)=>{"use strict";tq.exports=eq()});var Bee=Z(J()),Fee=Z(a6());var Tt=Z(J());var pt=Z(J());var kr=Z(J()),Ud={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"}},Zy={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"}},ym={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 Qne=({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 On({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=Ud[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(Qne,null)),n&&r.length>0&&kr.default.createElement("div",{className:"flex gap-1 mt-1"},r.map(c=>{let d=Zy[c];return d?kr.default.createElement("span",{key:c,className:"text-sm",title:d.label},d.emoji):null})))}var Fa=Z(J());var ks=Z(J()),i6=(0,ks.createContext)();function s6({children:e}){let[t,r]=(0,ks.useState)(()=>{let o=localStorage.getItem("dashboard-theme");return o?o==="dark":window.matchMedia("(prefers-color-scheme: dark)").matches});(0,ks.useEffect)(()=>{localStorage.setItem("dashboard-theme",t?"dark":"light")},[t]),(0,ks.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 ks.default.createElement(i6.Provider,{value:{darkMode:t,toggleDarkMode:n}},e)}function ut(){let e=(0,ks.useContext)(i6);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e}function vm({name:e,subtitle:t,badge:r,accentColor:n,stats:o=[],footer:a,onClick:i,actions:s}){let{darkMode:l}=ut(),[u,c]=Fa.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 Fa.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"}},Fa.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"8px"}},Fa.default.createElement("div",{style:{minWidth:0}},Fa.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&&Fa.default.createElement("div",{style:{fontSize:"13px",color:d.textSecondary,marginTop:"2px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"}},t)),r&&Fa.default.createElement("div",{style:{flexShrink:0}},r)),o.length>0&&Fa.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:"6px"}},o.map(f=>Fa.default.createElement("div",{key:f.label,title:f.title,style:{background:d.tileBg,borderRadius:"8px",padding:"6px 8px",textAlign:"center"}},Fa.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,lineHeight:1.2,color:p(f.tone)}},f.value),Fa.default.createElement("div",{style:{fontSize:"10px",textTransform:"uppercase",letterSpacing:"0.04em",color:d.textMuted,whiteSpace:"nowrap"}},f.label)))),a&&Fa.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",fontSize:"12px",color:d.textMuted}},a),s&&Fa.default.createElement("div",{style:{opacity:u?1:0,transition:"opacity 0.15s ease"}},s))}function oT(e){return e==null?"muted":e>=.85?"good":e>=.7?"warn":"bad"}var Rs="~ estimated from tokens \xD7 model rates",U1=e=>e!=null&&e!==""&&Number.isFinite(Number(e)),c6=e=>Math.sign(e)*Math.round(Number(Math.abs(e).toFixed(9))),xm=e=>U1(e)?`${c6(Number(e)*100)}%`:"\u2014",mo=(e,t)=>{let r=Number(t)||0;if(r<=0)return"\u2014";let n=Number(e)||0;return`${n}/${r} \xB7 ${c6(n*100/r)}%`},aa=e=>xm(e),W1=e=>`pass \u2265 ${xm(e)}`,Pr=(e,{estimated:t=!1}={})=>{if(!U1(e))return"\u2014";let r=Number(e),n=r===0?2:Math.abs(r)<.001?6:4;return`${t?"~":""}$${r.toFixed(n)}`},l6=e=>Math.round(Number(e)||0).toLocaleString("en-US"),u6=e=>{let[t,r=""]=String(Number(Number(e).toFixed(4))).split(".");return`$${t}.${r.padEnd(2,"0")}/M`},Rne=["pattern","default"],bm=({inputTokens:e,outputTokens:t,rate:r}={})=>{if(!r||!U1(r.input)||!U1(r.output))return"estimated from tokens \xD7 model rates";let n=r.source||"catalog";return`estimated: ${l6(e)} in \xD7 ${u6(r.input)} + ${l6(t)} out \xD7 ${u6(r.output)} \xB7 ${n} rate${Rne.includes(n)?" (fallback rate)":""}`};var eoe=[{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 aT({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"},eoe.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(vm,{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:oT(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?`${mo(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:xm(A.eval_score),tone:oT(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(On,{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 be=Z(J());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 d6(e,{ttlMs:t,keep:r=()=>!0,now:n=Date.now}){let o=new Map,a=i=>{let s=o.get(i);if(s&&(s.expiresAt===null||n()(o.get(i)===l&&(r(u)?l.expiresAt=n()+t:o.delete(i)),u),u=>{throw o.get(i)===l&&o.delete(i),u}),o.set(i,l),l.promise};return a.clear=()=>o.clear(),a}var wm={openai:["gpt-5.1","gpt-5","gpt-5-mini","gpt-5-nano"],anthropic:["claude-opus-5","claude-fable-5","claude-sonnet-5","claude-opus-4-8","claude-haiku-4-5"],ollama:["qwen3:8b","llama3.2","mistral","gemma3"],openrouter:["anthropic/claude-sonnet-4.5","openai/gpt-5.1","meta-llama/llama-3.3-70b-instruct"]},H1=Object.keys(wm),toe=300*1e3,p6=d6(roe,{ttlMs:toe,keep:e=>e!==null});async function f6(e){return await p6(e)??(wm[e]||[])}function iT(){p6.clear()}async function roe(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(J());function dc(e){let[t,r]=(0,q1.useState)(wm),n=e.join(",");return(0,q1.useEffect)(()=>{let o=!1;return e.forEach(a=>{f6(a).then(i=>{o||i.length===0||r(s=>({...s,[a]:i}))})}),()=>{o=!0}},[n]),t}var pc=Z(J());function Yl({value:e,models:t=[],onChange:r,className:n,style:o,placeholder:a="Type to search models",inputRef:i,...s}){let l=(0,pc.useId)();return pc.default.createElement(pc.default.Fragment,null,pc.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}),pc.default.createElement("datalist",{id:l},t.filter(Boolean).map(u=>pc.default.createElement("option",{key:u,value:u}))))}var noe=["agent_defined","dashboard","mcp"],sT={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},ooe={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},V1=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],lT=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`},Jy=(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`},aoe="sandbox:",Wd=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(aoe))),Qy=e=>Wd(e)&&!e.known,G1=e=>!!e&&!e.known&&!Wd(e);function m6(e){return Qy(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":Wd(e)?"tools are listed by the running app each time the agent runs":"no tools recorded for this service yet"}var Sm=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 K1(e,t=[]){let r=new Map;(t||[]).forEach(o=>{let a=Sm(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 g6=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function h6(e,t,{query:r="",filter:n=null}={}){let o=g6(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 y6(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(ioe(e,t).map(o=>({...o,on:!0})))}function v6(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=g6(n),s=y6(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return noe.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:sT[u],meta:`${ooe[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 x6(e,t,r,{range:n="7d"}={}){let o=y6(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 b6(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function uT(e,t=[]){let r=b6(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 cT(e=[],t=[],r=!0){let n=(e||[]).map(String);return r?n.concat(t.filter(o=>!n.includes(o))):n.filter(o=>!t.includes(o))}function w6(e=[],t,r=[]){let n=(e||[]).map(String),o=uT(t,n);if(!o)return n;let a=new Set(cT(n,b6(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 S6(e,t,r){let n=K1(e,t.mcpServers),o=K1(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 k6(e,t,r=[]){let n=new Map;(r||[]).forEach(i=>{let s=Sm(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=Sm(i);s&&!a.has(s)&&o.push(i)}),o}function _6(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 dT(e){return(e?.tools||[]).filter(t=>t.editable&&t.implemented!==!1)}var soe=["terminal","filesystem","edit","database"],Y1=(e=[])=>e.some(t=>soe.includes(t)),loe={terminal:["run_command"],filesystem:["write_file"],edit:["edit_file"],slack:["slack_post_message"]},km=(e=[])=>[...new Set(e.flatMap(t=>loe[t]||[]))];function C6(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 pT(e,t=[]){if(!e)return[...t];let r=new Set(dT(e).map(n=>n.key));return t.filter(n=>r.has(n))}var fT=(e=[],t)=>e.some(r=>Sm(r)===t);function A6(e=[],t){return fT(e,t.key)?e.filter(r=>Sm(r)!==t.key):[...e,{key:t.key,name:t.name}]}function E6(e){let t=e.workspace_agents||0;return t?`${t} agent${t===1?"":"s"}`:null}var X1=[{id:"basics",label:"Basics",icon:"1"},{id:"configure",label:"Configure",icon:"2"},{id:"review",label:"Review",icon:"3"}],Ry={...Zy,agents:{emoji:"\u{1F91D}",label:"Delegate to agents"},ask:{emoji:"\u{1F64B}",label:"Ask the user"}},uoe=["name","slug","description","provider","model"];function mT({meta:e,onSave:t,onCancel:r,isLoading:n,initialDraft:o=null}){let[a,i]=(0,be.useState)(0),[s,l]=(0,be.useState)({name:"",description:"",provider:"openai",model:wm.openai[0],instructions:"",preset_type:"terminal",instruction_sets:["github"],tools:["terminal","code"],mcp_servers:[],model_config:{temperature:.7},...o?{name:o.name,description:o.description||"",instructions:o.instructions,provider:o.provider,model:o.model,tools:o.tools||[],instruction_sets:[],mcp_servers:o.mcp_servers||[]}:{}}),u=dc([s.provider]),c=(0,be.useMemo)(()=>{let _=o?.model&&o.provider;return!_||!u[_]?u:{...u,[_]:[...new Set([o.model,...u[_]])]}},[u]),d=c[s.provider];(0,be.useEffect)(()=>{d?.length&&l(_=>d.includes(_.model)?_:{..._,model:d[0]})},[d]);let[p,f]=(0,be.useState)(null),[m,y]=(0,be.useState)(null);(0,be.useEffect)(()=>{fetch("/api/agents/tool_roster").then(_=>{if(!_.ok)throw new Error(`HTTP ${_.status}`);return _.json()}).then(_=>{f(_),l(k=>({...k,tools:pT(_,k.tools)}))}).catch(_=>y(_.message))},[]);let[x,h]=(0,be.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",_),ym[_]){let k=ym[_];g("instruction_sets",[...k.instructions]),g("tools",pT(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:km(s.tools)});_&&(h(_),Object.keys(_.fieldErrors||{}).some(k=>uoe.includes(k))&&i(0))};return be.default.createElement("div",{className:"max-w-4xl mx-auto"},o&&be.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."),be.default.createElement("div",{className:"mb-8"},be.default.createElement("div",{className:"flex items-center justify-between"},X1.map((_,k)=>be.default.createElement("div",{key:_.id,className:"flex items-center"},be.default.createElement("div",{className:`flex items-center justify-center w-10 h-10 rounded-full border-2 transition-colors ${kbe.default.createElement("li",{key:_},_)))),be.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-8"},a===0&&be.default.createElement(coe,{formData:s,updateField:g,providerModels:c,fieldErrors:x?.fieldErrors||{}}),a===1&&be.default.createElement(doe,{formData:s,meta:e,roster:p,rosterError:m,toggleArrayItem:v,updateField:g,selectPreset:b}),a===2&&be.default.createElement(poe,{formData:s,roster:p})),be.default.createElement("div",{className:"flex justify-between mt-6"},be.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"),be.default.createElement("button",{onClick:a===X1.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===X1.length-1?"Create Agent":"Continue")))}function Z1({messages:e}){return e.length?be.default.createElement("p",{className:"mt-1 text-sm text-red-600"},e.join(". ")):null}function coe({formData:e,updateField:t,providerModels:r,fieldErrors:n}){let o=(...a)=>a.flatMap(i=>n[i]||[]);return be.default.createElement("div",{className:"space-y-6"},be.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Basic Information"),be.default.createElement("p",{className:"text-gray-500"},"Give your agent a name and configure its AI provider."),be.default.createElement("div",{className:"space-y-4"},be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Agent Name *"),be.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"}),be.default.createElement(Z1,{messages:o("name","slug")})),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Description"),be.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"}),be.default.createElement(Z1,{messages:o("description")})),be.default.createElement("div",{className:"grid grid-cols-2 gap-4"},be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Provider"),be.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=>be.default.createElement("option",{key:a,value:a},a.charAt(0).toUpperCase()+a.slice(1)))),be.default.createElement(Z1,{messages:o("provider")})),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Model"),be.default.createElement(Yl,{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"}),be.default.createElement(Z1,{messages:o("model")}))),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-1"},"Temperature: ",e.model_config.temperature),be.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"}),be.default.createElement("div",{className:"flex justify-between text-xs text-gray-400"},be.default.createElement("span",null,"Precise"),be.default.createElement("span",null,"Creative")))))}function doe({formData:e,meta:t,roster:r,rosterError:n,toggleArrayItem:o,updateField:a,selectPreset:i}){let s=Object.keys(ym),l=Object.keys(Ud),u=dT(r),{callable:c,unavailable:d}=C6(r);return be.default.createElement("div",{className:"space-y-6"},be.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Configure Agent"),be.default.createElement("p",{className:"text-gray-500"},"Choose a preset or customize instructions and tools."),be.default.createElement("div",{className:"flex justify-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},be.default.createElement("div",{className:"flex flex-col items-center"},be.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(p=>{let f=Ud[p];return f?be.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})),be.default.createElement(On,{size:120}),be.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(p=>{let f=Zy[p];return f?be.default.createElement("span",{key:p,className:"text-lg",title:f.label},f.emoji):null})))),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},"Quick Presets"),be.default.createElement("div",{className:"flex flex-wrap gap-2"},s.map(p=>be.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"}`},be.default.createElement("span",{className:"capitalize"},p.replace(/([A-Z])/g," $1").trim()))))),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},be.default.createElement("strong",null,"Instructions"),be.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"System/developer messages")),be.default.createElement("div",{className:"flex flex-wrap gap-2"},l.map(p=>{let f=Ud[p];return be.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"}`},be.default.createElement("span",null,f.emoji),be.default.createElement("span",null,f.label))}))),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},be.default.createElement("strong",null,"Tools"),be.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Functions the model can call")),n&&be.default.createElement("p",{className:"text-sm text-red-600"},"Could not load the tools this workspace offers: ",n),!r&&!n&&be.default.createElement("p",{className:"text-sm text-gray-400"},"Loading tools\u2026"),be.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-tools"},u.map(p=>be.default.createElement(N6,{key:p.key,testId:`builder-tool-${p.key}`,on:e.tools.includes(p.key),onClick:()=>o("tools",p.key),emoji:Ry[p.key]?.emoji||"\u{1F9F1}",label:Ry[p.key]?.label||p.name,title:p.description||p.name}))),Y1(e.tools)&&be.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.")),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-3"},be.default.createElement("strong",null,"MCP servers"),be.default.createElement("span",{className:"text-gray-400 font-normal ml-2"},"Every tool the server serves is offered")),r&&c.length===0&&be.default.createElement("p",{className:"text-sm text-gray-500"},"No MCP server this workspace can call yet. Register one with its URL in ",be.default.createElement("code",null,"ActionAgent.mcp_catalog"),", or boot a project's checkout to offer its app runtime."),be.default.createElement("div",{className:"flex flex-wrap gap-2","data-testid":"builder-mcp-servers"},c.map(p=>be.default.createElement(N6,{key:p.key,testId:`builder-mcp-${p.key}`,on:fT(e.mcp_servers,p.key),onClick:()=>a("mcp_servers",A6(e.mcp_servers,p)),emoji:p.runtime?"\u{1F4E6}":"\u{1F50C}",label:p.name,hint:E6(p),title:[p.description,p.transport].filter(Boolean).join(" \xB7 ")}))),d.length>0&&be.default.createElement("details",{className:"mt-3 text-sm","data-testid":"builder-mcp-unavailable"},be.default.createElement("summary",{className:"cursor-pointer text-gray-500"},d.length," catalog server",d.length===1?"":"s"," a run can't call"),be.default.createElement("ul",{className:"mt-2 space-y-1"},d.map(p=>be.default.createElement("li",{key:p.key,className:"text-xs text-gray-500"},be.default.createElement("span",{className:"font-medium text-gray-700"},p.name)," \u2014 ",p.unavailable_reason))))),be.default.createElement("div",null,be.default.createElement("label",{className:"block text-sm font-medium text-gray-700 mb-2"},"System Instructions"),be.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 poe({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 be.default.createElement("div",{className:"space-y-6"},be.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Review Your Agent"),be.default.createElement("p",{className:"text-gray-500"},"Confirm the configuration before creating your agent."),be.default.createElement("div",{className:"grid grid-cols-2 gap-8"},be.default.createElement("div",{className:"flex flex-col items-center py-6 bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl"},be.default.createElement("div",{className:"flex gap-2 mb-2"},e.instruction_sets.map(n=>{let o=Ud[n];return o?be.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),be.default.createElement(On,{size:100}),be.default.createElement("div",{className:"flex gap-2 mt-2"},e.tools.map(n=>{let o=Zy[n];return o?be.default.createElement("span",{key:n,className:"text-lg",title:o.label},o.emoji):null})),be.default.createElement("h3",{className:"mt-4 text-lg font-semibold text-gray-900"},e.name),be.default.createElement("p",{className:"text-sm text-gray-500"},e.description||"No description")),be.default.createElement("div",{className:"space-y-4"},be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Provider / Model"),be.default.createElement("p",{className:"text-gray-900"},e.provider," / ",e.model)),be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Temperature"),be.default.createElement("p",{className:"text-gray-900"},e.model_config.temperature)),be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Instructions"),be.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.instruction_sets.length>0?e.instruction_sets.map(n=>{let o=Ud[n];return o?be.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-gray-100 rounded text-xs"},o.emoji," ",o.label):null}):be.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Tools"),be.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.tools.length>0?e.tools.map(n=>be.default.createElement("span",{key:n,className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},Ry[n]?`${Ry[n].emoji} ${Ry[n].label}`:n)):be.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))),km(e.tools).length>0&&be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"Waits for your approval"),be.default.createElement("p",{className:"text-gray-900 text-sm font-mono"},km(e.tools).join(", "))),be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"MCP servers"),be.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},e.mcp_servers.length>0?e.mcp_servers.map(n=>be.default.createElement("span",{key:r(n),className:"px-2 py-0.5 bg-red-100 text-red-700 rounded text-xs"},r(n))):be.default.createElement("span",{className:"text-gray-400 text-sm"},"None selected"))))),e.instructions&&be.default.createElement("div",null,be.default.createElement("span",{className:"text-sm font-medium text-gray-500"},"System Instructions"),be.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 N6({on:e,onClick:t,emoji:r,label:n,hint:o,title:a,testId:i}){return be.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"}`},be.default.createElement("span",null,r),be.default.createElement("span",null,n),o&&be.default.createElement("span",{className:`text-xs ${e?"text-red-100":"text-gray-400"}`},"\xB7 ",o))}var _e=Z(J());var Wi=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 H=Z(J());var J1=Z(J()),I6=Z(J());function T6(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=yoe(e,hoe),d=a||{width:n,height:o,x:0,y:0},p=xt("recharts-surface",i);return J1.createElement("svg",yT({},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}),J1.createElement("title",null,l),J1.createElement("desc",null,u),r)});var Q1=Z(J());var xoe=["children","className"];function vT(){return vT=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=e.children,n=e.className,o=boe(e,xoe),a=xt("recharts-layer",n);return Q1.createElement("g",vT({className:a},gn(o),{ref:t}),r)});var vi=Z(J()),CS=Z(J()),I7=Z(Qh());function R1(e){return e==="__proto__"}var Soe=/\.|(\[(?:[^[\]]*|(["'])(?:(?!\2)[^\\]|\\.)*?\2)\])/;function ew(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e===""||e.startsWith(".")||e.endsWith(".")?!1:Soe.test(e);default:return!1}}function _m(e){return typeof e=="string"||typeof e=="symbol"?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function xT(e){if(e==null)return"";if(typeof e=="string")return e;if(Array.isArray(e))return e.map(xT).join(",");let t=String(e);return t==="0"&&Object.is(Number(e),-0)?"-0":t}function Cm(e){if(Array.isArray(e))return e.map(_m);if(typeof e=="symbol")return[e];e=xT(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]:_oe,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+Hi(s)+a:o+a},"")}var Yr=e=>e===0?0:e>0?1:-1,Wo=e=>typeof e=="number"&&e!=+e,Xl=e=>typeof e=="string"&&e.length>1&&e.indexOf("%")===e.length-1,De=e=>(typeof e=="number"||e instanceof Number)&&!Wo(e),wa=e=>De(e)||typeof e=="string",Coe=0,Zl=e=>{var t=++Coe;return"".concat(e||"").concat(t)},Pn=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!De(t)&&typeof t!="string")return n;var a;if(Xl(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},bT=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",Jl=e=>ar(e)?e:"".concat(e.charAt(0).toUpperCase()).concat(e.slice(1));function _o(e){return e!=null}function Sa(){}function rv(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 D6(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 el(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=rv(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"?el({x:y+_,y:u+c/2,horizontalAnchor:A,verticalAnchor:"middle"},F):r==="insideRight"?el({x:y+x-_,y:u+c/2,horizontalAnchor:k,verticalAnchor:"middle"},F):r==="insideTop"?el({x:f+d/2,y:u+v,horizontalAnchor:"middle",verticalAnchor:S},F):r==="insideBottom"?el({x:m+p/2,y:u+c-v,horizontalAnchor:"middle",verticalAnchor:b},F):r==="insideTopLeft"?el({x:f+_,y:u+v,horizontalAnchor:A,verticalAnchor:S},F):r==="insideTopRight"?el({x:f+d-_,y:u+v,horizontalAnchor:k,verticalAnchor:S},F):r==="insideBottomLeft"?el({x:m+_,y:u+c-v,horizontalAnchor:A,verticalAnchor:b},F):r==="insideBottomRight"?el({x:m+p-_,y:u+c-v,horizontalAnchor:k,verticalAnchor:b},F):r&&typeof r=="object"&&(De(r.x)||Xl(r.x))&&(De(r.y)||Xl(r.y))?el({x:l+Pn(r.x,x),y:u+Pn(r.y,c),horizontalAnchor:"end",verticalAnchor:"end"},F):el({x:h,y:u+c/2,horizontalAnchor:"middle",verticalAnchor:"middle"},F)},Toe=["top","left","right","bottom"];function nv(e){return e==null?!1:typeof e=="object"?!0:Toe.includes(e)}var nw=Z(J()),wT=(0,nw.createContext)(null),j6=()=>(0,nw.useContext)(wT);var ka=Z(J());var ez=Z(J());function Mr(e){return function(){return e}}var ST=Math.cos;var ov=Math.sin,Ho=Math.sqrt;var Hd=Math.PI,EEe=Hd/2,Am=2*Hd;var kT=Math.PI,_T=2*kT,qd=1e-6,Ooe=_T-qd;function $6(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return $6;let r=10**t;return function(n){this._+=n[0];for(let o=1,a=n.length;oqd)if(!(Math.abs(d*l-u*c)>qd)||!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((kT-Math.acos((y+p-x)/(2*h*g)))/2),b=v/g,S=v/h;Math.abs(b-1)>qd&&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)>qd||Math.abs(this._y1-c)>qd)&&this._append`L${u},${c}`,n&&(p<0&&(p=p%_T+_T),p>Ooe?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>qd&&this._append`A${n},${n},0,${+(p>=kT)},${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 L6(){return new Kd}L6.prototype=Kd.prototype;function Em(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 Kd(t)}var jEe=Array.prototype.slice;function Nm(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function z6(e){this._context=e}z6.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 fc(e){return new z6(e)}function ow(e){return e[0]}function aw(e){return e[1]}function av(e,t){var r=Mr(!0),n=null,o=fc,a=null,i=Em(s);e=typeof e=="function"?e:e===void 0?ow:Mr(e),t=typeof t=="function"?t:t===void 0?aw:Mr(t);function s(l){var u,c=(l=Nm(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 av().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 iw=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 CT(e){return new iw(e,!0)}function AT(e){return new iw(e,!1)}var Om={draw(e,t){let r=Ho(t/Hd);e.moveTo(r,0),e.arc(0,0,r,0,Am)}};var ET={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 B6=Ho(1/3),Moe=B6*2,NT={draw(e,t){let r=Ho(t/Moe),n=r*B6;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}};var TT={draw(e,t){let r=Ho(t),n=-r/2;e.rect(n,n,r,r)}};var Ioe=.8908130915292852,F6=ov(Hd/10)/ov(7*Hd/10),Doe=ov(Am/10)*F6,joe=-ST(Am/10)*F6,OT={draw(e,t){let r=Ho(t*Ioe),n=Doe*r,o=joe*r;e.moveTo(0,-r),e.lineTo(n,o);for(let a=1;a<5;++a){let i=Am*a/5,s=ST(i),l=ov(i);e.lineTo(l*r,-s*r),e.lineTo(s*n-l*o,l*n+s*o)}e.closePath()}};var PT=Ho(3),MT={draw(e,t){let r=-Ho(t/(PT*3));e.moveTo(0,r*2),e.lineTo(-PT*r,-r),e.lineTo(PT*r,-r),e.closePath()}};var qi=-.5,Ki=Ho(3)/2,IT=1/Ho(12),$oe=(IT/2+1)*3,DT={draw(e,t){let r=Ho(t/$oe),n=r/2,o=r*IT,a=n,i=r*IT+r,s=-a,l=i;e.moveTo(n,o),e.lineTo(a,i),e.lineTo(s,l),e.lineTo(qi*n-Ki*o,Ki*n+qi*o),e.lineTo(qi*a-Ki*i,Ki*a+qi*i),e.lineTo(qi*s-Ki*l,Ki*s+qi*l),e.lineTo(qi*n+Ki*o,qi*o-Ki*n),e.lineTo(qi*a+Ki*i,qi*i-Ki*a),e.lineTo(qi*s+Ki*l,qi*l-Ki*s),e.closePath()}};function sw(e,t){let r=null,n=Em(o);e=typeof e=="function"?e:Mr(e||Om),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 Pm(){}function Mm(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 U6(e){this._context=e}U6.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:Mm(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:Mm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function jT(e){return new U6(e)}function W6(e){this._context=e}W6.prototype={areaStart:Pm,areaEnd:Pm,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:Mm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $T(e){return new W6(e)}function H6(e){this._context=e}H6.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:Mm(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function LT(e){return new H6(e)}function q6(e){this._context=e}q6.prototype={areaStart:Pm,areaEnd:Pm,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 zT(e){return new q6(e)}function K6(e){return e<0?-1:1}function V6(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(K6(a)+K6(i))*Math.min(Math.abs(a),Math.abs(i),.5*Math.abs(s))||0}function G6(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function BT(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 lw(e){this._context=e}lw.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:BT(this,this._t0,G6(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,BT(this,G6(this,r=V6(this,e,t)),r);break;default:BT(this,this._t0,r=V6(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Y6(e){this._context=new X6(e)}(Y6.prototype=Object.create(lw.prototype)).point=function(e,t){lw.prototype.point.call(this,t,e)};function X6(e){this._context=e}X6.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 FT(e){return new lw(e)}function UT(e){return new Y6(e)}function J6(e){this._context=e}J6.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=Z6(e),o=Z6(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 HT(e){return new uw(e,.5)}function qT(e){return new uw(e,0)}function KT(e){return new uw(e,1)}function fi(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 Loe(e,t){return e[t]}function zoe(e){let t=[];return t.key=e,t}function VT(){var e=Mr([]),t=Im,r=fi,n=Loe;function o(a){var i=Array.from(e.apply(this,arguments),zoe),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(Jl(e));return tz[t]||Om},Yoe=(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*Voe;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}},Xoe=(e,t)=>{tz["symbol".concat(Jl(e))]=t},JT=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=qoe(e,Foe),l=R6(R6({},s),{},{type:r,size:o,sizeType:i}),u="circle";typeof r=="string"&&(u=r);var c=()=>{var y=Goe(u),x=sw().type(y).size(Yoe(o,i,u)),h=x();if(h!==null)return h},d=l.className,p=l.cx,f=l.cy,m=gn(l);return De(p)&&De(f)&&De(o)?ez.createElement("path",ZT({},m,{className:xt("recharts-symbols",d),transform:"translate(".concat(p,", ").concat(f,")"),d:c()})):null};JT.registerSymbol=Xoe;var rz=Z(J());var cw=e=>"radius"in e&&"startAngle"in e&&"endAngle"in e,Dm=(e,t)=>{if(!e||typeof e=="function"||typeof e=="boolean")return null;var r=e;if((0,rz.isValidElement)(e)&&(r=e.props),typeof r!="object"&&typeof r!="function")return null;var n={};return Object.keys(r).forEach(o=>{ev(o)&&typeof r[o]=="function"&&(n[o]=t||(a=>r[o](r,a)))}),n},Zoe=(e,t,r)=>n=>(e(t,r,n),null),Ql=(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];ev(o)&&typeof a=="function"&&(n||(n={}),n[o]=Zoe(a,t,r))}),n};function nz(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 Joe(e){for(var t=1;t(i[s]===void 0&&n[s]!==void 0&&(i[s]=n[s]),i),r);return a}function dw(){return dw=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var f,m,y=d.formatter||o,b=xt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?T6({},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 xa.createElement("li",Y1({className:b,style:u,key:"legend-item-".concat(p)},Ql(e,d,p)),xa.createElement(Uy,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},xa.createElement(Doe,{data:d,iconType:i,inactiveColor:a})),xa.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var O6=e=>{var t=rr(e,Moe),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 xa.createElement("ul",{className:"recharts-default-legend",style:a},xa.createElement(joe,Y1({},t,{payload:r})))};function P6(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function Rl(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var Z1="[object RegExp]",Em="[object String]",Nm="[object Number]",Tm="[object Boolean]",J1="[object Arguments]",Q1="[object Symbol]",R1="[object Date]",ew="[object Map]",tw="[object Set]",rw="[object Array]",j6="[object Function]",nw="[object ArrayBuffer]",Om="[object Object]",$6="[object Error]",ow="[object DataView]",aw="[object Uint8Array]",iw="[object Uint8ClampedArray]",sw="[object Uint16Array]",lw="[object Uint32Array]",L6="[object BigUint64Array]",uw="[object Int8Array]",cw="[object Int16Array]",dw="[object Int32Array]",z6="[object BigInt64Array]",pw="[object Float32Array]",fw="[object Float64Array]";var OT=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function Yy(e){return typeof OT.Buffer<"u"&&OT.Buffer.isBuffer(e)}function B6(e,t){return gc(e,void 0,e,new Map,t)}function gc(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(Vy(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{}):PT(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:PT(o,a,n,u,!1)},new Map,!0)}function PT(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return Loe(e,t,r,n);case"function":return Object.keys(t).length>0?PT(e,{...t},r,n,o):hc(e,t);default:return mw(e)?o?typeof t=="string"?t==="":!0:hc(e,t):hc(e,t)}}function Loe(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return U6(e,t,r,n);if(t instanceof Map)return zoe(e,t,r,n);if(t instanceof Set)return Boe(e,t,r,n);let o=Object.keys(t);if(e==null||Vy(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 W6(e){return e=F6(e),t=>gw(t,e)}function H6(e,t){return B6(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(Rl(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),Vi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case Nm:case Em:case Tm:{let s=new e.constructor(e?.valueOf());return Vi(s,e),s}case J1:{let s={};return Vi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function q6(e){return H6(e)}var Foe=/^(?:0|[1-9]\d*)$/;function hw(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function yw(e){return e!=null&&typeof e!="function"&&X6(e.length)}function Z6(e){return typeof e=="object"&&e!==null}function J6(e){return Z6(e)&&yw(e)}function vw(e,t=X1){return J6(e)?P6(Array.from(e),M6(Y6(t),1)):[]}function xw(e,t,r){return t===!0?vw(e,r):typeof t=="function"?vw(e,t):e}var sz=Z(az()),Zy=Z(J());var iz=Z(J()),Xy=(0,iz.createContext)(null);var oae=e=>e,Dt=()=>{var e=(0,Zy.useContext)(Xy);return e?e.store.dispatch:oae},ww=()=>{},aae=()=>ww,iae=(e,t)=>e===t;function $e(e){var t=(0,Zy.useContext)(Xy),r=(0,Zy.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:ww,[t,e]);return(0,sz.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:aae,t?t.store.getState:ww,t?t.store.getState:ww,r,iae)}function sae(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function lae(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 lz=e=>Array.isArray(e)?e:[e];function uae(e){let t=Array.isArray(e[0])?e[0]:e;return lae(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function cae(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?dae:WeakRef,cz=pae(),fae=0,uz=1;function Sw(){return{s:fae,v:void 0,o:null,p:null}}function mae(e){return e instanceof cz?e.deref():e}function dz(e,t={}){let r=Sw(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=Sw(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function gae(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()),sae(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=dz,argsMemoizeOptions:m=[]}=c,y=lz(p),b=lz(m),h=uae(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,x=f(function(){i++;let w=cae(h,arguments);return s=g.apply(null,w),s},...b);return Object.assign(x,{resultFunc:u,memoizedResultFunc:g,dependencies:h,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>s,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:d,argsMemoize:f})};return Object.assign(n,{withTypes:()=>n}),n}var ne=gae(dz);function pz(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=fz(e),o=fz(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function kw(e){return typeof e=="symbol"||e instanceof Symbol}var hae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,yae=/^\w*$/;function gz(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||kw(e)?!0:typeof e=="string"&&(yae.test(e)||!hae.test(e))||t!=null&&Object.hasOwn(t,e)}function hz(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)||gz(s)?s:{key:s,path:ym(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 eu(e,...t){let r=t.length;return r>1&&Jy(e,t[0],t[1])?t=[]:r>2&&Jy(t[0],t[1],t[2])&&(t=[t[0]]),hz(e,pz(t),["asc"])}var DT=e=>e.legend.settings,yz=e=>e.legend.size,vae=e=>e.legend.payload,vz=ne([vae,DT],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?eu(n,r):n});function xz(){return $e(vz)}var tu=Z(J());function xae(e,t){return kae(e)||Sae(e,t)||wae(e,t)||bae()}function bae(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function wae(e,t){if(e){if(typeof e=="string")return bz(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)?bz(e,t):void 0}}function bz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r_w||Math.abs(e.left-t.left)>_w||Math.abs(e.top-t.top)>_w||Math.abs(e.width-t.width)>_w}function Sz(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function Cw(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,tu.useState)({height:0,left:0,top:0,width:0}),r=xae(t,2),n=r[0],o=r[1],a=(0,tu.useRef)(null),i=(0,tu.useRef)(n);i.current=n;var s=(0,tu.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=Sz(l);if(wz(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=Sz(l);wz(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,tu.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var zB=Z(J());function Go(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 _ae=typeof Symbol=="function"&&Symbol.observable||"@@observable",kz=_ae,jT=()=>Math.random().toString(36).substring(7).split("").join("."),Cae={INIT:`@@redux/INIT${jT()}`,REPLACE:`@@redux/REPLACE${jT()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${jT()}`},Aw=Cae;function Ew(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 $T(e,t,r){if(typeof e!="function")throw new Error(Go(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(Go(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(Go(1));return r($T)(e,t)}let n=e,o=t,a=new Map,i=a,s=0,l=!1;function u(){i===a&&(i=new Map,a.forEach((b,h)=>{i.set(h,b)}))}function c(){if(l)throw new Error(Go(3));return o}function d(b){if(typeof b!="function")throw new Error(Go(4));if(l)throw new Error(Go(5));let h=!0;u();let g=s++;return i.set(g,b),function(){if(h){if(l)throw new Error(Go(6));h=!1,u(),i.delete(g),a=null}}}function p(b){if(!Ew(b))throw new Error(Go(7));if(typeof b.type>"u")throw new Error(Go(8));if(typeof b.type!="string")throw new Error(Go(17));if(l)throw new Error(Go(9));try{l=!0,o=n(o,b)}finally{l=!1}return(a=i).forEach(g=>{g()}),b}function f(b){if(typeof b!="function")throw new Error(Go(10));n=b,p({type:Aw.REPLACE})}function m(){let b=d;return{subscribe(h){if(typeof h!="object"||h===null)throw new Error(Go(11));function g(){let x=h;x.next&&x.next(c())}return g(),{unsubscribe:b(g)}},[kz](){return this}}}return p({type:Aw.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[kz]:m}}function Aae(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:Aw.INIT})>"u")throw new Error(Go(12));if(typeof r(void 0,{type:Aw.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Go(13))})}function Nw(e){let t=Object.keys(e),r={};for(let i=0;i"u"){let b=l&&l.type;throw new Error(Go(14))}c[p]=y,u=u||y!==m}return u=u||n.length!==Object.keys(s).length,u?c:s}}function Qy(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function _z(...e){return t=>(r,n)=>{let o=t(r,n),a=()=>{throw new Error(Go(15))},i={getState:o.getState,dispatch:(l,...u)=>a(l,...u)},s=e.map(l=>l(i));return a=Qy(...s)(o.dispatch),{...o,dispatch:a}}}function LT(e){return Ew(e)&&"type"in e&&typeof e.type=="string"}var Iz=Symbol.for("immer-nothing"),Cz=Symbol.for("immer-draftable"),ta=Symbol.for("immer-state");function ks(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var fi=Object,Im=fi.getPrototypeOf,Mw="constructor",zw="prototype",UT="configurable",Iw="enumerable",Ow="writable",Ry="value",tl=e=>!!e&&!!e[ta];function mi(e){return e?Dz(e)||Fw(e)||!!e[Cz]||!!e[Mw]?.[Cz]||Uw(e)||Ww(e):!1}var Eae=fi[zw][Mw].toString(),Az=new WeakMap;function Dz(e){if(!e||!XT(e))return!1;let t=Im(e);if(t===null||t===fi[zw])return!0;let r=fi.hasOwnProperty.call(t,Mw)&&t[Mw];if(r===Object)return!0;if(!Mm(r))return!1;let n=Az.get(r);return n===void 0&&(n=Function.toString.call(r),Az.set(r,n)),n===Eae}function Bw(e,t,r=!0){rv(e)===0?(r?Reflect.ownKeys(e):fi.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function rv(e){let t=e[ta];return t?t.type_:Fw(e)?1:Uw(e)?2:Ww(e)?3:0}var zT=(e,t,r=rv(e))=>r===2?e.has(t):fi[zw].hasOwnProperty.call(e,t),WT=(e,t,r=rv(e))=>r===2?e.get(t):e[t],Dw=(e,t,r,n=rv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function Nae(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var Fw=Array.isArray,Uw=e=>e instanceof Map,Ww=e=>e instanceof Set,XT=e=>typeof e=="object",Mm=e=>typeof e=="function",BT=e=>typeof e=="boolean";function Tae(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var ru=e=>e.copy_||e.base_;var ZT=e=>e.modified_?e.copy_:e.base_;function HT(e,t){if(Uw(e))return new Map(e);if(Ww(e))return new Set(e);if(Fw(e))return Array[zw].slice.call(e);let r=Dz(e);if(t===!0||t==="class_only"&&!r){let n=fi.getOwnPropertyDescriptors(e);delete n[ta];let o=Reflect.ownKeys(n);for(let a=0;a1&&fi.defineProperties(e,{set:Tw,add:Tw,clear:Tw,delete:Tw}),fi.freeze(e),t&&Bw(e,(r,n)=>{JT(n,!0)},!1)),e}function Oae(){ks(2)}var Tw={[Ry]:Oae};function Hw(e){return e===null||!XT(e)?!0:fi.isFrozen(e)}var jw="MapSet",qT="Patches",Ez="ArrayMethods",jz={};function Bd(e){let t=jz[e];return t||ks(0,e),t}var Nz=e=>!!jz[e];var ev,$z=()=>ev,Pae=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Nz(jw)?Bd(jw):void 0,arrayMethodsPlugin_:Nz(Ez)?Bd(Ez):void 0});function Tz(e,t){t&&(e.patchPlugin_=Bd(qT),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function KT(e){VT(e),e.drafts_.forEach(Mae),e.drafts_=null}function VT(e){e===ev&&(ev=e.parent_)}var Oz=e=>ev=Pae(ev,e);function Mae(e){let t=e[ta];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Pz(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ta].modified_&&(KT(t),ks(4)),mi(e)&&(e=Mz(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ta].base_,e,t)}else e=Mz(t,r);return Iae(t,e,!0),KT(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Iz?e:void 0}function Mz(e,t){if(Hw(t))return t;let r=t[ta];if(!r)return $w(t,e.handledSet_,e);if(!qw(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);Bz(r,e)}return r.copy_}function Iae(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&JT(t,r)}function Lz(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var qw=(e,t)=>e.scope_===t,Dae=[];function zz(e,t,r,n){let o=ru(e),a=e.type_;if(n!==void 0&&WT(o,n,a)===t){Dw(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;Bw(o,(l,u)=>{if(tl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??Dae;for(let s of i)Dw(o,s,r,a)}function jae(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!qw(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=ZT(a);zz(e,a.draft_??a,i,r),Bz(a,o)})}function Bz(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)}Lz(e)}}function $ae(e,t,r){let{scope_:n}=e;if(tl(r)){let o=r[ta];qw(o,n)&&o.callbacks_.push(function(){Pw(e);let i=ZT(o);zz(e,r,i,t)})}else mi(r)&&e.callbacks_.push(function(){let a=ru(e);e.type_===3?a.has(r)&&$w(r,n.handledSet_,n):WT(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&$w(WT(e.copy_,t,e.type_),n.handledSet_,n)})}function $w(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||tl(e)||t.has(e)||!mi(e)||Hw(e)||(t.add(e),Bw(e,(n,o)=>{if(tl(o)){let a=o[ta];if(qw(a,r)){let i=ZT(a);Dw(e,n,i,e.type_),Lz(a)}}else mi(o)&&$w(o,t,r)})),e}function Lae(e,t){let r=Fw(e),n={type_:r?1:0,scope_:t?t.scope_:$z(),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=Lw;r&&(o=[n],a=tv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var Lw={get(e,t){if(t===ta)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=ru(e);if(!zT(o,t,e.type_))return Bae(e,o,t);let a=o[t];if(e.finalized_||!mi(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&Tae(t))return a;if(a===FT(e.base_,t)||zae(e,t,a)){Pw(e);let i=e.type_===1?+t:t,s=YT(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in ru(e)},ownKeys(e){return Reflect.ownKeys(ru(e))},set(e,t,r){let n=Fz(ru(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=FT(ru(e),t),a=o?.[ta];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(Nae(r,o)&&(r!==void 0||zT(e.base_,t,e.type_)))return!0;Pw(e),GT(e)}return e.copy_[t]===r&&(r!==void 0||zT(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),$ae(e,t,r)),!0},deleteProperty(e,t){return Pw(e),FT(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),GT(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=ru(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[Ow]:!0,[UT]:e.type_!==1||t!=="length",[Iw]:n[Iw],[Ry]:r[t]}},defineProperty(){ks(11)},getPrototypeOf(e){return Im(e.base_)},setPrototypeOf(){ks(12)}},tv={};for(let e in Lw){let t=Lw[e];tv[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}tv.deleteProperty=function(e,t){return tv.set.call(this,e,t,void 0)};tv.set=function(e,t,r){return Lw.set.call(this,e[0],t,r,e[0])};function FT(e,t){let r=e[ta];return(r?ru(r):e)[t]}function zae(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!mi(r)||r[ta]?!1:e.baseRefs_.has(r)}function Bae(e,t,r){let n=Fz(t,r);return n?Ry in n?n[Ry]:n.get?.call(e.draft_):void 0}function Fz(e,t){if(!(t in e))return;let r=Im(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Im(r)}}function GT(e){e.modified_||(e.modified_=!0,e.parent_&>(e.parent_))}function Pw(e){e.copy_||(e.assigned_=new Map,e.copy_=HT(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Fae=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Mm(t)&&!Mm(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Mm(r)||ks(6),n!==void 0&&!Mm(n)&&ks(7);let o;if(mi(t)){let a=Oz(this),i=YT(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?KT(a):VT(a)}return Tz(a,n),Pz(o,a)}else if(!t||!XT(t)){if(o=r(t),o===void 0&&(o=t),o===Iz&&(o=void 0),this.autoFreeze_&&JT(o,!0),n){let a=[],i=[];Bd(qT).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else ks(1,t)},this.produceWithPatches=(t,r)=>{if(Mm(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]},BT(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),BT(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),BT(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){mi(e)||ks(8),tl(e)&&(e=Yo(e));let t=Oz(this),r=YT(t,e,void 0);return r[ta].isManual_=!0,VT(t),r}finishDraft(e,t){let r=e&&e[ta];(!r||!r.isManual_)&&ks(9);let{scope_:n}=r;return Tz(n,t),Pz(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=Bd(qT).applyPatches_;return tl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function YT(e,t,r,n){let[o,a]=Uw(t)?Bd(jw).proxyMap_(t,r):Ww(t)?Bd(jw).proxySet_(t,r):Lae(t,r);return(r?.scope_??$z()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?jae(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 Yo(e){return tl(e)||ks(10,e),Uz(e)}function Uz(e){if(!mi(e)||Hw(e))return e;let t=e[ta],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=HT(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=HT(e,!0);return Bw(r,(o,a)=>{Dw(r,o,Uz(a))},n),t&&(t.finalized_=!1),r}var Uae=new Fae,QT=Uae.produce;var Xt=e=>e;function Wz(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var Hz=Wz(),qz=Wz;var Wae=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Qy:Qy.apply(null,arguments)},gPe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},Hae=e=>e&&typeof e.match=="function";function uo(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(gi(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=>LT(n)&&n.type===e,r}var Qz=class nv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,nv.prototype)}static get[Symbol.species](){return nv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new nv(...t[0].concat(this)):new nv(...t.concat(this))}};function Kz(e){return mi(e)?QT(e,()=>{}):e}function Kw(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function qae(e){return typeof e=="boolean"}var Kae=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new Qz;return r&&(qae(r)?i.push(Hz):i.push(qz(r.extraArgument))),i},Rz="RTK_autoBatch",Mr=()=>e=>({payload:e,meta:{[Rz]:!0}}),Vz=e=>t=>{setTimeout(t,e)},Vae=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},rO=(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?Vae(window.requestAnimationFrame,100):Vz(10):e.type==="callback"?e.queueNotification:Vz(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?.[Rz],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},Gae=e=>function(r){let{autoBatch:n=!0}=r??{},o=new Qz(e);return n&&o.push(rO(typeof n=="object"?n:void 0)),o};function eB(e){let t=Kae(),{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(Ew(r))l=Nw(r);else throw new Error(gi(1));let u;typeof n=="function"?u=n(t):u=t();let c=Qy;o&&(c=Wae({trace:!1,...typeof o=="object"&&o}));let d=_z(...u),p=Gae(d),f=typeof s=="function"?s(p):p(),m=c(...f);return $T(l,i,m)}function tB(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(gi(28));if(s in t)throw new Error(gi(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 Yae(e){return typeof e=="function"}function Xae(e,t){let[r,n,o]=tB(t),a;if(Yae(e))a=()=>Kz(e());else{let s=Kz(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(tl(c)){let f=d(c,l);return f===void 0?c:f}else{if(mi(c))return QT(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 Zae=(e,t)=>Hae(e)?e.match(t):e(t);function Jae(...e){return t=>e.some(r=>Zae(r,t))}var Qae="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",rB=(e=21)=>{let t="",r=e;for(;r--;)t+=Qae[Math.random()*64|0];return t},Rae=["name","message","stack","code"],RT=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},Gz=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},eie=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Rae)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},Yz="External signal was aborted",tie=(()=>{function e(t,r,n){let o=uo(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=uo(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=uo(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||eie)(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):rB(),m=new AbortController,y,b;function h(v){b=v,m.abort()}u&&(u.aborted?h(Yz):u.addEventListener("abort",()=>h(Yz),{once:!0}));let g=(async function(){let v;try{let S=n?.condition?.(l,{getState:d,extra:p});if(nie(S)&&(S=await S),S===!1||m.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};let w=new Promise((A,k)=>{y=()=>{k({name:"AbortError",message:b||"Aborted"})},m.signal.addEventListener("abort",y,{once:!0})});c(a(f,l,n?.getPendingMeta?.({requestId:f,arg:l},{getState:d,extra:p}))),v=await Promise.race([w,Promise.resolve(r(l,{dispatch:c,getState:d,extra:p,requestId:f,signal:m.signal,abort:h,rejectWithValue:((A,k)=>new RT(A,k)),fulfillWithValue:((A,k)=>new Gz(A,k))})).then(A=>{if(A instanceof RT)throw A;return A instanceof Gz?o(A.payload,f,l,A.meta):o(A,f,l)})])}catch(S){v=S instanceof RT?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(rie)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:Jae(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function rie(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function nie(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var nB=Symbol.for("rtk-slice-createasyncthunk"),yPe={[nB]:tie};function oie(e,t){return`${e}/${t}`}function aie({creators:e}={}){let t=e?.asyncThunk?.[nB];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(gi(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(sie()):n.reducers)||{},s=Object.keys(i),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},u={addCase(v,x){let S=typeof v=="string"?v:v.type;if(!S)throw new Error(gi(12));if(S in l.sliceCaseReducersByType)throw new Error(gi(13));return l.sliceCaseReducersByType[S]=x,u},addMatcher(v,x){return l.sliceMatchers.push({matcher:v,reducer:x}),u},exposeAction(v,x){return l.actionCreators[v]=x,u},exposeCaseReducer(v,x){return l.sliceCaseReducersByName[v]=x,u}};s.forEach(v=>{let x=i[v],S={reducerName:v,type:oie(o,v),createNotation:typeof n.reducers=="function"};uie(x)?die(S,x,u,t):lie(S,x,u)});function c(){let[v={},x=[],S=void 0]=typeof n.extraReducers=="function"?tB(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return Xae(n.initialState,A=>{for(let k in w)A.addCase(k,w[k]);for(let k of l.sliceMatchers)A.addMatcher(k.matcher,k.reducer);for(let k of x)A.addMatcher(k.matcher,k.reducer);S&&A.addDefaultCase(S)})}let d=v=>v,p=new Map,f=new WeakMap,m;function y(v,x){return m||(m=c()),m(v,x)}function b(){return m||(m=c()),m.getInitialState()}function h(v,x=!1){function S(A){let k=A[v];return typeof k>"u"&&x&&(k=Kw(f,S,b)),k}function w(A=d){let k=Kw(p,x,()=>new WeakMap);return Kw(k,A,()=>{let _={};for(let[C,E]of Object.entries(n.selectors??{}))_[C]=iie(E,A,()=>Kw(f,A,b),x);return _})}return{reducerPath:v,getSelectors:w,get selectors(){return w(S)},selectSlice:S}}let g={name:o,reducer:y,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:b,...h(a),injectInto(v,{reducerPath:x,...S}={}){let w=x??a;return v.inject({reducerPath:w,reducer:y},S),{...g,...h(w,!0)}}};return g}}function iie(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 _r=aie();function sie(){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 lie({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!cie(n))throw new Error(gi(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?uo(e,i):uo(e))}function uie(e){return e._reducerDefinitionType==="asyncThunk"}function cie(e){return e._reducerDefinitionType==="reducerWithPrepare"}function die({type:e,reducerName:t},r,n,o){if(!o)throw new Error(gi(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||Vw,pending:s||Vw,rejected:l||Vw,settled:u||Vw})}function Vw(){}var pie="task",oB="listener",aB="completed",nO="cancelled",fie=`task-${nO}`,mie=`task-${aB}`,eO=`${oB}-${nO}`,gie=`${oB}-${aB}`,Xw=class{constructor(e){this.code=e,this.message=`${pie} ${nO} (reason: ${e})`}code;name="TaskAbortError";message},oO=(e,t)=>{if(typeof e!="function")throw new TypeError(gi(32))},Gw=()=>{},iB=(e,t=Gw)=>(e.catch(t),e),sB=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Fd=e=>{if(e.aborted)throw new Xw(e.reason)};function lB(e,t){let r=Gw;return new Promise((n,o)=>{let a=()=>o(new Xw(e.reason));if(e.aborted){a();return}r=sB(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=Gw})}var hie=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof Xw?"cancelled":"rejected",error:r}}finally{t?.()}},Yw=e=>t=>iB(lB(e,t).then(r=>(Fd(e),r))),uB=e=>{let t=Yw(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:Dm}=Object,Xz={},Zw="listenerMiddleware",yie=(e,t)=>{let r=n=>sB(e,()=>n.abort(e.reason));return(n,o)=>{oO(n,"taskExecutor");let a=new AbortController;r(a);let i=hie(async()=>{Fd(e),Fd(a.signal);let s=await n({pause:Yw(a.signal),delay:uB(a.signal),signal:a.signal});return Fd(a.signal),s},()=>a.abort(mie));return o?.autoJoin&&t.push(i.catch(Gw)),{result:Yw(e)(i),cancel(){a.abort(fie)}}}},vie=(e,t)=>{let r=async(n,o)=>{Fd(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 lB(t,Promise.race(s));return Fd(t),l}finally{a()}};return((n,o)=>iB(r(n,o)))},cB=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=uo(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(gi(21));return oO(a,"options.listener"),{predicate:o,type:t,effect:a}},dB=Dm(e=>{let{type:t,predicate:r,effect:n}=cB(e);return{id:rB(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(gi(22))}}},{withTypes:()=>dB}),Zz=(e,t)=>{let{type:r,effect:n,predicate:o}=cB(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},tO=e=>{e.pending.forEach(t=>{t.abort(eO)})},xie=(e,t)=>()=>{for(let r of t.keys())tO(r);e.clear()},Jz=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},pB=Dm(uo(`${Zw}/add`),{withTypes:()=>pB}),bie=uo(`${Zw}/removeAll`),fB=Dm(uo(`${Zw}/remove`),{withTypes:()=>fB}),wie=(...e)=>{console.error(`${Zw}/error`,...e)},nu=(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=wie}=e;oO(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&tO(f)}),l=(f=>{let m=Zz(t,f)??dB(f);return s(m)});Dm(l,{withTypes:()=>l});let u=f=>{let m=Zz(t,f);return m&&(m.unsubscribe(),f.cancelActive&&tO(m)),!!m};Dm(u,{withTypes:()=>u});let c=async(f,m,y,b)=>{let h=new AbortController,g=vie(l,h.signal),v=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,Dm({},y,{getOriginalState:b,condition:(x,S)=>g(x,S).then(Boolean),take:g,delay:uB(h.signal),pause:Yw(h.signal),extra:a,signal:h.signal,fork:yie(h.signal,v),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((x,S,w)=>{x!==h&&(x.abort(eO),w.delete(x))})},cancel:()=>{h.abort(eO),f.pending.delete(h)},throwIfCancelled:()=>{Fd(h.signal)}})))}catch(x){x instanceof Xw||Jz(i,x,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(gie),o(f),f.pending.delete(h)}},d=xie(t,r);return{middleware:f=>m=>y=>{if(!LT(y))return m(y);if(pB.match(y))return l(y.payload);if(bie.match(y)){d();return}if(fB.match(y))return u(y.payload);let b=f.getState(),h=()=>{if(b===Xz)throw new Error(gi(23));return b},g;try{if(g=m(y),t.size>0){let v=f.getState(),x=Array.from(t.values());for(let S of x){let w=!1;try{w=S.predicate(y,v,b)}catch(A){w=!1,Jz(i,A,{raisedBy:"predicate"})}w&&c(S,y,f,h)}}}finally{b=Xz}return g},startListening:l,stopListening:u,clearListeners:d}};function gi(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 Sie={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},mB=_r({name:"chartLayout",initialState:Sie,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}}}),Jw=mB.actions,aO=Jw.setMargin,gB=Jw.setLayout,hB=Jw.setChartSize,yB=Jw.setScale;var vB=mB.reducer;function Qw(e,t,r){return Array.isArray(e)&&e&&t+r!==0?e.slice(t,r+1):e}function Tt(e){return Number.isFinite(e)}function La(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function xB(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 za(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(Hy(l)){if(l==="top"&&De(e.top))return za(za({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&De(e.bottom))return za(za({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&De(e.left))return za(za({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&De(e.right))return za(za({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&De(e[a]))return za(za({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&De(e[i]))return za(za({},e),{},{[i]:e[i]+(o||0)})}return e},ra=(e,t)=>e==="horizontal"&&t==="xAxis"||e==="vertical"&&t==="yAxis"||e==="centric"&&t==="angleAxis"||e==="radial"&&t==="radiusAxis",iO=(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},sO=(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?Vr(a[0]-a[1])*2*y:y,t&&(d||p)){var b=(d||p||[]).map((h,g)=>{var v=n?n.indexOf(h):h,x=i.map(v);return Tt(x)?{coordinate:x+y,value:h,offset:y,index:g}:null}).filter(bo);return b}return l&&u?u.map((h,g)=>{var v=i.map(h);return Tt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(bo):i.ticks&&!r&&c!=null?i.ticks(c).map((h,g)=>{var v=i.map(h);return Tt(v)?{coordinate:v+y,value:h,index:g,offset:y}:null}).filter(bo):i.domain().map((h,g)=>{var v=i.map(h);return Tt(v)?{coordinate:v+y,value:n?n[h]:h,index:g,offset:y}:null}).filter(bo)},wB=(e,t)=>{if(!t||t.length!==2||!De(t[0])||!De(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(!De(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)}}}},Eie=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)}}}},Nie={sign:Aie,expand:CT,none:pi,silhouette:AT,wiggle:ET,positive:Eie},SB=(e,t,r)=>{var n,o=(n=Nie[r])!==null&&n!==void 0?n:pi,a=_T().keys(t).value((s,l)=>Number(Ut(s,l,0))).order(Cm).offset(o),i=a(e);return i.forEach((s,l)=>{s.forEach((u,c)=>{var d=Ut(e[c],t[l],0);Array.isArray(d)&&d.length===2&&De(d[0])&&De(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function Rw(e){return e==null?void 0:String(e)}function jm(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&&!or(o[t.dataKey])){var s=z1(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=Ut(o,or(i)?t.dataKey:i),u=t.scale.map(l);return De(u)?u:null}var lO=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=Ut(a,t.dataKey,t.scale.domain()[i]);if(or(s))return null;var l=t.scale.map(s);return De(l)?l-o/2+n:null},kB=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]},Tie=e=>{var t=e.flat(2).filter(De);return[Math.min(...t),Math.max(...t)]},Oie=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],_B=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return Oie(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=Qw(u,t,r),d=Tie(c);return!Tt(d[0])||!Tt(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]))},uO=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,cO=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Gi=(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=eu(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 dO(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return za(za({},t),{},{dataKey:r,payload:n,value:o,name:a})}function hi(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var CB=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},AB=(e,t)=>t==="centric"?e.angle:e.radius;var Lo=e=>e.layout.width,zo=e=>e.layout.height,EB=e=>e.layout.scale,$m=e=>e.layout.margin;var Lm=ne(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),zm=ne(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var eS="data-recharts-item-index",tS="data-recharts-item-id",Ud=60,ov=30;function NB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function rS(e){for(var t=1;te.brush.height;function jie(e){var t=zm(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Ud;return r+o}return r},0)}function $ie(e){var t=zm(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Ud;return r+o}return r},0)}function Lie(e){var t=Lm(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:ov;return r+o}return r},0)}function zie(e){var t=Lm(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:ov;return r+o}return r},0)}var Br=ne([Lo,zo,$m,Die,jie,$ie,Lie,zie,DT,yz],(e,t,r,n,o,a,i,s,l,u)=>{var c={left:(r.left||0)+o,right:(r.right||0)+a},d={top:(r.top||0)+i,bottom:(r.bottom||0)+s},p=rS(rS({},d),c),f=p.bottom;p.bottom+=n,p=bB(p,l,u);var m=e-p.left-p.right,y=t-p.top-p.bottom;return rS(rS({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(y,0)})}),nS=ne(Br,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Bm=ne(Lo,zo,(e,t)=>({x:0,y:0,width:e,height:t}));var Bie=Z(J()),oS=Z(J()),Fie=(0,oS.createContext)(null),Cr=()=>(0,oS.useContext)(Fie)!=null;var Fm=e=>e.brush,Wd=ne([Fm,Br,$m],(e,t,r)=>({height:e.height,x:De(e.x)?e.x:t.left,y:De(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:De(e.width)?e.width:t.width}));var Hd=Z(J()),co=Z(J());function TB(e,t,{signal:r,edges:n}={}){let o,a=null,i=n!=null&&n.includes("leading"),s=n==null||n.includes("trailing"),l=()=>{a!==null&&(e.apply(o,a),o=void 0,a=null)},u=()=>{s&&l(),f()},c=null,d=()=>{c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},t)},p=()=>{c!==null&&(clearTimeout(c),c=null)},f=()=>{p(),o=void 0,a=null},m=()=>{l()},y=function(...b){if(r?.aborted)return;o=this,a=b;let h=c==null;d(),i&&h&&l()};return y.schedule=d,y.cancel=f,y.flush=m,r?.addEventListener("abort",f,{once:!0}),y}function OB(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=TB(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 pO(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return OB(e,t,{leading:n,maxWait:t,trailing:o})}var Uie=!0,Um=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var _s={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},fO=(e,t,r)=>{var n=r.width,o=n===void 0?_s.width:n,a=r.height,i=a===void 0?_s.height:a,s=r.aspect,l=r.maxHeight,u=Xl(o)?e:Number(o),c=Xl(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}},Wie={width:0,height:0,overflow:"visible"},Hie={width:0,overflowX:"visible"},qie={height:0,overflowY:"visible"},Kie={},PB=e=>{var t=e.width,r=e.height,n=Xl(t),o=Xl(r);return n&&o?Wie:n?Hie:o?qie:Kie};function MB(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=_s.width,a=_s.height):o===void 0?o=n&&n>0?void 0:_s.width:a===void 0&&(a=n&&n>0?void 0:_s.height),{width:o,height:a}}var Vie=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function aS(){return aS=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 nse(o)?Hd.createElement($B.Provider,{value:o},t):null}var av=()=>(0,co.useContext)($B),ose=(0,co.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?_s.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?_s.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?_s.debounce:p,m=e.id,y=e.className,b=e.onResize,h=e.style,g=h===void 0?{}:h,v=tse(e,Vie),x=(0,co.useRef)(null),S=(0,co.useRef)();S.current=b,(0,co.useImperativeHandle)(t,()=>x.current);var w=(0,co.useState)({containerWidth:o.width,containerHeight:o.height}),A=Zie(w,2),k=A[0],_=A[1],C=(0,co.useCallback)((N,O)=>{_(D=>{var T=Math.round(N),I=Math.round(O);return D.containerWidth===T&&D.containerHeight===I?D:{containerWidth:T,containerHeight:I}})},[]);(0,co.useEffect)(()=>{if(x.current==null||typeof ResizeObserver>"u")return va;var N=P=>{var H,G=P[0];if(G!=null){var L=G.contentRect,Y=L.width,W=L.height;C(Y,W),(H=S.current)===null||H===void 0||H.call(S,Y,W)}};f>0&&(N=pO(N,f,{trailing:!0,leading:!1}));var O=new ResizeObserver(N),D=x.current.getBoundingClientRect(),T=D.width,I=D.height;return C(T,I),O.observe(x.current),()=>{O.disconnect()}},[C,f]);var E=k.containerWidth,j=k.containerHeight;Um(!r||r>0,"The aspect(%s) must be greater than zero.",r);var X=fO(E,j,{width:a,height:i,aspect:r,maxHeight:c}),z=X.calculatedWidth,U=X.calculatedHeight;return Um(E<0||j<0||z!=null&&z>0||U!=null&&U>0,`The width(%s) and height(%s) of chart should be greater than 0, + H`).concat(Vi,"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(Vi/8,"h").concat(Vi,"v").concat(Vi*3/4,"h").concat(-Vi,"z"),className:"recharts-legend-icon"});if(ka.isValidElement(t.legendIcon)){var u=az({},t);return delete u.legendIcon,ka.cloneElement(t.legendIcon,u)}return ka.createElement(JT,{fill:s,cx:o,cy:o,size:Vi,sizeType:"diameter",type:l})}function sae(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:Vi,height:Vi},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=xt({"recharts-legend-item":!0,["legend-item-".concat(p)]:!0,inactive:d.inactive});if(d.type==="none")return null;var h=typeof s=="object"?az({},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",dw({className:x,style:u,key:"legend-item-".concat(p)},Ql(e,d,p)),ka.createElement(tv,{width:r,height:r,viewBox:l,style:c,"aria-label":d.value==null?"legend icon":"".concat(d.value," legend icon")},ka.createElement(iae,{data:d,iconType:i,inactiveColor:a})),ka.createElement("span",{className:"recharts-legend-item-text",style:h},g))})}var iz=e=>{var t=nr(e,oae),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(sae,dw({},t,{payload:r})))};function sz(e,t){let r=new Map;for(let n=0;nObject.prototype.propertyIsEnumerable.call(e,t))}function Rl(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var fw="[object RegExp]",jm="[object String]",$m="[object Number]",Lm="[object Boolean]",mw="[object Arguments]",gw="[object Symbol]",hw="[object Date]",yw="[object Map]",vw="[object Set]",xw="[object Array]",dz="[object Function]",bw="[object ArrayBuffer]",zm="[object Object]",pz="[object Error]",ww="[object DataView]",Sw="[object Uint8Array]",kw="[object Uint8ClampedArray]",_w="[object Uint16Array]",Cw="[object Uint32Array]",fz="[object BigUint64Array]",Aw="[object Int8Array]",Ew="[object Int16Array]",Nw="[object Int32Array]",mz="[object BigInt64Array]",Tw="[object Float32Array]",Ow="[object Float64Array]";var QT=typeof globalThis=="object"&&globalThis||typeof window=="object"&&window||typeof self=="object"&&self||typeof global=="object"&&global||(function(){return this})();function lv(e){return typeof QT.Buffer<"u"&&QT.Buffer.isBuffer(e)}function gz(e,t){return mc(e,void 0,e,new Map,t)}function mc(e,t,r,n=new Map,o=void 0){let a=o?.(e,t,r,n);if(a!==void 0)return a;if(iv(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{}):RT(e,t,function n(o,a,i,s,l,u){let c=r(o,a,i,s,l,u);return c!==void 0?!!c:RT(o,a,n,u,!1)},new Map,!0)}function RT(e,t,r,n,o=!1){if(t===e)return!0;switch(typeof t){case"object":return uae(e,t,r,n);case"function":return Object.keys(t).length>0?RT(e,{...t},r,n,o):gc(e,t);default:return Pw(e)?o?typeof t=="string"?t==="":!0:gc(e,t):gc(e,t)}}function uae(e,t,r,n){if(t==null)return!0;if(Array.isArray(t))return yz(e,t,r,n);if(t instanceof Map)return cae(e,t,r,n);if(t instanceof Set)return dae(e,t,r,n);let o=Object.keys(t);if(e==null||iv(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 vz(e){return e=hz(e),t=>Mw(t,e)}function xz(e,t){return gz(e,(r,n,o,a)=>{let i=t?.(r,n,o,a);if(i!==void 0)return i;if(typeof e=="object"){if(Rl(e)==="[object Object]"&&typeof e.constructor!="function"){let s={};return a.set(e,s),Gi(s,e,o,a),s}switch(Object.prototype.toString.call(e)){case $m:case jm:case Lm:{let s=new e.constructor(e?.valueOf());return Gi(s,e),s}case mw:{let s={};return Gi(s,e),s.length=e.length,s[Symbol.iterator]=e[Symbol.iterator],s}default:return}}})}function bz(e){return xz(e)}var pae=/^(?:0|[1-9]\d*)$/;function Iw(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&e=0}function Dw(e){return e!=null&&typeof e!="function"&&Cz(e.length)}function Az(e){return typeof e=="object"&&e!==null}function Ez(e){return Az(e)&&Dw(e)}function jw(e,t=pw){return Ez(e)?sz(Array.from(e),lz(_z(t),1)):[]}function $w(e,t,r){return t===!0?jw(e,r):typeof t=="function"?jw(e,t):e}var Lz=Z(jz()),cv=Z(J());var $z=Z(J()),uv=(0,$z.createContext)(null);var Oae=e=>e,Dt=()=>{var e=(0,cv.useContext)(uv);return e?e.store.dispatch:Oae},zw=()=>{},Pae=()=>zw,Mae=(e,t)=>e===t;function $e(e){var t=(0,cv.useContext)(uv),r=(0,cv.useMemo)(()=>t?n=>{if(n!=null)return e(n)}:zw,[t,e]);return(0,Lz.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Pae,t?t.store.getState:zw,t?t.store.getState:zw,r,Mae)}function Iae(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function Dae(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 zz=e=>Array.isArray(e)?e:[e];function jae(e){let t=Array.isArray(e[0])?e[0]:e;return Dae(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function $ae(e,t){let r=[],{length:n}=e;for(let o=0;otypeof WeakRef>"u"?Lae:WeakRef,Fz=zae(),Bae=0,Bz=1;function Bw(){return{s:Bae,v:void 0,o:null,p:null}}function Fae(e){return e instanceof Fz?e.deref():e}function Uz(e,t={}){let r=Bw(),{resultEqualityCheck:n}=t,o,a=0;function i(){let s=r,{length:l}=arguments;for(let d=0,p=l;d{r=Bw(),i.resetResultsCount()},i.resultsCount=()=>a,i.resetResultsCount=()=>{a=0},i}function Uae(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()),Iae(u,`createSelector expects an output function after the inputs, but received: [${typeof u}]`);let c={...r,...l},{memoize:d,memoizeOptions:p=[],argsMemoize:f=Uz,argsMemoizeOptions:m=[]}=c,y=zz(p),x=zz(m),h=jae(o),g=d(function(){return a++,u.apply(null,arguments)},...y),v=!0,b=f(function(){i++;let w=$ae(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=Uae(Uz);function Wz(e,t=1){let r=[],n=Math.floor(t),o=(a,i)=>{for(let s=0;s{if(e!==t){let n=Hz(e),o=Hz(t);if(n===o&&n===0){if(et)return r==="desc"?-1:1}return r==="desc"?o-n:n-o}return 0};function Fw(e){return typeof e=="symbol"||e instanceof Symbol}var Wae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Hae=/^\w*$/;function Kz(e,t){return Array.isArray(e)?!1:typeof e=="number"||typeof e=="boolean"||e==null||Fw(e)?!0:typeof e=="string"&&(Hae.test(e)||!Wae.test(e))||t!=null&&Object.hasOwn(t,e)}function Vz(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)||Kz(s)?s:{key:s,path:Cm(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 eu(e,...t){let r=t.length;return r>1&&dv(e,t[0],t[1])?t=[]:r>2&&dv(t[0],t[1],t[2])&&(t=[t[0]]),Vz(e,Wz(t),["asc"])}var rO=e=>e.legend.settings,Gz=e=>e.legend.size,qae=e=>e.legend.payload,Yz=ae([qae,rO],(e,t)=>{var r=t.itemSorter,n=e.flat(1);return r?eu(n,r):n});function Xz(){return $e(Yz)}var tu=Z(J());function Kae(e,t){return Xae(e)||Yae(e,t)||Gae(e,t)||Vae()}function Vae(){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 Gae(e,t){if(e){if(typeof e=="string")return Zz(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)?Zz(e,t):void 0}}function Zz(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rUw||Math.abs(e.left-t.left)>Uw||Math.abs(e.top-t.top)>Uw||Math.abs(e.width-t.width)>Uw}function Qz(e){var t=e.getBoundingClientRect();return{height:t.height,left:t.left,top:t.top,width:t.width}}function Ww(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=(0,tu.useState)({height:0,left:0,top:0,width:0}),r=Kae(t,2),n=r[0],o=r[1],a=(0,tu.useRef)(null),i=(0,tu.useRef)(n);i.current=n;var s=(0,tu.useCallback)(l=>{if(a.current!=null&&(a.current.disconnect(),a.current=null),l!=null){var u=Qz(l);if(Jz(u,i.current)&&o(u),typeof ResizeObserver<"u"){var c=new ResizeObserver(()=>{var d=Qz(l);Jz(d,i.current)&&o(d)});c.observe(l),a.current=c}}},[...e]);return(0,tu.useEffect)(()=>()=>{var l;(l=a.current)===null||l===void 0||l.disconnect()},[]),[n,s]}var m7=Z(J());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 Zae=typeof Symbol=="function"&&Symbol.observable||"@@observable",Rz=Zae,nO=()=>Math.random().toString(36).substring(7).split("").join("."),Jae={INIT:`@@redux/INIT${nO()}`,REPLACE:`@@redux/REPLACE${nO()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${nO()}`},Hw=Jae;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 oO(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(oO)(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:Hw.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)}},[Rz](){return this}}}return p({type:Hw.INIT}),{dispatch:p,subscribe:d,getState:c,replaceReducer:f,[Rz]:m}}function Qae(e){Object.keys(e).forEach(t=>{let r=e[t];if(typeof r(void 0,{type:Hw.INIT})>"u")throw new Error(Ro(12));if(typeof r(void 0,{type:Hw.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Ro(13))})}function Kw(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 pv(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function eB(...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=pv(...s)(o.dispatch),{...o,dispatch:a}}}function aO(e){return qw(e)&&"type"in e&&typeof e.type=="string"}var uB=Symbol.for("immer-nothing"),tB=Symbol.for("immer-draftable"),ia=Symbol.for("immer-state");function _s(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var mi=Object,Um=mi.getPrototypeOf,Xw="constructor",tS="prototype",uO="configurable",Zw="enumerable",Gw="writable",fv="value",tl=e=>!!e&&!!e[ia];function gi(e){return e?cB(e)||nS(e)||!!e[tB]||!!e[Xw]?.[tB]||oS(e)||aS(e):!1}var Rae=mi[tS][Xw].toString(),rB=new WeakMap;function cB(e){if(!e||!yO(e))return!1;let t=Um(e);if(t===null||t===mi[tS])return!0;let r=mi.hasOwnProperty.call(t,Xw)&&t[Xw];if(r===Object)return!0;if(!Fm(r))return!1;let n=rB.get(r);return n===void 0&&(n=Function.toString.call(r),rB.set(r,n)),n===Rae}function rS(e,t,r=!0){hv(e)===0?(r?Reflect.ownKeys(e):mi.keys(e)).forEach(o=>{t(o,e[o],e)}):e.forEach((n,o)=>t(o,n,e))}function hv(e){let t=e[ia];return t?t.type_:nS(e)?1:oS(e)?2:aS(e)?3:0}var iO=(e,t,r=hv(e))=>r===2?e.has(t):mi[tS].hasOwnProperty.call(e,t),cO=(e,t,r=hv(e))=>r===2?e.get(t):e[t],Jw=(e,t,r,n=hv(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function eie(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var nS=Array.isArray,oS=e=>e instanceof Map,aS=e=>e instanceof Set,yO=e=>typeof e=="object",Fm=e=>typeof e=="function",sO=e=>typeof e=="boolean";function tie(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var ru=e=>e.copy_||e.base_;var vO=e=>e.modified_?e.copy_:e.base_;function dO(e,t){if(oS(e))return new Map(e);if(aS(e))return new Set(e);if(nS(e))return Array[tS].slice.call(e);let r=cB(e);if(t===!0||t==="class_only"&&!r){let n=mi.getOwnPropertyDescriptors(e);delete n[ia];let o=Reflect.ownKeys(n);for(let a=0;a1&&mi.defineProperties(e,{set:Vw,add:Vw,clear:Vw,delete:Vw}),mi.freeze(e),t&&rS(e,(r,n)=>{xO(n,!0)},!1)),e}function rie(){_s(2)}var Vw={[fv]:rie};function iS(e){return e===null||!yO(e)?!0:mi.isFrozen(e)}var Qw="MapSet",pO="Patches",nB="ArrayMethods",dB={};function Vd(e){let t=dB[e];return t||_s(0,e),t}var oB=e=>!!dB[e];var mv,pB=()=>mv,nie=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:oB(Qw)?Vd(Qw):void 0,arrayMethodsPlugin_:oB(nB)?Vd(nB):void 0});function aB(e,t){t&&(e.patchPlugin_=Vd(pO),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function fO(e){mO(e),e.drafts_.forEach(oie),e.drafts_=null}function mO(e){e===mv&&(mv=e.parent_)}var iB=e=>mv=nie(mv,e);function oie(e){let t=e[ia];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function sB(e,t){t.unfinalizedDrafts_=t.drafts_.length;let r=t.drafts_[0];if(e!==void 0&&e!==r){r[ia].modified_&&(fO(t),_s(4)),gi(e)&&(e=lB(t,e));let{patchPlugin_:o}=t;o&&o.generateReplacementPatches_(r[ia].base_,e,t)}else e=lB(t,r);return aie(t,e,!0),fO(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==uB?e:void 0}function lB(e,t){if(iS(t))return t;let r=t[ia];if(!r)return Rw(t,e.handledSet_,e);if(!sS(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);gB(r,e)}return r.copy_}function aie(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&xO(t,r)}function fB(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var sS=(e,t)=>e.scope_===t,iie=[];function mB(e,t,r,n){let o=ru(e),a=e.type_;if(n!==void 0&&cO(o,n,a)===t){Jw(o,n,r,a);return}if(!e.draftLocations_){let s=e.draftLocations_=new Map;rS(o,(l,u)=>{if(tl(u)){let c=s.get(u)||[];c.push(l),s.set(u,c)}})}let i=e.draftLocations_.get(t)??iie;for(let s of i)Jw(o,s,r,a)}function sie(e,t,r){e.callbacks_.push(function(o){let a=t;if(!a||!sS(a,o))return;o.mapSetPlugin_?.fixSetContents(a);let i=vO(a);mB(e,a.draft_??a,i,r),gB(a,o)})}function gB(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)}fB(e)}}function lie(e,t,r){let{scope_:n}=e;if(tl(r)){let o=r[ia];sS(o,n)&&o.callbacks_.push(function(){Yw(e);let i=vO(o);mB(e,r,i,t)})}else gi(r)&&e.callbacks_.push(function(){let a=ru(e);e.type_===3?a.has(r)&&Rw(r,n.handledSet_,n):cO(a,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Rw(cO(e.copy_,t,e.type_),n.handledSet_,n)})}function Rw(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||tl(e)||t.has(e)||!gi(e)||iS(e)||(t.add(e),rS(e,(n,o)=>{if(tl(o)){let a=o[ia];if(sS(a,r)){let i=vO(a);Jw(e,n,i,e.type_),fB(a)}}else gi(o)&&Rw(o,t,r)})),e}function uie(e,t){let r=nS(e),n={type_:r?1:0,scope_:t?t.scope_:pB(),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=eS;r&&(o=[n],a=gv);let{revoke:i,proxy:s}=Proxy.revocable(o,a);return n.draft_=s,n.revoke_=i,[s,n]}var eS={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=ru(e);if(!iO(o,t,e.type_))return die(e,o,t);let a=o[t];if(e.finalized_||!gi(a)||n&&e.operationMethod&&r?.isMutatingArrayMethod(e.operationMethod)&&tie(t))return a;if(a===lO(e.base_,t)||cie(e,t,a)){Yw(e);let i=e.type_===1?+t:t,s=hO(e.scope_,a,e,i);return e.copy_[i]=s}return a},has(e,t){return t in ru(e)},ownKeys(e){return Reflect.ownKeys(ru(e))},set(e,t,r){let n=hB(ru(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){let o=lO(ru(e),t),a=o?.[ia];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(eie(r,o)&&(r!==void 0||iO(e.base_,t,e.type_)))return!0;Yw(e),gO(e)}return e.copy_[t]===r&&(r!==void 0||iO(e.copy_,t,e.type_))||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),lie(e,t,r)),!0},deleteProperty(e,t){return Yw(e),lO(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),gO(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let r=ru(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[Gw]:!0,[uO]:e.type_!==1||t!=="length",[Zw]:n[Zw],[fv]:r[t]}},defineProperty(){_s(11)},getPrototypeOf(e){return Um(e.base_)},setPrototypeOf(){_s(12)}},gv={};for(let e in eS){let t=eS[e];gv[e]=function(){let r=arguments;return r[0]=r[0][0],t.apply(this,r)}}gv.deleteProperty=function(e,t){return gv.set.call(this,e,t,void 0)};gv.set=function(e,t,r){return eS.set.call(this,e[0],t,r,e[0])};function lO(e,t){let r=e[ia];return(r?ru(r):e)[t]}function cie(e,t,r){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!gi(r)||r[ia]?!1:e.baseRefs_.has(r)}function die(e,t,r){let n=hB(t,r);return n?fv in n?n[fv]:n.get?.call(e.draft_):void 0}function hB(e,t){if(!(t in e))return;let r=Um(e);for(;r;){let n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=Um(r)}}function gO(e){e.modified_||(e.modified_=!0,e.parent_&&gO(e.parent_))}function Yw(e){e.copy_||(e.assigned_=new Map,e.copy_=dO(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var pie=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(Fm(t)&&!Fm(r)){let a=r;r=t;let i=this;return function(l=a,...u){return i.produce(l,c=>r.call(this,c,...u))}}Fm(r)||_s(6),n!==void 0&&!Fm(n)&&_s(7);let o;if(gi(t)){let a=iB(this),i=hO(a,t,void 0),s=!0;try{o=r(i),s=!1}finally{s?fO(a):mO(a)}return aB(a,n),sB(o,a)}else if(!t||!yO(t)){if(o=r(t),o===void 0&&(o=t),o===uB&&(o=void 0),this.autoFreeze_&&xO(o,!0),n){let a=[],i=[];Vd(pO).generateReplacementPatches_(t,o,{patches_:a,inversePatches_:i}),n(a,i)}return o}else _s(1,t)},this.produceWithPatches=(t,r)=>{if(Fm(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]},sO(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),sO(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),sO(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){gi(e)||_s(8),tl(e)&&(e=ea(e));let t=iB(this),r=hO(t,e,void 0);return r[ia].isManual_=!0,mO(t),r}finishDraft(e,t){let r=e&&e[ia];(!r||!r.isManual_)&&_s(9);let{scope_:n}=r;return aB(n,t),sB(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=Vd(pO).applyPatches_;return tl(e)?n(e,t):this.produce(e,o=>n(o,t))}};function hO(e,t,r,n){let[o,a]=oS(t)?Vd(Qw).proxyMap_(t,r):aS(t)?Vd(Qw).proxySet_(t,r):uie(t,r);return(r?.scope_??pB()).drafts_.push(o),a.callbacks_=r?.callbacks_??[],a.key_=n,r&&n!==void 0?sie(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 tl(e)||_s(10,e),yB(e)}function yB(e){if(!gi(e)||iS(e))return e;let t=e[ia],r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=dO(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=dO(e,!0);return rS(r,(o,a)=>{Jw(r,o,yB(a))},n),t&&(t.finalized_=!1),r}var fie=new pie,bO=fie.produce;var Jt=e=>e;function vB(e){return({dispatch:r,getState:n})=>o=>a=>typeof a=="function"?a(r,n,e):o(a)}var xB=vB(),bB=vB;var mie=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?pv:pv.apply(null,arguments)},UPe=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__:function(){return function(e){return e}},gie=e=>e&&typeof e.match=="function";function go(e,t){function r(...n){if(t){let o=t(...n);if(!o)throw new Error(hi(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=>aO(n)&&n.type===e,r}var NB=class yv extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,yv.prototype)}static get[Symbol.species](){return yv}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new yv(...t[0].concat(this)):new yv(...t.concat(this))}};function wB(e){return gi(e)?bO(e,()=>{}):e}function lS(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function hie(e){return typeof e=="boolean"}var yie=()=>function(t){let{thunk:r=!0,immutableCheck:n=!0,serializableCheck:o=!0,actionCreatorCheck:a=!0}=t??{},i=new NB;return r&&(hie(r)?i.push(xB):i.push(bB(r.extraArgument))),i},TB="RTK_autoBatch",Ir=()=>e=>({payload:e,meta:{[TB]:!0}}),SB=e=>t=>{setTimeout(t,e)},vie=(e,t)=>r=>{let n=!1,o=()=>{n||(n=!0,cancelAnimationFrame(a),clearTimeout(i),r())},a=e(o),i=setTimeout(o,t)},_O=(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?vie(window.requestAnimationFrame,100):SB(10):e.type==="callback"?e.queueNotification:SB(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?.[TB],a=!o,a&&(i||(i=!0,l(u))),n.dispatch(c)}finally{o=!0}}})},xie=e=>function(r){let{autoBatch:n=!0}=r??{},o=new NB(e);return n&&o.push(_O(typeof n=="object"?n:void 0)),o};function OB(e){let t=yie(),{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=Kw(r);else throw new Error(hi(1));let u;typeof n=="function"?u=n(t):u=t();let c=pv;o&&(c=mie({trace:!1,...typeof o=="object"&&o}));let d=eB(...u),p=xie(d),f=typeof s=="function"?s(p):p(),m=c(...f);return oO(l,i,m)}function PB(e){let t={},r=[],n,o={addCase(a,i){let s=typeof a=="string"?a:a.type;if(!s)throw new Error(hi(28));if(s in t)throw new Error(hi(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 bie(e){return typeof e=="function"}function wie(e,t){let[r,n,o]=PB(t),a;if(bie(e))a=()=>wB(e());else{let s=wB(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(tl(c)){let f=d(c,l);return f===void 0?c:f}else{if(gi(c))return bO(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 Sie=(e,t)=>gie(e)?e.match(t):e(t);function kie(...e){return t=>e.some(r=>Sie(r,t))}var _ie="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",MB=(e=21)=>{let t="",r=e;for(;r--;)t+=_ie[Math.random()*64|0];return t},Cie=["name","message","stack","code"],wO=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},kB=class{constructor(e,t){this.payload=e,this.meta=t}payload;meta;_type},Aie=e=>{if(typeof e=="object"&&e!==null){let t={};for(let r of Cie)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},_B="External signal was aborted",Eie=(()=>{function e(t,r,n){let o=go(t+"/fulfilled",(l,u,c,d)=>({payload:l,meta:{...d||{},arg:c,requestId:u,requestStatus:"fulfilled"}})),a=go(t+"/pending",(l,u,c)=>({payload:void 0,meta:{...c||{},arg:u,requestId:l,requestStatus:"pending"}})),i=go(t+"/rejected",(l,u,c,d,p)=>({payload:d,error:(n&&n.serializeError||Aie)(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):MB(),m=new AbortController,y,x;function h(v){x=v,m.abort()}u&&(u.aborted?h(_B):u.addEventListener("abort",()=>h(_B),{once:!0}));let g=(async function(){let v;try{let S=n?.condition?.(l,{getState:d,extra:p});if(Tie(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 wO(_,k)),fulfillWithValue:((_,k)=>new kB(_,k))})).then(_=>{if(_ instanceof wO)throw _;return _ instanceof kB?o(_.payload,f,l,_.meta):o(_,f,l)})])}catch(S){v=S instanceof wO?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(Nie)}})}}return Object.assign(s,{pending:a,rejected:i,fulfilled:o,settled:kie(i,o),typePrefix:t})}return e.withTypes=()=>e,e})();function Nie(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function Tie(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var IB=Symbol.for("rtk-slice-createasyncthunk"),HPe={[IB]:Eie};function Oie(e,t){return`${e}/${t}`}function Pie({creators:e}={}){let t=e?.asyncThunk?.[IB];return function(n){let{name:o,reducerPath:a=o}=n;if(!o)throw new Error(hi(11));typeof process<"u";let i=(typeof n.reducers=="function"?n.reducers(Iie()):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(hi(12));if(S in l.sliceCaseReducersByType)throw new Error(hi(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:Oie(o,v),createNotation:typeof n.reducers=="function"};jie(b)?Lie(S,b,u,t):Die(S,b,u)});function c(){let[v={},b=[],S=void 0]=typeof n.extraReducers=="function"?PB(n.extraReducers):[n.extraReducers],w={...v,...l.sliceCaseReducersByType};return wie(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=lS(f,S,x)),k}function w(_=d){let k=lS(p,b,()=>new WeakMap);return lS(k,_,()=>{let A={};for(let[C,E]of Object.entries(n.selectors??{}))A[C]=Mie(E,_,()=>lS(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 Mie(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=Pie();function Iie(){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 Die({type:e,reducerName:t,createNotation:r},n,o){let a,i;if("reducer"in n){if(r&&!$ie(n))throw new Error(hi(17));a=n.reducer,i=n.prepare}else a=n;o.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,i?go(e,i):go(e))}function jie(e){return e._reducerDefinitionType==="asyncThunk"}function $ie(e){return e._reducerDefinitionType==="reducerWithPrepare"}function Lie({type:e,reducerName:t},r,n,o){if(!o)throw new Error(hi(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||uS,pending:s||uS,rejected:l||uS,settled:u||uS})}function uS(){}var zie="task",DB="listener",jB="completed",CO="cancelled",Bie=`task-${CO}`,Fie=`task-${jB}`,SO=`${DB}-${CO}`,Uie=`${DB}-${jB}`,pS=class{constructor(e){this.code=e,this.message=`${zie} ${CO} (reason: ${e})`}code;name="TaskAbortError";message},AO=(e,t)=>{if(typeof e!="function")throw new TypeError(hi(32))},cS=()=>{},$B=(e,t=cS)=>(e.catch(t),e),LB=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Gd=e=>{if(e.aborted)throw new pS(e.reason)};function zB(e,t){let r=cS;return new Promise((n,o)=>{let a=()=>o(new pS(e.reason));if(e.aborted){a();return}r=LB(e,a),t.finally(()=>r()).then(n,o)}).finally(()=>{r=cS})}var Wie=async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(r){return{status:r instanceof pS?"cancelled":"rejected",error:r}}finally{t?.()}},dS=e=>t=>$B(zB(e,t).then(r=>(Gd(e),r))),BB=e=>{let t=dS(e);return r=>t(new Promise(n=>setTimeout(n,r)))},{assign:Wm}=Object,CB={},fS="listenerMiddleware",Hie=(e,t)=>{let r=n=>LB(e,()=>n.abort(e.reason));return(n,o)=>{AO(n,"taskExecutor");let a=new AbortController;r(a);let i=Wie(async()=>{Gd(e),Gd(a.signal);let s=await n({pause:dS(a.signal),delay:BB(a.signal),signal:a.signal});return Gd(a.signal),s},()=>a.abort(Fie));return o?.autoJoin&&t.push(i.catch(cS)),{result:dS(e)(i),cancel(){a.abort(Bie)}}}},qie=(e,t)=>{let r=async(n,o)=>{Gd(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 zB(t,Promise.race(s));return Gd(t),l}finally{a()}};return((n,o)=>$B(r(n,o)))},FB=e=>{let{type:t,actionCreator:r,matcher:n,predicate:o,effect:a}=e;if(t)o=go(t).match;else if(r)t=r.type,o=r.match;else if(n)o=n;else if(!o)throw new Error(hi(21));return AO(a,"options.listener"),{predicate:o,type:t,effect:a}},UB=Wm(e=>{let{type:t,predicate:r,effect:n}=FB(e);return{id:MB(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error(hi(22))}}},{withTypes:()=>UB}),AB=(e,t)=>{let{type:r,effect:n,predicate:o}=FB(t);return Array.from(e.values()).find(a=>(typeof r=="string"?a.type===r:a.predicate===o)&&a.effect===n)},kO=e=>{e.pending.forEach(t=>{t.abort(SO)})},Kie=(e,t)=>()=>{for(let r of t.keys())kO(r);e.clear()},EB=(e,t,r)=>{try{e(t,r)}catch(n){setTimeout(()=>{throw n},0)}},WB=Wm(go(`${fS}/add`),{withTypes:()=>WB}),Vie=go(`${fS}/removeAll`),HB=Wm(go(`${fS}/remove`),{withTypes:()=>HB}),Gie=(...e)=>{console.error(`${fS}/error`,...e)},nu=(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=Gie}=e;AO(i,"onError");let s=f=>(f.unsubscribe=()=>t.delete(f.id),t.set(f.id,f),m=>{f.unsubscribe(),m?.cancelActive&&kO(f)}),l=(f=>{let m=AB(t,f)??UB(f);return s(m)});Wm(l,{withTypes:()=>l});let u=f=>{let m=AB(t,f);return m&&(m.unsubscribe(),f.cancelActive&&kO(m)),!!m};Wm(u,{withTypes:()=>u});let c=async(f,m,y,x)=>{let h=new AbortController,g=qie(l,h.signal),v=[];try{f.pending.add(h),n(f),await Promise.resolve(f.effect(m,Wm({},y,{getOriginalState:x,condition:(b,S)=>g(b,S).then(Boolean),take:g,delay:BB(h.signal),pause:dS(h.signal),extra:a,signal:h.signal,fork:Hie(h.signal,v),unsubscribe:f.unsubscribe,subscribe:()=>{t.set(f.id,f)},cancelActiveListeners:()=>{f.pending.forEach((b,S,w)=>{b!==h&&(b.abort(SO),w.delete(b))})},cancel:()=>{h.abort(SO),f.pending.delete(h)},throwIfCancelled:()=>{Gd(h.signal)}})))}catch(b){b instanceof pS||EB(i,b,{raisedBy:"effect"})}finally{await Promise.all(v),h.abort(Uie),o(f),f.pending.delete(h)}},d=Kie(t,r);return{middleware:f=>m=>y=>{if(!aO(y))return m(y);if(WB.match(y))return l(y.payload);if(Vie.match(y)){d();return}if(HB.match(y))return u(y.payload);let x=f.getState(),h=()=>{if(x===CB)throw new Error(hi(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,EB(i,_,{raisedBy:"predicate"})}w&&c(S,y,f,h)}}}finally{x=CB}return g},startListening:l,stopListening:u,clearListeners:d}};function hi(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 Yie={layoutType:"horizontal",width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},qB=Cr({name:"chartLayout",initialState:Yie,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}}}),mS=qB.actions,EO=mS.setMargin,KB=mS.setLayout,VB=mS.setChartSize,GB=mS.setScale;var YB=qB.reducer;function gS(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 Ua(e){return typeof e=="number"&&e>0&&Number.isFinite(e)}function XB(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Wa(e){for(var t=1;t{if(t&&r){var n=r.width,o=r.height,a=t.align,i=t.verticalAlign,s=t.layout,l=t.position,u=t.offset,c=u===void 0?0:u;if(l!=null){if(nv(l)){if(l==="top"&&De(e.top))return Wa(Wa({},e),{},{top:e.top+(o||0)+c});if(l==="bottom"&&De(e.bottom))return Wa(Wa({},e),{},{bottom:e.bottom+(o||0)+c});if(l==="left"&&De(e.left))return Wa(Wa({},e),{},{left:e.left+(n||0)+c});if(l==="right"&&De(e.right))return Wa(Wa({},e),{},{right:e.right+(n||0)+c})}return e}if((s==="vertical"||s==="horizontal"&&i==="middle")&&a!=="center"&&De(e[a]))return Wa(Wa({},e),{},{[a]:e[a]+(n||0)});if((s==="horizontal"||s==="vertical"&&a==="center")&&i!=="middle"&&De(e[i]))return Wa(Wa({},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",NO=(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},TO=(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?Yr(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)},JB=(e,t)=>{if(!t||t.length!==2||!De(t[0])||!De(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(!De(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)}}}},Rie=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)}}}},ese={sign:Qie,expand:GT,none:fi,silhouette:YT,wiggle:XT,positive:Rie},QB=(e,t,r)=>{var n,o=(n=ese[r])!==null&&n!==void 0?n:fi,a=VT().keys(t).value((s,l)=>Number(Wt(s,l,0))).order(Im).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&&De(d[0])&&De(d[1])&&(u[0]=d[0],u[1]=d[1])})}),i};function hS(e){return e==null?void 0:String(e)}function Hm(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=tw(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 De(u)?u:null}var OO=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 De(l)?l-o/2+n:null},RB=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]},tse=e=>{var t=e.flat(2).filter(De);return[Math.min(...t),Math.max(...t)]},rse=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],e7=(e,t,r)=>{if(!(e==null||Object.keys(e).length===0))return rse(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=gS(u,t,r),d=tse(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]))},PO=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,MO=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Yi=(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=eu(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 IO(e){var t=e.tooltipEntrySettings,r=e.dataKey,n=e.payload,o=e.value,a=e.name;return Wa(Wa({},t),{},{dataKey:r,payload:n,value:o,name:a})}function yi(e,t){if(e!=null)return String(e);if(typeof t=="string")return t}var t7=(e,t)=>{if(t==="horizontal")return e.relativeX;if(t==="vertical")return e.relativeY},r7=(e,t)=>t==="centric"?e.angle:e.radius;var qo=e=>e.layout.width,Ko=e=>e.layout.height,n7=e=>e.layout.scale,qm=e=>e.layout.margin;var Km=ae(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Vm=ae(e=>e.cartesianAxis.yAxis,e=>Object.values(e));var yS="data-recharts-item-index",vS="data-recharts-item-id",Yd=60,vv=30;function o7(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 xS(e){for(var t=1;te.brush.height;function sse(e){var t=Vm(e);return t.reduce((r,n)=>{if(n.orientation==="left"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Yd;return r+o}return r},0)}function lse(e){var t=Vm(e);return t.reduce((r,n)=>{if(n.orientation==="right"&&!n.mirror&&!n.hide){var o=typeof n.width=="number"?n.width:Yd;return r+o}return r},0)}function use(e){var t=Km(e);return t.reduce((r,n)=>{if(n.orientation==="top"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:vv;return r+o}return r},0)}function cse(e){var t=Km(e);return t.reduce((r,n)=>{if(n.orientation==="bottom"&&!n.mirror&&!n.hide){var o=typeof n.height=="number"?n.height:vv;return r+o}return r},0)}var Fr=ae([qo,Ko,qm,ise,sse,lse,use,cse,rO,Gz],(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=xS(xS({},d),c),f=p.bottom;p.bottom+=n,p=ZB(p,l,u);var m=e-p.left-p.right,y=t-p.top-p.bottom;return xS(xS({brushBottom:f},p),{},{width:Math.max(m,0),height:Math.max(y,0)})}),bS=ae(Fr,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),Gm=ae(qo,Ko,(e,t)=>({x:0,y:0,width:e,height:t}));var dse=Z(J()),wS=Z(J()),pse=(0,wS.createContext)(null),Ar=()=>(0,wS.useContext)(pse)!=null;var Ym=e=>e.brush,Xd=ae([Ym,Fr,qm],(e,t,r)=>({height:e.height,x:De(e.x)?e.x:t.left,y:De(e.y)?e.y:t.top+t.height+t.brushBottom-(r?.bottom||0),width:De(e.width)?e.width:t.width}));var Zd=Z(J()),ho=Z(J());function a7(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 i7(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=a7(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 DO(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return i7(e,t,{leading:n,maxWait:t,trailing:o})}var fse=!0,Xm=function(t,r){for(var n=arguments.length,o=new Array(n>2?n-2:0),a=2;ao[i++]))}};var Cs={width:"100%",height:"100%",debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},jO=(e,t,r)=>{var n=r.width,o=n===void 0?Cs.width:n,a=r.height,i=a===void 0?Cs.height:a,s=r.aspect,l=r.maxHeight,u=Xl(o)?e:Number(o),c=Xl(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}},mse={width:0,height:0,overflow:"visible"},gse={width:0,overflowX:"visible"},hse={height:0,overflowY:"visible"},yse={},s7=e=>{var t=e.width,r=e.height,n=Xl(t),o=Xl(r);return n&&o?mse:n?gse:o?hse:yse};function l7(e){var t=e.width,r=e.height,n=e.aspect,o=t,a=r;return o===void 0&&a===void 0?(o=Cs.width,a=Cs.height):o===void 0?o=n&&n>0?void 0:Cs.width:a===void 0&&(a=n&&n>0?void 0:Cs.height),{width:o,height:a}}var vse=["aspect","initialDimension","width","height","minWidth","minHeight","maxHeight","children","debounce","id","className","onResize","style"];function SS(){return SS=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 Tse(o)?Zd.createElement(p7.Provider,{value:o},t):null}var xv=()=>(0,ho.useContext)(p7),Ose=(0,ho.forwardRef)((e,t)=>{var r=e.aspect,n=e.initialDimension,o=n===void 0?Cs.initialDimension:n,a=e.width,i=e.height,s=e.minWidth,l=s===void 0?Cs.minWidth:s,u=e.minHeight,c=e.maxHeight,d=e.children,p=e.debounce,f=p===void 0?Cs.debounce:p,m=e.id,y=e.className,x=e.onResize,h=e.style,g=h===void 0?{}:h,v=Ese(e,vse),b=(0,ho.useRef)(null),S=(0,ho.useRef)();S.current=x,(0,ho.useImperativeHandle)(t,()=>b.current);var w=(0,ho.useState)({containerWidth:o.width,containerHeight:o.height}),_=Sse(w,2),k=_[0],A=_[1],C=(0,ho.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,ho.useEffect)(()=>{if(b.current==null||typeof ResizeObserver>"u")return Sa;var N=M=>{var q,V=M[0];if(V!=null){var L=V.contentRect,G=L.width,W=L.height;C(G,W),(q=S.current)===null||q===void 0||q.call(S,G,W)}};f>0&&(N=DO(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;Xm(!r||r>0,"The aspect(%s) must be greater than zero.",r);var Q=jO(E,I,{width:a,height:i,aspect:r,maxHeight:c}),$=Q.calculatedWidth,F=Q.calculatedHeight;return Xm(E<0||I<0||$!=null&&$>0||F!=null&&F>0,`The width(%s) and height(%s) of chart should be greater than 0, please check the style of container, or the props width(%s) and height(%s), or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,z,U,a,i,l,u,r),Hd.createElement("div",aS({id:m?"".concat(m):void 0,className:xt("recharts-responsive-container",y),style:DB(DB({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:x},v),Hd.createElement("div",{style:PB({width:a,height:i})},Hd.createElement(LB,{width:z,height:U},d)))}),yc=(0,co.forwardRef)((e,t)=>{var r=av();if(La(r.width)&&La(r.height))return e.children;var n=MB({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=fO(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return De(s)&&De(l)?Hd.createElement(LB,{width:s,height:l},e.children):Hd.createElement(ose,aS({},e,{width:o,height:a,ref:t}))});var qd=()=>{var e,t=Cr(),r=$e(nS),n=$e(Wd),o=(e=$e(Fm))===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}},ase={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},iS=()=>{var e;return(e=$e(Br))!==null&&e!==void 0?e:ase},Wm=()=>$e(Lo),Hm=()=>$e(zo),BB=()=>$e(e=>e.layout.margin),Lt=e=>e.layout.layoutType,Ba=()=>$e(Lt),qm=()=>{var e=Ba();if(e==="horizontal"||e==="vertical")return e},sS=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},FB=()=>$e(sS),UB=()=>{var e=Ba();return e!==void 0},Kd=e=>{var t=Dt(),r=Cr(),n=e.width,o=e.height,a=av(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,zB.useEffect)(()=>{!r&&La(i)&&La(s)&&t(hB({width:i,height:s}))},[t,r,i,s]),null};var ise={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},WB=_r({name:"legend",initialState:ise,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(Xt(t.payload))},prepare:Mr()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Yo(e).payload.indexOf(Xt(n));a>-1&&(e.payload[a]=Xt(o))},prepare:Mr()},removeLegendPayload:{reducer(e,t){var r=Yo(e).payload.indexOf(Xt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:Mr()}}}),iv=WB.actions,mO=iv.setLegendSize,HB=iv.setLegendSettings,gO=iv.addLegendPayload,hO=iv.replaceLegendPayload,yO=iv.removeLegendPayload;var qB=WB.reducer;var Fn=Z(J(),1),Dse=Z(YB(),1);var mse=Symbol.for("react.forward_ref");var gse=Symbol.for("react.memo");var hse=mse,yse=gse;function vse(e){e()}function xse(){let e=null,t=null;return{clear(){e=null,t=null},notify(){vse(()=>{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 XB={notify(){},get:()=>[]};function bse(e,t){let r,n=XB,o=0,a=!1;function i(y){c();let b=n.subscribe(y),h=!1;return()=>{h||(h=!0,b(),d())}}function s(){n.notify()}function l(){m.onStateChange&&m.onStateChange()}function u(){return a}function c(){o++,r||(r=t?t.addNestedSub(l):e.subscribe(l),n=xse())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=XB)}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 wse=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Sse=wse(),kse=()=>typeof navigator<"u"&&navigator.product==="ReactNative",_se=kse(),Cse=()=>Sse||_se?Fn.useLayoutEffect:Fn.useEffect,Ase=Cse();function ZB(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function JB(e,t){if(ZB(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=bse(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Fn.useMemo(()=>o.getState(),[o]);return Ase(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Fn.createElement((r||Mse).Provider,{value:a},t)}var QB=Ise;var jse=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function $se(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function Fa(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(jse.has(n)){if(e[n]==null&&t[n]==null)continue;if(!JB(e[n],t[n]))return!1}else if(!$se(e[n],t[n]))return!1;return!0}var RB=ne([Lo,zo,$m],(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 e7(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 Lse=["contextPayload"];function vO(){return vO=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(HB({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function tle(e){var t=e.width,r=e.height,n=Dt();return(0,lS.useLayoutEffect)(()=>{n(mO({width:t,height:r}))},[n,t,r]),(0,lS.useLayoutEffect)(()=>()=>{n(mO({width:0,height:0}))},[n]),null}function rle(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var nle={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function ole(e){var t,r,n,o,a,i,s,l,u=rr(e,nle),c=e.layout&&e.layout!=="auto"?e.layout:Zse(u.position),d=xz(),p=a6(),f=BB(),m=$e(I=>Jse(I,u.position)),y=u.width,b=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||Hy(u.position)),x=Cw([d]),S=zse(x,2),w=S[0],A=S[1],k=Wm(),_=Hm();if(k==null||_==null||u.position!=null&&m==null)return null;var C=k-(f?.left||0)-(f?.right||0),E=rle(c,b,y,C),j=u.position==null?null:B1({viewBox:m??{x:0,y:0,width:k,height:_},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),X=Qse(u.position,(r=u.offset)!==null&&r!==void 0?r:0,w),z=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=j?{width:"max-content",height:"max-content",maxWidth:z,maxHeight:U,overflowY:"auto",top:j.y+((s=X.top)!==null&&s!==void 0?s:0),left:j.x+((l=X.left)!==null&&l!==void 0?l:0),transform:e7(j.horizontalAnchor,j.verticalAnchor)}:Rse(h,u,f,k,_,w),O=g?h:Km(Km({position:"absolute",width:E?.width||y||"auto",height:E?.height||b||"auto"},N),h),D=g??p;if(D==null||d==null)return null;var T=yi.createElement("div",{className:"recharts-legend-wrapper",style:O,ref:A},yi.createElement(ele,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&yi.createElement(tle,w),yi.createElement(Xse,vO({},u,{layout:c},E,{margin:f,chartWidth:k,chartHeight:_,contextPayload:d})));return(0,n7.createPortal)(T,D)}var uS=yi.memo(ole,Fa);uS.displayName="Legend";var es=Z(J()),PW=Z(J()),MW=Z(Wh());var Cs=Z(J());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{var t=e.separator,r=t===void 0?Vm.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?Vm.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?Vm.accessibilityLayer:m,b=()=>{if(s&&s.length){var k={padding:0,margin:0},_=mle(s,u),C=_.map((E,j)=>{if(!E||E.type==="none")return null;var X=E.formatter||l||fle,z=E.value,U=E.name,N=z,O=U;if(X){var D=X(z,U,E,j,s);if(Array.isArray(D)){var T=lle(D,2);N=T[0],O=T[1]}else if(D!=null)N=D;else return null}var I=lv(lv({},Vm.itemStyle),{},{color:E.color||Vm.itemStyle.color},o);return Cs.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(j),style:I},ya(O)?Cs.createElement("span",{className:"recharts-tooltip-item-name"},O):null,ya(O)?Cs.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,Cs.createElement("span",{className:"recharts-tooltip-item-value"},N),Cs.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return Cs.createElement("ul",{className:"recharts-tooltip-item-list",style:k},C)}return null},h=lv(lv({},Vm.contentStyle),n),g=lv({margin:0},i),v=!or(p),x=v?p:"",S=xt("recharts-default-tooltip",c),w=xt("recharts-tooltip-label",d);v&&f&&s!==void 0&&s!==null&&(x=f(p,s));var A=y?{role:"status","aria-live":"assertive"}:{};return Cs.createElement("div",xO({className:S,style:h},A),Cs.createElement("p",{className:w,style:g},Cs.isValidElement(x)?x:"".concat(x)),b())};var vc=Z(J());var uv="recharts-tooltip-wrapper",gle={visibility:"hidden"};function hle(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return xt(uv,{["".concat(uv,"-right")]:De(r)&&t&&De(t.x)&&r>=t.x,["".concat(uv,"-left")]:De(r)&&t&&De(t.x)&&r=t.y,["".concat(uv,"-top")]:De(n)&&t&&De(t.y)&&n0?o:0),d=r[n]+o;if(t[n])return i[n]?c:d;var p=l[n];if(p==null)return 0;if(i[n]){var f=c,m=p;return fb?Math.max(c,p):Math.max(d,p)}function yle(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 l7(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=s7({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=s7({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=yle({translateX:d,translateY:p,useTranslate3d:l})):c=gle,{cssProperties:c,cssClasses:hle({translateX:d,translateY:p,coordinate:r})}}var cS=Z(J());var vle=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),Yi={devToolsEnabled:!0,isSsr:vle()};function xle(e,t){return kle(e)||Sle(e,t)||wle(e,t)||ble()}function ble(){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 wle(e,t){if(e){if(typeof e=="string")return u7(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)?u7(e,t):void 0}}function u7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rYi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=xle(e,2),r=t[0],n=t[1];return(0,cS.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 c7(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Gm(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}})),u=Ele(l,2),c=u[0],d=u[1];vc.useEffect(()=>{var h=g=>{if(g.key==="Escape"){var v,x,S,w;d({dismissed:!0,dismissedAtCoordinate:{x:(v=(x=e.coordinate)===null||x===void 0?void 0:x.x)!==null&&v!==void 0?v:0,y:(S=(w=e.coordinate)===null||w===void 0?void 0:w.y)!==null&&S!==void 0?S:0}})}};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[(t=e.coordinate)===null||t===void 0?void 0:t.x,(r=e.coordinate)===null||r===void 0?void 0:r.y]),c.dismissed&&(((n=(o=e.coordinate)===null||o===void 0?void 0:o.x)!==null&&n!==void 0?n:0)!==c.dismissedAtCoordinate.x||((a=(i=e.coordinate)===null||i===void 0?void 0:i.y)!==null&&a!==void 0?a:0)!==c.dismissedAtCoordinate.y)&&d(Gm(Gm({},c),{},{dismissed:!1}));var p=l7({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?{}:Gm(Gm({transition:Mle({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),b=Gm(Gm({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return vc.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:b,ref:e.innerRef},e.children)}var p7=vc.memo(Ile);var pS=()=>{var e;return(e=$e(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var Qk=Z(J()),wg=Z(J());var v7=Z(J());function bO(){return bO=Object.assign?Object.assign.bind():function(e){for(var t=1;tTt(e.x)&&Tt(e.y),h7=e=>e.base!=null&&fS(e.base)&&fS(e),cv=e=>e.x,dv=e=>e.y,Lle=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(Jl(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=g7["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return g7[r]||mc},y7={connectNulls:!1,type:"linear"},zle=e=>{var t=e.type,r=t===void 0?y7.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?y7.connectNulls:s,u=Lle(r,i),c=l?o.filter(fS):o;if(Array.isArray(a)){var d,p=o.map((h,g)=>m7(m7({},h),{},{base:a[g]}));i==="vertical"?d=wm().y(dv).x1(cv).x0(h=>h.base.x):d=wm().x(cv).y1(dv).y0(h=>h.base.y);var f=d.defined(h7).curve(u),m=l?p.filter(h7):p;return f(m)}var y;i==="vertical"&&De(a)?y=wm().y(dv).x1(cv).x0(a):De(a)?y=wm().x(cv).y1(dv).y0(a):y=Ky().x(cv).y(dv);var b=y.defined(fS).curve(u);return b(c)},rl=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=Ba();if((!r||!r.length)&&!n)return null;var i={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=r&&r.length?zle(i):n;return v7.createElement("path",bO({},dn(e),Am(e),{className:xt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var b7=Z(J());var Ble=["x","y","top","left","width","height","className"];function wO(){return wO=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),w7=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=qle(e,Ble),y=Fle({x:r,y:o,top:i,left:l,width:c,height:p},m);return!De(r)||!De(o)||!De(c)||!De(p)||!De(i)||!De(l)?null:b7.createElement("path",wO({},pn(y),{className:xt("recharts-cross",f),d:Vle(r,o,c,p,i,l)}))};function S7(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 xS=Z(J()),Xi=Z(J());var pv=Z(J());var mS=1e-4,C7=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],A7=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),k7=(e,t)=>r=>{var n=C7(e,t);return A7(n,r)},Gle=(e,t)=>r=>{var n=C7(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return A7(o,r)},Yle=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]]},Xle=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=k7(e,r),a=k7(t,n),i=Gle(e,r),s=u=>u>1?1:u<0?0:u,l=u=>{for(var c=u>1?1:u,d=c,p=0;p<8;++p){var f=o(d)-c,m=i(d);if(Math.abs(f-c)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,o=t.damping,a=o===void 0?8:o,i=t.dt,s=i===void 0?16.67:i,l=1,u=[0],c=0,d=0,p=1e4,f=0;f{var g,v,x;if(h<=0)return 0;if(h>=1)return l;var S=h*b,w=Math.floor(S),A=S-w;return((g=u[w])!==null&&g!==void 0?g:0)+(((v=u[w+1])!==null&&v!==void 0?v:0)-((x=u[w])!==null&&x!==void 0?x:0))*A}},E7=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return _7(e);case"spring":return Jle();default:if(e.split("(")[0]==="cubic-bezier")return _7(e)}return typeof e=="function"?e:null};var Ym=Z(J());var N7=(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 T7=(0,Ym.createContext)(N7),OMe=T7.Provider;function O7(e){var t=(0,Ym.useContext)(T7);return(0,Ym.useMemo)(()=>e??t,[e,t])}function Qle(e,t,r){return(t=Rle(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Rle(e){var t=eue(e,"string");return typeof t=="symbol"?t:t+""}function eue(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 P7="init",M7="pending",I7="active",tue="completed";function SO(e){return Math.max(0,e)}var kO=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;Qle(this,"state",P7),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=SO(t.animationDuration),this.animationBegin=SO(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()===P7)return this.state=M7,this.beginStartedTime=t,this.animationBegin;if(this.getState()===M7){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=I7,this.animationStartedTime=t,this.nextAnimationUpdate(0)):SO(this.animationBegin-r)}if(this.getState()===I7){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=tue}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},gS=class extends kO{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(kr(this.getFrom(),this.getTo(),this.getProgress()))}};var hS=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 rue(e,t){return iue(e)||aue(e,t)||oue(e,t)||nue()}function nue(){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 oue(e,t){if(e){if(typeof e=="string")return D7(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)?D7(e,t):void 0}}function D7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},j7=0,_O=1;function yS(e){var t=rr(e,sue),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=dS(),p=n==="auto"?!Yi.isSsr&&!d:n,f=O7(t.animationController),m=(0,pv.useState)(p?j7:_O),y=rue(m,2),b=y[0],h=y[1];return(0,pv.useEffect)(()=>{p||h(_O)},[p]),(0,pv.useEffect)(()=>{var g=E7(i);if(!p||!o||g==null)return va;var v=new hS,x=new gS({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:j7,to:_O});return f(v,x,h)},[f,r,p,o,a,i,s,u,l]),c(Number(b))}var CO=Z(J());function vS(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,CO.useRef)(Zl(t)),n=(0,CO.useRef)(e);return n.current!==e&&(r.current=Zl(t),n.current=e),r.current}var lue=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),$7=(e,t,r)=>e.map(n=>"".concat(lue(n)," ").concat(t,"ms ").concat(r)).join(",");var uue=["radius"],cue=["radius"],L7,z7,B7,F7,U7,W7,H7,q7,K7,V7;function G7(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 Y7(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=Wi(r),i=Wi(n),s=Math.min(Math.abs(a)/2,Math.abs(i)/2),l=i>=0?1:-1,u=a>=0?1:-1,c=i>=0&&a>=0||i<0&&a<0?1:0,d;if(s>0&&Array.isArray(o)){for(var p=[0,0,0,0],f=0,m=4;fs?s:b}d=xo(L7||(L7=nl(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=xo(z7||(z7=nl(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=xo(B7||(B7=nl(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=xo(F7||(F7=nl(["A ",",",",0,0,",`, - `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=xo(U7||(U7=nl(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=xo(W7||(W7=nl(["A ",",",",0,0,",`, - `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=xo(H7||(H7=nl(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=xo(q7||(q7=nl(["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=xo(K7||(K7=nl(["M ",",",` + height and width.`,$,F,a,i,l,u,r),Zd.createElement("div",SS({id:m?"".concat(m):void 0,className:xt("recharts-responsive-container",y),style:c7(c7({},g),{},{width:a,height:i,minWidth:l,minHeight:u,maxHeight:c}),ref:b},v),Zd.createElement("div",{style:s7({width:a,height:i})},Zd.createElement(f7,{width:$,height:F},d)))}),hc=(0,ho.forwardRef)((e,t)=>{var r=xv();if(Ua(r.width)&&Ua(r.height))return e.children;var n=l7({width:e.width,height:e.height,aspect:e.aspect}),o=n.width,a=n.height,i=jO(void 0,void 0,{width:o,height:a,aspect:e.aspect,maxHeight:e.maxHeight}),s=i.calculatedWidth,l=i.calculatedHeight;return De(s)&&De(l)?Zd.createElement(f7,{width:s,height:l},e.children):Zd.createElement(Ose,SS({},e,{width:o,height:a,ref:t}))});var Jd=()=>{var e,t=Ar(),r=$e(bS),n=$e(Xd),o=(e=$e(Ym))===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}},Pse={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},kS=()=>{var e;return(e=$e(Fr))!==null&&e!==void 0?e:Pse},Zm=()=>$e(qo),Jm=()=>$e(Ko),g7=()=>$e(e=>e.layout.margin),Lt=e=>e.layout.layoutType,Ha=()=>$e(Lt),Qm=()=>{var e=Ha();if(e==="horizontal"||e==="vertical")return e},_S=e=>{var t=e.layout.layoutType;if(t==="centric"||t==="radial")return t},h7=()=>$e(_S),y7=()=>{var e=Ha();return e!==void 0},Qd=e=>{var t=Dt(),r=Ar(),n=e.width,o=e.height,a=xv(),i=n,s=o;return a&&(i=a.width>0?a.width:n,s=a.height>0?a.height:o),(0,m7.useEffect)(()=>{!r&&Ua(i)&&Ua(s)&&t(VB({width:i,height:s}))},[t,r,i,s]),null};var Mse={settings:{layout:"horizontal",align:"center",verticalAlign:"bottom",itemSorter:"value",position:void 0,offset:0},size:{width:0,height:0},payload:[]},v7=Cr({name:"legend",initialState:Mse,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(Jt(t.payload))},prepare:Ir()},replaceLegendPayload:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).payload.indexOf(Jt(n));a>-1&&(e.payload[a]=Jt(o))},prepare:Ir()},removeLegendPayload:{reducer(e,t){var r=ea(e).payload.indexOf(Jt(t.payload));r>-1&&e.payload.splice(r,1)},prepare:Ir()}}}),bv=v7.actions,$O=bv.setLegendSize,x7=bv.setLegendSettings,LO=bv.addLegendPayload,zO=bv.replaceLegendPayload,BO=bv.removeLegendPayload;var b7=v7.reducer;var Un=Z(J(),1),ile=Z(_7(),1);var Fse=Symbol.for("react.forward_ref");var Use=Symbol.for("react.memo");var Wse=Fse,Hse=Use;function qse(e){e()}function Kse(){let e=null,t=null;return{clear(){e=null,t=null},notify(){qse(()=>{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 C7={notify(){},get:()=>[]};function Vse(e,t){let r,n=C7,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=Kse())}function d(){o--,r&&o===0&&(r(),r=void 0,n.clear(),n=C7)}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 Gse=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Yse=Gse(),Xse=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Zse=Xse(),Jse=()=>Yse||Zse?Un.useLayoutEffect:Un.useEffect,Qse=Jse();function A7(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function E7(e,t){if(A7(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=Vse(o);return{store:o,subscription:l,getServerState:n?()=>n:void 0}},[o,n]),i=Un.useMemo(()=>o.getState(),[o]);return Qse(()=>{let{subscription:l}=a;return l.onStateChange=l.notifyNestedSubs,l.trySubscribe(),i!==o.getState()&&l.notifyNestedSubs(),()=>{l.tryUnsubscribe(),l.onStateChange=void 0}},[a,i]),Un.createElement((r||ole).Provider,{value:a},t)}var N7=ale;var sle=new Set(["axisLine","tickLine","activeBar","activeDot","activeLabel","activeShape","allowEscapeViewBox","background","cursor","dot","label","line","margin","padding","position","shape","style","tick","wrapperStyle","radius","throttledEvents"]);function lle(e,t){return e==null&&t==null?!0:typeof e=="number"&&typeof t=="number"?e===t||e!==e&&t!==t:e===t}function qa(e,t){var r=new Set([...Object.keys(e),...Object.keys(t)]);for(var n of r)if(sle.has(n)){if(e[n]==null&&t[n]==null)continue;if(!E7(e[n],t[n]))return!1}else if(!lle(e[n],t[n]))return!1;return!0}var T7=ae([qo,Ko,qm],(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 O7(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 ule=["contextPayload"];function FO(){return FO=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(x7({align:t,layout:r,verticalAlign:n,itemSorter:o,position:a,offset:i}))},[s,t,r,n,o,a,i]),null}function Ele(e){var t=e.width,r=e.height,n=Dt();return(0,CS.useLayoutEffect)(()=>{n($O({width:t,height:r}))},[n,t,r]),(0,CS.useLayoutEffect)(()=>()=>{n($O({width:0,height:0}))},[n]),null}function Nle(e,t,r,n){return e==="vertical"&&t!=null?{height:t}:e==="horizontal"?{width:r||n}:null}var Tle={align:"center",iconSize:14,inactiveColor:"#ccc",itemSorter:"value",labelStyle:{},layout:"auto",verticalAlign:"bottom",offset:0};function Ole(e){var t,r,n,o,a,i,s,l,u=nr(e,Tle),c=e.layout&&e.layout!=="auto"?e.layout:Sle(u.position),d=Xz(),p=j6(),f=g7(),m=$e(D=>kle(D,u.position)),y=u.width,x=u.height,h=u.wrapperStyle,g=u.portal,v=g==null&&(u.position==null||nv(u.position)),b=Ww([d]),S=cle(b,2),w=S[0],_=S[1],k=Zm(),A=Jm();if(k==null||A==null||u.position!=null&&m==null)return null;var C=k-(f?.left||0)-(f?.right||0),E=Nle(c,x,y,C),I=u.position==null?null:rw({viewBox:m??{x:0,y:0,width:k,height:A},position:u.position,offset:(t=u.offset)!==null&&t!==void 0?t:0}),Q=_le(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:O7(I.horizontalAnchor,I.verticalAnchor)}:Cle(h,u,f,k,A,w),O=g?h:Rm(Rm({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=vi.createElement("div",{className:"recharts-legend-wrapper",style:O,ref:_},vi.createElement(Ale,{layout:c,align:u.align,verticalAlign:u.verticalAlign,itemSorter:u.itemSorter,position:u.position,offset:u.offset}),v&&vi.createElement(Ele,w),vi.createElement(wle,FO({},u,{layout:c},E,{margin:f,chartWidth:k,chartHeight:A,contextPayload:d})));return(0,I7.createPortal)(T,j)}var AS=vi.memo(Ole,qa);AS.displayName="Legend";var ts=Z(J()),sH=Z(J()),lH=Z(Qh());var As=Z(J());function UO(){return UO=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?eg.separator:t,n=e.contentStyle,o=e.itemStyle,a=e.labelStyle,i=a===void 0?eg.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?eg.accessibilityLayer:m,x=()=>{if(s&&s.length){var k={padding:0,margin:0},A=Fle(s,u),C=A.map((E,I)=>{if(!E||E.type==="none")return null;var Q=E.formatter||l||Ble,$=E.value,F=E.name,N=$,O=F;if(Q){var j=Q($,F,E,I,s);if(Array.isArray(j)){var T=Dle(j,2);N=T[0],O=T[1]}else if(j!=null)N=j;else return null}var D=Sv(Sv({},eg.itemStyle),{},{color:E.color||eg.itemStyle.color},o);return As.createElement("li",{className:"recharts-tooltip-item",key:"tooltip-item-".concat(I),style:D},wa(O)?As.createElement("span",{className:"recharts-tooltip-item-name"},O):null,wa(O)?As.createElement("span",{className:"recharts-tooltip-item-separator"},r):null,As.createElement("span",{className:"recharts-tooltip-item-value"},N),As.createElement("span",{className:"recharts-tooltip-item-unit"},E.unit||""))});return As.createElement("ul",{className:"recharts-tooltip-item-list",style:k},C)}return null},h=Sv(Sv({},eg.contentStyle),n),g=Sv({margin:0},i),v=!ar(p),b=v?p:"",S=xt("recharts-default-tooltip",c),w=xt("recharts-tooltip-label",d);v&&f&&s!==void 0&&s!==null&&(b=f(p,s));var _=y?{role:"status","aria-live":"assertive"}:{};return As.createElement("div",UO({className:S,style:h},_),As.createElement("p",{className:w,style:g},As.isValidElement(b)?b:"".concat(b)),x())};var yc=Z(J());var kv="recharts-tooltip-wrapper",Ule={visibility:"hidden"};function Wle(e){var t=e.coordinate,r=e.translateX,n=e.translateY;return xt(kv,{["".concat(kv,"-right")]:De(r)&&t&&De(t.x)&&r>=t.x,["".concat(kv,"-left")]:De(r)&&t&&De(t.x)&&r=t.y,["".concat(kv,"-top")]:De(n)&&t&&De(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 Hle(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 z7(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=L7({allowEscapeViewBox:t,coordinate:r,key:"x",offset:o,position:a,reverseDirection:i,tooltipDimension:s.width,viewBox:u,viewBoxDimension:u.width}),p=L7({allowEscapeViewBox:t,coordinate:r,key:"y",offset:n,position:a,reverseDirection:i,tooltipDimension:s.height,viewBox:u,viewBoxDimension:u.height}),c=Hle({translateX:d,translateY:p,useTranslate3d:l})):c=Ule,{cssProperties:c,cssClasses:Wle({translateX:d,translateY:p,coordinate:r})}}var ES=Z(J());var qle=()=>!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout),Xi={devToolsEnabled:!0,isSsr:qle()};function Kle(e,t){return Xle(e)||Yle(e,t)||Gle(e,t)||Vle()}function Vle(){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 Gle(e,t){if(e){if(typeof e=="string")return B7(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)?B7(e,t):void 0}}function B7(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rXi.isSsr||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches),t=Kle(e,2),r=t[0],n=t[1];return(0,ES.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 F7(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;te.length)&&(t=e.length);for(var r=0,n=Array(t);r({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}})),u=Rle(l,2),c=u[0],d=u[1];yc.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(tg(tg({},c),{},{dismissed:!1}));var p=z7({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?{}:tg(tg({transition:oue({prefersReducedMotion:s,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},m),{},{pointerEvents:"none",position:"absolute",top:0,left:0}),x=tg(tg({},y),{},{visibility:!c.dismissed&&e.active&&e.hasPayload?"visible":"hidden"},e.wrapperStyle);return yc.createElement("div",{xmlns:"http://www.w3.org/1999/xhtml",tabIndex:-1,className:f,style:x,ref:e.innerRef},e.children)}var W7=yc.memo(aue);var TS=()=>{var e;return(e=$e(t=>t.rootProps.accessibilityLayer))!==null&&e!==void 0?e:!0};var g_=Z(J()),Tg=Z(J());var Y7=Z(J());function WO(){return WO=Object.assign?Object.assign.bind():function(e){for(var t=1;tOt(e.x)&&Ot(e.y),V7=e=>e.base!=null&&OS(e.base)&&OS(e),_v=e=>e.x,Cv=e=>e.y,uue=(e,t)=>{if(typeof e=="function")return e;var r="curve".concat(Jl(e));if((r==="curveMonotone"||r==="curveBump")&&t){var n=K7["".concat(r).concat(t==="vertical"?"Y":"X")];if(n)return n}return K7[r]||fc},G7={connectNulls:!1,type:"linear"},cue=e=>{var t=e.type,r=t===void 0?G7.type:t,n=e.points,o=n===void 0?[]:n,a=e.baseLine,i=e.layout,s=e.connectNulls,l=s===void 0?G7.connectNulls:s,u=uue(r,i),c=l?o.filter(OS):o;if(Array.isArray(a)){var d,p=o.map((h,g)=>q7(q7({},h),{},{base:a[g]}));i==="vertical"?d=Tm().y(Cv).x1(_v).x0(h=>h.base.x):d=Tm().x(_v).y1(Cv).y0(h=>h.base.y);var f=d.defined(V7).curve(u),m=l?p.filter(V7):p;return f(m)}var y;i==="vertical"&&De(a)?y=Tm().y(Cv).x1(_v).x0(a):De(a)?y=Tm().x(_v).y1(Cv).y0(a):y=av().x(_v).y(Cv);var x=y.defined(OS).curve(u);return x(c)},rl=e=>{var t=e.className,r=e.points,n=e.path,o=e.pathRef,a=Ha();if((!r||!r.length)&&!n)return null;var i={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=r&&r.length?cue(i):n;return Y7.createElement("path",WO({},mn(e),Dm(e),{className:xt("recharts-curve",t),d:s===null?void 0:s,ref:o}))};var Z7=Z(J());var due=["x","y","top","left","width","height","className"];function HO(){return HO=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),J7=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=hue(e,due),y=pue({x:r,y:o,top:i,left:l,width:c,height:p},m);return!De(r)||!De(o)||!De(c)||!De(p)||!De(i)||!De(l)?null:Z7.createElement("path",HO({},gn(y),{className:xt("recharts-cross",f),d:vue(r,o,c,p,i,l)}))};function Q7(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 $S=Z(J()),Zi=Z(J());var Av=Z(J());var PS=1e-4,t9=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],r9=(e,t)=>e.map((r,n)=>r*t**n).reduce((r,n)=>r+n),R7=(e,t)=>r=>{var n=t9(e,t);return r9(n,r)},xue=(e,t)=>r=>{var n=t9(e,t),o=[...n.map((a,i)=>a*i).slice(1),0];return r9(o,r)},bue=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]]},wue=function(){for(var t=arguments.length,r=new Array(t),n=0;n{var o=R7(e,r),a=R7(t,n),i=xue(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))*_}},n9=e=>{if(typeof e=="string")switch(e){case"ease":case"ease-in-out":case"ease-out":case"ease-in":case"linear":return e9(e);case"spring":return kue();default:if(e.split("(")[0]==="cubic-bezier")return e9(e)}return typeof e=="function"?e:null};var rg=Z(J());var o9=(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 a9=(0,rg.createContext)(o9),rIe=a9.Provider;function i9(e){var t=(0,rg.useContext)(a9);return(0,rg.useMemo)(()=>e??t,[e,t])}function _ue(e,t,r){return(t=Cue(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Cue(e){var t=Aue(e,"string");return typeof t=="symbol"?t:t+""}function Aue(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 s9="init",l9="pending",u9="active",Eue="completed";function qO(e){return Math.max(0,e)}var KO=class{getAnimationStartedTime(){return this.animationStartedTime}getBeginStartedTime(){return this.beginStartedTime}constructor(t){var r;_ue(this,"state",s9),this.animationId=t.animationId,this.onAnimationEnd=t.onAnimationEnd,this.animationDuration=qO(t.animationDuration),this.animationBegin=qO(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()===s9)return this.state=l9,this.beginStartedTime=t,this.animationBegin;if(this.getState()===l9){if(this.beginStartedTime==null)throw new Error;var r=t-this.beginStartedTime;return r>=this.animationBegin?(this.state=u9,this.animationStartedTime=t,this.nextAnimationUpdate(0)):qO(this.animationBegin-r)}if(this.getState()===u9){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=Eue}getFrom(){return this.from}getTo(){return this.to}getAnimationId(){return this.animationId}getAnimationBegin(){return this.animationBegin}},MS=class extends KO{nextAnimationUpdate(){return 0}getInterpolated(){return this.easing(_r(this.getFrom(),this.getTo(),this.getProgress()))}};var IS=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 Nue(e,t){return Mue(e)||Pue(e,t)||Oue(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 Oue(e,t){if(e){if(typeof e=="string")return c9(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)?c9(e,t):void 0}}function c9(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{},onAnimationStart:()=>{}},d9=0,VO=1;function DS(e){var t=nr(e,Iue),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=NS(),p=n==="auto"?!Xi.isSsr&&!d:n,f=i9(t.animationController),m=(0,Av.useState)(p?d9:VO),y=Nue(m,2),x=y[0],h=y[1];return(0,Av.useEffect)(()=>{p||h(VO)},[p]),(0,Av.useEffect)(()=>{var g=n9(i);if(!p||!o||g==null)return Sa;var v=new IS,b=new MS({animationId:r,easing:g,animationDuration:a,animationBegin:s,onAnimationStart:u,onAnimationEnd:l,from:d9,to:VO});return f(v,b,h)},[f,r,p,o,a,i,s,u,l]),c(Number(x))}var GO=Z(J());function jS(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"animation-",r=(0,GO.useRef)(Zl(t)),n=(0,GO.useRef)(e);return n.current!==e&&(r.current=Zl(t),n.current=e),r.current}var Due=e=>e.replace(/([A-Z])/g,t=>"-".concat(t.toLowerCase())),p9=(e,t,r)=>e.map(n=>"".concat(Due(n)," ").concat(t,"ms ").concat(r)).join(",");var jue=["radius"],$ue=["radius"],f9,m9,g9,h9,y9,v9,x9,b9,w9,S9;function k9(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 _9(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{var a=Hi(r),i=Hi(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(f9||(f9=nl(["M",",",""])),e,t+l*p[0]),p[0]>0&&(d+=ko(m9||(m9=nl(["A ",",",",0,0,",",",",",""])),p[0],p[0],c,e+u*p[0],t)),d+=ko(g9||(g9=nl(["L ",",",""])),e+r-u*p[1],t),p[1]>0&&(d+=ko(h9||(h9=nl(["A ",",",",0,0,",`, + `,",",""])),p[1],p[1],c,e+r,t+l*p[1])),d+=ko(y9||(y9=nl(["L ",",",""])),e+r,t+n-l*p[2]),p[2]>0&&(d+=ko(v9||(v9=nl(["A ",",",",0,0,",`, + `,",",""])),p[2],p[2],c,e+r-u*p[2],t+n)),d+=ko(x9||(x9=nl(["L ",",",""])),e+u*p[3],t+n),p[3]>0&&(d+=ko(b9||(b9=nl(["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(w9||(w9=nl(["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=xo(V7||(V7=nl(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},Q7={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},wS=e=>{var t=rr(e,Q7),r=(0,Xi.useRef)(null),n=(0,Xi.useState)(-1),o=gue(n,2),a=o[0],i=o[1];(0,Xi.useEffect)(()=>{if(r.current&&r.current.getTotalLength)try{var T=r.current.getTotalLength();T&&i(T)}catch{}},[]);var s=t.x,l=t.y,u=t.width,c=t.height,d=t.radius,p=t.className,f=t.animationEasing,m=t.animationDuration,y=t.animationBegin,b=t.isAnimationActive,h=t.isUpdateAnimationActive,g=(0,Xi.useRef)(u),v=(0,Xi.useRef)(c),x=(0,Xi.useRef)(s),S=(0,Xi.useRef)(l),w=(0,Xi.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),A=vS(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var k=xt("recharts-rectangle",p);if(!h){var _=pn(t),C=_.radius,E=X7(_,uue);return xS.createElement("path",bS({},E,{x:Wi(s),y:Wi(l),width:Wi(u),height:Wi(c),radius:typeof d=="number"?d:void 0,className:k,d:J7(s,l,u,c,d)}))}var j=g.current,X=v.current,z=x.current,U=S.current,N="0px ".concat(a===-1?1:a,"px"),O="".concat(a,"px ").concat(a,"px"),D=$7(["strokeDasharray"],m,typeof f=="string"?f:Q7.animationEasing);return xS.createElement(yS,{animationId:A,key:A,canBegin:a>0,duration:m,easing:f,isActive:h,begin:y},T=>{var I=kr(j,u,T),P=kr(X,c,T),H=kr(z,s,T),G=kr(U,l,T);r.current&&(g.current=I,v.current=P,x.current=H,S.current=G);var L;b?T>0?L={transition:D,strokeDasharray:O}:L={strokeDasharray:N}:L={strokeDasharray:O};var Y=pn(t),W=Y.radius,ie=X7(Y,cue);return xS.createElement("path",bS({},ie,{radius:typeof d=="number"?d:void 0,className:k,d:J7(H,G,I,P,d),ref:r,style:Y7(Y7({},L),t.style)}))})};function R7(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function e9(e){for(var t=1;te*180/Math.PI,en=(e,t,r,n)=>({x:e+Math.cos(-fv*n)*r,y:t+Math.sin(-fv*n)*r}),SS=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},_ue=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Cue=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=_ue({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:kue(l),angleInRadian:l}},Aue=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}},Eue=(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},t9=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Cue({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=Aue(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?e9(e9({},t),{},{radius:a,angle:Eue(p,t)}):null};function kS(e){var t=e.cx,r=e.cy,n=e.radius,o=e.startAngle,a=e.endAngle,i=en(t,r,n,o),s=en(t,r,n,a);return{points:[i,s],cx:t,cy:r,radius:n,startAngle:o,endAngle:a}}var u9=Z(J());var r9,n9,o9,a9,i9,s9,l9;function AO(){return AO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Vr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},_S=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)/fv,d=l?o:o+a*c,p=en(t,r,u,d),f=en(t,r,n,d),m=l?o-a*c:o,y=en(t,r,u*Math.cos(c*fv),m);return{center:p,circleTangency:f,lineTangency:y,theta:c}},c9=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=Nue(a,i),l=a+s,u=en(t,r,o,a),c=en(t,r,o,l),d=xo(r9||(r9=Vd(["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=ko(S9||(S9=nl(["M ",","," h "," v "," h "," Z"])),e,t,r,n,-r);return d},N9={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},zS=e=>{var t=nr(e,N9),r=(0,Zi.useRef)(null),n=(0,Zi.useState)(-1),o=Uue(n,2),a=o[0],i=o[1];(0,Zi.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,Zi.useRef)(u),v=(0,Zi.useRef)(c),b=(0,Zi.useRef)(s),S=(0,Zi.useRef)(l),w=(0,Zi.useMemo)(()=>({x:s,y:l,width:u,height:c,radius:d}),[s,l,u,c,d]),_=jS(w,"rectangle-");if(s!==+s||l!==+l||u!==+u||c!==+c||u===0||c===0)return null;var k=xt("recharts-rectangle",p);if(!h){var A=gn(t),C=A.radius,E=C9(A,jue);return $S.createElement("path",LS({},E,{x:Hi(s),y:Hi(l),width:Hi(u),height:Hi(c),radius:typeof d=="number"?d:void 0,className:k,d:E9(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=p9(["strokeDasharray"],m,typeof f=="string"?f:N9.animationEasing);return $S.createElement(DS,{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),q=_r($,s,T),V=_r(F,l,T);r.current&&(g.current=D,v.current=M,b.current=q,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=C9(G,$ue);return $S.createElement("path",LS({},ie,{radius:typeof d=="number"?d:void 0,className:k,d:E9(q,V,D,M,d),ref:r,style:_9(_9({},L),t.style)}))})};function T9(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function O9(e){for(var t=1;te*180/Math.PI,nn=(e,t,r,n)=>({x:e+Math.cos(-Ev*n)*r,y:t+Math.sin(-Ev*n)*r}),BS=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},Zue=(e,t)=>{var r=e.x,n=e.y,o=t.x,a=t.y;return Math.sqrt((r-o)**2+(n-a)**2)},Jue=(e,t)=>{var r=e.x,n=e.y,o=t.cx,a=t.cy,i=Zue({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:Xue(l),angleInRadian:l}},Que=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}},Rue=(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},P9=(e,t)=>{var r=e.relativeX,n=e.relativeY,o=Jue({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=Que(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?O9(O9({},t),{},{radius:a,angle:Rue(p,t)}):null};function FS(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 B9=Z(J());var M9,I9,D9,j9,$9,L9,z9;function YO(){return YO=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=Yr(t-e),n=Math.min(Math.abs(t-e),359.999);return r*n},US=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)/Ev,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*Ev),m);return{center:p,circleTangency:f,lineTangency:y,theta:c}},F9=e=>{var t=e.cx,r=e.cy,n=e.innerRadius,o=e.outerRadius,a=e.startAngle,i=e.endAngle,s=ece(a,i),l=a+s,u=nn(t,r,o,a),c=nn(t,r,o,l),d=ko(M9||(M9=Rd(["M ",",",` A `,",",`,0, `,",",`, `,",",` - `])),u.x,u.y,o,o,+(Math.abs(s)>180),+(a>l),c.x,c.y);if(n>0){var p=en(t,r,n,a),f=en(t,r,n,l);d+=xo(n9||(n9=Vd(["L ",",",` + `])),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(I9||(I9=Rd(["L ",",",` A `,",",`,0, `,",",`, - `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=xo(o9||(o9=Vd(["L ",","," Z"])),t,r);return d},Tue=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=Vr(u-l),d=_S({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,y=_S({cx:t,cy:r,radius:o,angle:u,sign:-c,cornerRadius:a,cornerIsExternal:s}),b=y.circleTangency,h=y.lineTangency,g=y.theta,v=s?Math.abs(l-u):Math.abs(l-u)-m-g;if(v<0)return i?xo(a9||(a9=Vd(["M ",",",` + `,","," Z"])),f.x,f.y,n,n,+(Math.abs(s)>180),+(a<=l),p.x,p.y)}else d+=ko(D9||(D9=Rd(["L ",","," Z"])),t,r);return d},tce=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=Yr(u-l),d=US({cx:t,cy:r,radius:o,angle:l,sign:c,cornerRadius:a,cornerIsExternal:s}),p=d.circleTangency,f=d.lineTangency,m=d.theta,y=US({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(j9||(j9=Rd(["M ",",",` a`,",",",0,0,1,",`,0 a`,",",",0,0,1,",`,0 - `])),f.x,f.y,a,a,a*2,a,a,-a*2):c9({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var x=xo(i9||(i9=Vd(["M ",",",` + `])),f.x,f.y,a,a,a*2,a,a,-a*2):F9({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:u});var b=ko($9||($9=Rd(["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),b.x,b.y,a,a,+(c<0),h.x,h.y);if(n>0){var S=_S({cx:t,cy:r,radius:n,angle:l,sign:c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),w=S.circleTangency,A=S.lineTangency,k=S.theta,_=_S({cx:t,cy:r,radius:n,angle:u,sign:-c,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),C=_.circleTangency,E=_.lineTangency,j=_.theta,X=s?Math.abs(l-u):Math.abs(l-u)-k-j;if(X<0&&a===0)return"".concat(x,"L").concat(t,",").concat(r,"Z");x+=xo(s9||(s9=Vd(["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 S=US({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=US({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(L9||(L9=Rd(["L",",",` A`,",",",0,0,",",",",",` A`,",",",0,",",",",",",",` - A`,",",",0,0,",",",",","Z"])),E.x,E.y,a,a,+(c<0),C.x,C.y,n,n,+(X>180),+(c>0),w.x,w.y,a,a,+(c<0),A.x,A.y)}else x+=xo(l9||(l9=Vd(["L",",","Z"])),t,r);return x},Oue={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},CS=e=>{var t=rr(e,Oue),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=Tue({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=c9({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),u9.createElement("path",AO({},pn(t),{className:p,d:y}))};function d9(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(G1(t)){if(e==="centric"){var n=t.cx,o=t.cy,a=t.innerRadius,i=t.outerRadius,s=t.angle,l=en(n,o,a,s),u=en(n,o,i,s);return[{x:l.x,y:l.y},{x:u.x,y:u.y}]}return kS(t)}}function p9(e){return kw(e)?NaN:Number(e)}function AS(e){return e?(e=p9(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}function ES(e,t,r){r&&typeof r!="number"&&Jy(e,t,r)&&(t=r=void 0),e=AS(e),t===void 0?(t=e,e=0):t=AS(t),r=r===void 0?ee.chartData,Gd=ne([Ua],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Yd=(e,t,r,n)=>n?Gd(e):Ua(e),NS=(e,t,r)=>r?Gd(e):Ua(e),f9=ne([Yd],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),m9=ne([Gd],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),g9=ne([Ua],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function EO(e,t){return Due(e)||Iue(e,t)||Mue(e,t)||Pue()}function Pue(){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 Mue(e,t){if(e){if(typeof e=="string")return h9(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)?h9(e,t):void 0}}function h9(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=mv(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},MO=(e,t,r)=>{if(e.lte(0))return new br.default(0);var n=OO(e.toNumber()),o=new br.default(10).pow(n),a=e.div(o),i=n!==1?.05:.1,s=new br.default(Math.ceil(a.div(i).toNumber())).add(r).mul(i),l=s.mul(o);return t?new br.default(l.toNumber()):new br.default(Math.ceil(l.toNumber()))},S9=(e,t,r)=>{var n;if(e.lte(0))return new br.default(0);var o=[1,2,2.5,5],a=e.toNumber(),i=Math.floor(new br.default(a).abs().log(10).toNumber()),s=new br.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 br.default(10).pow(c))}var d=(n=o[u])!==null&&n!==void 0?n:1,p=new br.default(d).mul(s);return t?p:new br.default(Math.ceil(p.toNumber()))},Bue=(e,t,r)=>{var n=new br.default(1),o=new br.default(e);if(!o.isint()&&r){var a=Math.abs(e);a<1?(n=new br.default(10).pow(OO(e)-1),o=new br.default(Math.floor(o.div(n).toNumber())).mul(n)):a>1&&(o=new br.default(Math.floor(e)))}else e===0?o=new br.default(Math.floor((t-1)/2)):r||(o=new br.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]:MO;if(!Number.isFinite((r-t)/(n-1)))return{step:new br.default(0),tickMin:new br.default(0),tickMax:new br.default(0)};var s=i(new br.default(r).sub(t).div(n-1),o,a),l;t<=0&&r>=0?l=new br.default(0):(l=new br.default(t).add(r).div(2),l=l.sub(new br.default(l).mod(s)));var u=Math.ceil(l.sub(t).div(s).toNumber()),c=Math.ceil(new br.default(r).sub(l).div(s).toNumber()),d=u+c+1;return d>n?k9(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 br.default(u).mul(s)),tickMax:l.add(new br.default(c).mul(s))})};var PS=function(t){var r=mv(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=w9([n,o]),c=mv(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 Bue(d,a,i);var m=s==="snap125"?S9:MO,y=k9(d,p,l,i,0,m),b=y.step,h=y.tickMin,g=y.tickMax,v=PO(h,g.add(new br.default(.1).mul(b)),b);return n>o?v.reverse():v},MS=function(t,r){var n=mv(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=w9([o,a]),u=mv(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"?S9:MO,f=Math.max(r,2),m=p(new br.default(d).sub(c).div(f-1),i,0),y=[...PO(new br.default(c),new br.default(d),m),d];if(i===!1){y=y.map(h=>Math.round(h));var b=y.length-1;b>0&&y[b]===y[b-1]&&(y=y.slice(0,b))}return o>a?y.reverse():y};var IO=e=>e.rootProps.maxBarSize,_9=e=>e.rootProps.barGap,IS=e=>e.rootProps.barCategoryGap,C9=e=>e.rootProps.barSize,xc=e=>e.rootProps.stackOffset,DS=e=>e.rootProps.reverseStackOrder,Xm=e=>e.options.chartName,jS=e=>e.rootProps.syncId,DO=e=>e.rootProps.syncMethod,$S=e=>e.options.eventEmitter,A9=e=>e.rootProps.baseValue;var ar={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 bc={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:ar.axis};var As={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:ar.axis};var Xd=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function Zd(e,t,r){if(r!=="auto")return r;if(e!=null)return ra(e,t)?"category":"number"}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 LS(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},zS=ne([Hue,sS],(e,t)=>{var r;if(e!=null)return e;var n=(r=Zd(t,"angleAxis",N9.type))!==null&&r!==void 0?r:"category";return LS(LS({},N9),{},{type:n})}),que=(e,t)=>e.polarAxis.radiusAxis[t],BS=ne([que,sS],(e,t)=>{var r;if(e!=null)return e;var n=(r=Zd(t,"radiusAxis",T9.type))!==null&&r!==void 0?r:"category";return LS(LS({},T9),{},{type:n})}),FS=e=>e.polarOptions,jO=ne([Lo,zo,Br],SS),O9=ne([FS,jO],(e,t)=>{if(e!=null)return On(e.innerRadius,t,0)}),P9=ne([FS,jO],(e,t)=>{if(e!=null)return On(e.outerRadius,t,t*.8)}),Kue=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},$O=ne([FS],Kue),tDe=ne([zS,$O],Xd),LO=ne([jO,O9,P9],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),rDe=ne([BS,LO],Xd),US=ne([Lt,FS,O9,P9,Lo,zo],(e,t,r,n,o,a)=>{if(!(e!=="centric"&&e!=="radial"||t==null||r==null||n==null)){var i=t.cx,s=t.cy,l=t.startAngle,u=t.endAngle;return{cx:On(i,o,o/2),cy:On(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var fn=(e,t)=>t;var Jd=(e,t,r)=>r;function wc(e){return e?.id}function WS(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=wc(l);c.forEach((p,f)=>{var m=i==null||a?f:String(Ut(p,i,null)),y=Ut(p,l.dataKey,0),b;s.has(m)?b=s.get(m):b={},Object.assign(b,{[d]:y}),s.set(m,b)})}}),Array.from(s.values())}function Qd(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var Rd=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function Zm(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function M9(e,t){if(e.length===t.length){for(var r=0;r{var t=Lt(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var Sc=e=>e.tooltip.settings.axisId;function gv(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 HS=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!vi(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 $v={};Bee($v,{scaleBand:()=>xv,scaleDiverging:()=>_k,scaleDivergingLog:()=>hP,scaleDivergingPow:()=>Ck,scaleDivergingSqrt:()=>eU,scaleDivergingSymlog:()=>yP,scaleIdentity:()=>lk,scaleImplicit:()=>ZS,scaleLinear:()=>sk,scaleLog:()=>uk,scaleOrdinal:()=>Rm,scalePoint:()=>B9,scalePow:()=>Ov,scaleQuantile:()=>pk,scaleQuantize:()=>fk,scaleRadial:()=>dk,scaleSequential:()=>bk,scaleSequentialLog:()=>mP,scaleSequentialPow:()=>wk,scaleSequentialQuantile:()=>Sk,scaleSequentialSqrt:()=>RF,scaleSequentialSymlog:()=>gP,scaleSqrt:()=>wF,scaleSymlog:()=>ck,scaleThreshold:()=>mk,scaleTime:()=>pP,scaleUtc:()=>fP,tickFormat:()=>Cv});function ba(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function zO(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function ep(e){let t,r,n;e.length!==2?(t=ba,r=(s,l)=>ba(e(s),l),n=(s,l)=>e(s)-l):(t=e===ba||e===zO?e:Vue,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 Vue(){return 0}function hv(e){return e===null?NaN:+e}function*I9(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 D9=ep(ba),j9=D9.right,Gue=D9.left,Yue=ep(hv).center,Es=j9;var Jm=class extends Map{constructor(t,r=Jue){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($9(this,t))}has(t){return super.has($9(this,t))}set(t,r){return super.set(Xue(this,t),r)}delete(t){return super.delete(Zue(this,t))}};function $9({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function Xue({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Zue({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function Jue(e){return e!==null&&typeof e=="object"?e.valueOf():e}function L9(e=ba){if(e===ba)return BO;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 BO(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var Que=Math.sqrt(50),Rue=Math.sqrt(10),ece=Math.sqrt(2);function qS(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>=Que?10:a>=Rue?5:a>=ece?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 VS(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 GS(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?BO:L9(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));GS(e,t,f,m,o)}let a=e[t],i=r,s=n;for(vv(e,r,t),o(e[n],a)>0&&vv(e,r,n);i0;)--s}o(e[r],a)===0?vv(e,r,s):(++s,vv(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function vv(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function YS(e,t,r){if(e=Float64Array.from(I9(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return VS(e);if(t>=1)return KS(e);var n,o=(n-1)*t,a=Math.floor(o),i=KS(GS(e,a).subarray(0,a+1)),s=VS(e.subarray(a+1));return i+(s-i)*(o-a)}}function FO(e,t,r=hv){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 XS(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?QS(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?QS(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=rce.exec(e))?new Wa(t[1],t[2],t[3],1):(t=nce.exec(e))?new Wa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=oce.exec(e))?QS(t[1],t[2],t[3],t[4]):(t=ace.exec(e))?QS(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=ice.exec(e))?V9(t[1],t[2]/100,t[3]/100,1):(t=sce.exec(e))?V9(t[1],t[2]/100,t[3]/100,t[4]):F9.hasOwnProperty(e)?H9(F9[e]):e==="transparent"?new Wa(NaN,NaN,NaN,0):null}function H9(e){return new Wa(e>>16&255,e>>8&255,e&255,1)}function QS(e,t,r,n){return n<=0&&(e=t=r=NaN),new Wa(e,t,r,n)}function cce(e){return e instanceof Sv||(e=kc(e)),e?(e=e.rgb(),new Wa(e.r,e.g,e.b,e.opacity)):new Wa}function tg(e,t,r,n){return arguments.length===1?cce(e):new Wa(e,t,r,n??1)}function Wa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}JS(Wa,tg,UO(Sv,{brighter(e){return e=e==null?ek:Math.pow(ek,e),new Wa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?bv:Math.pow(bv,e),new Wa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Wa(np(this.r),np(this.g),np(this.b),tk(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:q9,formatHex:q9,formatHex8:dce,formatRgb:K9,toString:K9}));function q9(){return`#${rp(this.r)}${rp(this.g)}${rp(this.b)}`}function dce(){return`#${rp(this.r)}${rp(this.g)}${rp(this.b)}${rp((isNaN(this.opacity)?1:this.opacity)*255)}`}function K9(){let e=tk(this.opacity);return`${e===1?"rgb(":"rgba("}${np(this.r)}, ${np(this.g)}, ${np(this.b)}${e===1?")":`, ${e})`}`}function tk(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function np(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function rp(e){return e=np(e),(e<16?"0":"")+e.toString(16)}function V9(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ns(e,t,r,n)}function Y9(e){if(e instanceof Ns)return new Ns(e.h,e.s,e.l,e.opacity);if(e instanceof Sv||(e=kc(e)),!e)return new Ns;if(e instanceof Ns)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 Ns(i,s,l,e.opacity)}function X9(e,t,r,n){return arguments.length===1?Y9(e):new Ns(e,t,r,n??1)}function Ns(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}JS(Ns,X9,UO(Sv,{brighter(e){return e=e==null?ek:Math.pow(ek,e),new Ns(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?bv:Math.pow(bv,e),new Ns(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 Wa(WO(e>=240?e-240:e+120,o,n),WO(e,o,n),WO(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Ns(G9(this.h),RS(this.s),RS(this.l),tk(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=tk(this.opacity);return`${e===1?"hsl(":"hsla("}${G9(this.h)}, ${RS(this.s)*100}%, ${RS(this.l)*100}%${e===1?")":`, ${e})`}`}}));function G9(e){return e=(e||0)%360,e<0?e+360:e}function RS(e){return Math.max(0,Math.min(1,e||0))}function WO(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 HO(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 Z9(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 pce(e,t){return function(r){return e+r*t}}function fce(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 Q9(e){return(e=+e)==1?rk:function(t,r){return r-t?fce(t,r,e):kv(isNaN(t)?r:t)}}function rk(e,t){var r=t-e;return r?pce(e,r):kv(isNaN(e)?t:e)}var qO=(function e(t){var r=Q9(t);function n(o,a){var i=r((o=tg(o)).r,(a=tg(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=rk(o.opacity,a.opacity);return function(c){return o.r=i(c),o.g=s(c),o.b=l(c),o.opacity=u(c),o+""}}return n.gamma=e,n})(1);function R9(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:_c(n,o)})),r=KO.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function yce(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?vce:yce,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),_c)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,Cc),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=op,c()},d.clamp=function(p){return arguments.length?(i=p?!0:wo,c()):i!==wo},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 ip(){return ap()(wo,wo)}function sF(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function sp(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 il(e){return e=sp(Math.abs(e)),e?e[1]:NaN}function lF(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 uF(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var xce=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function sl(e){if(!(t=xce.exec(e)))throw new Error("invalid format: "+e);var t;return new ok({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}sl.prototype=ok.prototype;function ok(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+""}ok.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 cF(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 _v;function dF(e,t){var r=sp(e,t);if(!r)return _v=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(_v=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")+sp(e,Math.max(0,t+a-1))[0]}function XO(e,t){var r=sp(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 ZO={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:sF,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)=>XO(e*100,t),r:XO,s:dF,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function JO(e){return e}var pF=Array.prototype.map,fF=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function mF(e){var t=e.grouping===void 0||e.thousands===void 0?JO:lF(pF.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?JO:uF(pF.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d,p){d=sl(d);var f=d.fill,m=d.align,y=d.sign,b=d.symbol,h=d.zero,g=d.width,v=d.comma,x=d.precision,S=d.trim,w=d.type;w==="n"?(v=!0,w="g"):ZO[w]||(x===void 0&&(x=12),S=!0,w="g"),(h||f==="0"&&m==="=")&&(h=!0,f="0",m="=");var A=(p&&p.prefix!==void 0?p.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():""),k=(b==="$"?n:/[%p]/.test(w)?i:"")+(p&&p.suffix!==void 0?p.suffix:""),_=ZO[w],C=/[defgprs%]/.test(w);x=x===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function E(j){var X=A,z=k,U,N,O;if(w==="c")z=_(j)+z,j="";else{j=+j;var D=j<0||1/j<0;if(j=isNaN(j)?l:_(Math.abs(j),x),S&&(j=cF(j)),D&&+j==0&&y!=="+"&&(D=!1),X=(D?y==="("?y:s:y==="-"||y==="("?"":y)+X,z=(w==="s"&&!isNaN(j)&&_v!==void 0?fF[8+_v/3]:"")+z+(D&&y==="("?")":""),C){for(U=-1,N=j.length;++UO||O>57){z=(O===46?o+j.slice(U+1):j.slice(U))+z,j=j.slice(0,U);break}}}v&&!h&&(j=t(j,1/0));var T=X.length+j.length+z.length,I=T>1)+X+j+z+I.slice(T);break;default:j=I+X+j+z;break}return a(j)}return E.toString=function(){return d+""},E}function c(d,p){var f=Math.max(-8,Math.min(8,Math.floor(il(p)/3)))*3,m=Math.pow(10,-f),y=u((d=sl(d),d.type="f",d),{suffix:fF[8+f/3]});return function(b){return y(m*b)}}return{format:u,formatPrefix:c}}var ak,rg,ik;QO({thousands:",",grouping:[3],currency:["$",""]});function QO(e){return ak=mF(e),rg=ak.format,ik=ak.formatPrefix,ak}function RO(e){return Math.max(0,-il(Math.abs(e)))}function eP(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(il(t)/3)))*3-il(Math.abs(e)))}function tP(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,il(t)-il(e))+1}function Cv(e,t,r,n){var o=Qm(e,t,r),a;switch(n=sl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=eP(o,i))&&(n.precision=a),ik(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=tP(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=RO(o))&&(n.precision=a-(n.type==="%")*2);break}}return rg(n)}function wa(e){var t=e.domain;return e.ticks=function(r){var n=t();return tp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Cv(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=yv(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 sk(){var e=ip();return e.copy=function(){return al(e,sk())},Sn.apply(e,arguments),wa(e)}function lk(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,Cc),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return lk(e).unknown(t)},e=arguments.length?Array.from(e,Cc):[0,1],wa(r)}function Av(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 _ce(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 yF(e){return(t,r)=>-e(-t,r)}function Ev(e){let t=e(gF,hF),r=t.domain,n=10,o,a;function i(){return o=_ce(n),a=kce(n),r()[0]<0?(o=yF(o),a=yF(a),e(bce,wce)):e(gF,hF),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=sl(l)).precision==null&&(l.trim=!0),l=rg(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(Av(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function uk(){let e=Ev(ap()).domain([1,10]);return e.copy=()=>al(e,uk()).base(e.base()),Sn.apply(e,arguments),e}function vF(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function xF(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Nv(e){var t=1,r=e(vF(t),xF(t));return r.constant=function(n){return arguments.length?e(vF(t=+n),xF(t)):t},wa(r)}function ck(){var e=Nv(ap());return e.copy=function(){return al(e,ck()).constant(e.constant())},Sn.apply(e,arguments)}function bF(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Cce(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Ace(e){return e<0?-e*e:e*e}function Tv(e){var t=e(wo,wo),r=1;function n(){return r===1?e(wo,wo):r===.5?e(Cce,Ace):e(bF(r),bF(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},wa(t)}function Ov(){var e=Tv(ap());return e.copy=function(){return al(e,Ov()).exponent(e.exponent())},Sn.apply(e,arguments),e}function wF(){return Ov.apply(null,arguments).exponent(.5)}function SF(e){return Math.sign(e)*e*e}function Ece(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function dk(){var e=ip(),t=[0,1],r=!1,n;function o(a){var i=Ece(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(SF(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,Cc)).map(SF)),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 dk(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},Sn.apply(o,arguments),wa(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 fk().domain([e,t]).range(o).unknown(a)},Sn.apply(wa(i),arguments)}function mk(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Es(e,a,0,n)]:r}return o.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),o):e.slice()},o.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),o):t.slice()},o.invertExtent=function(a){var i=t.indexOf(a);return[e[i-1],e[i]]},o.unknown=function(a){return arguments.length?(r=a,o):r},o.copy=function(){return mk().domain(e).range(t).unknown(r)},Sn.apply(o,arguments)}var rP=new Date,nP=new Date;function Gr(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(uGr(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)=>(rP.setTime(+a),nP.setTime(+i),e(rP),e(nP),Math.floor(r(rP,nP))),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 Pv=Gr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Pv.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Gr(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Pv);var Dje=Pv.range;var Ji=Gr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),kF=Ji.range;var ng=Gr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),Nce=ng.range,og=Gr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),Tce=og.range;var ag=Gr(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()),Oce=ag.range,ig=Gr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),Pce=ig.range;var ou=Gr(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),Mce=ou.range,cp=Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),Ice=cp.range,gk=Gr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),Dce=gk.range;function dp(e){return Gr(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 au=dp(0),sg=dp(1),CF=dp(2),AF=dp(3),Ac=dp(4),EF=dp(5),NF=dp(6),TF=au.range,jce=sg.range,$ce=CF.range,Lce=AF.range,zce=Ac.range,Bce=EF.range,Fce=NF.range;function pp(e){return Gr(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 iu=pp(0),lg=pp(1),OF=pp(2),PF=pp(3),Ec=pp(4),MF=pp(5),IF=pp(6),DF=iu.range,Uce=lg.range,Wce=OF.range,Hce=PF.range,qce=Ec.range,Kce=MF.range,Vce=IF.range;var ug=Gr(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()),Gce=ug.range,cg=Gr(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()),Yce=cg.range;var bi=Gr(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());bi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Gr(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 Xce=bi.range,wi=Gr(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());wi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Gr(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 Zce=wi.range;function $F(e,t,r,n,o,a){let i=[[Ji,1,1e3],[Ji,5,5*1e3],[Ji,15,15*1e3],[Ji,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[o,1,36e5],[o,3,3*36e5],[o,6,6*36e5],[o,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function s(u,c,d){let p=cb).right(i,p);if(f===i.length)return e.every(Qm(u/31536e6,c/31536e6,d));if(f===0)return Pv.every(Math.max(Qm(u,c,d),1));let[m,y]=i[p/i[f-1][2]53)return null;"w"in ee||(ee.w=1),"Z"in ee?(B=uP(Iv(ee.y,0,1)),K=B.getUTCDay(),B=K>4||K===0?lg.ceil(B):lg(B),B=cp.offset(B,(ee.V-1)*7),ee.y=B.getUTCFullYear(),ee.m=B.getUTCMonth(),ee.d=B.getUTCDate()+(ee.w+6)%7):(B=lP(Iv(ee.y,0,1)),K=B.getDay(),B=K>4||K===0?sg.ceil(B):sg(B),B=ou.offset(B,(ee.V-1)*7),ee.y=B.getFullYear(),ee.m=B.getMonth(),ee.d=B.getDate()+(ee.w+6)%7)}else("W"in ee||"U"in ee)&&("w"in ee||(ee.w="u"in ee?ee.u%7:"W"in ee?1:0),K="Z"in ee?uP(Iv(ee.y,0,1)).getUTCDay():lP(Iv(ee.y,0,1)).getDay(),ee.m=0,ee.d="W"in ee?(ee.w+6)%7+ee.W*7-(K+5)%7:ee.w+ee.U*7-(K+6)%7);return"Z"in ee?(ee.H+=ee.Z/100|0,ee.M+=ee.Z%100,uP(ee)):lP(ee)}}function k(pe,ce,Q,ee){for(var $=0,B=ce.length,K=Q.length,M,ae;$=K)return-1;if(M=ce.charCodeAt($++),M===37){if(M=ce.charAt($++),ae=S[M in LF?ce.charAt($++):M],!ae||(ee=ae(pe,Q,ee))<0)return-1}else if(M!=Q.charCodeAt(ee++))return-1}return ee}function _(pe,ce,Q){var ee=u.exec(ce.slice(Q));return ee?(pe.p=c.get(ee[0].toLowerCase()),Q+ee[0].length):-1}function C(pe,ce,Q){var ee=f.exec(ce.slice(Q));return ee?(pe.w=m.get(ee[0].toLowerCase()),Q+ee[0].length):-1}function E(pe,ce,Q){var ee=d.exec(ce.slice(Q));return ee?(pe.w=p.get(ee[0].toLowerCase()),Q+ee[0].length):-1}function j(pe,ce,Q){var ee=h.exec(ce.slice(Q));return ee?(pe.m=g.get(ee[0].toLowerCase()),Q+ee[0].length):-1}function X(pe,ce,Q){var ee=y.exec(ce.slice(Q));return ee?(pe.m=b.get(ee[0].toLowerCase()),Q+ee[0].length):-1}function z(pe,ce,Q){return k(pe,t,ce,Q)}function U(pe,ce,Q){return k(pe,r,ce,Q)}function N(pe,ce,Q){return k(pe,n,ce,Q)}function O(pe){return i[pe.getDay()]}function D(pe){return a[pe.getDay()]}function T(pe){return l[pe.getMonth()]}function I(pe){return s[pe.getMonth()]}function P(pe){return o[+(pe.getHours()>=12)]}function H(pe){return 1+~~(pe.getMonth()/3)}function G(pe){return i[pe.getUTCDay()]}function L(pe){return a[pe.getUTCDay()]}function Y(pe){return l[pe.getUTCMonth()]}function W(pe){return s[pe.getUTCMonth()]}function ie(pe){return o[+(pe.getUTCHours()>=12)]}function Me(pe){return 1+~~(pe.getUTCMonth()/3)}return{format:function(pe){var ce=w(pe+="",v);return ce.toString=function(){return pe},ce},parse:function(pe){var ce=A(pe+="",!1);return ce.toString=function(){return pe},ce},utcFormat:function(pe){var ce=w(pe+="",x);return ce.toString=function(){return pe},ce},utcParse:function(pe){var ce=A(pe+="",!0);return ce.toString=function(){return pe},ce}}}var LF={"-":"",_:" ",0:"0"},Bo=/^\s*\d+/,Qce=/^%/,Rce=/[\\^$*+?|[\]().{}]/g;function Ar(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function tde(e,t,r){var n=Bo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function rde(e,t,r){var n=Bo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function nde(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function ode(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function ade(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function zF(e,t,r){var n=Bo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function BF(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function ide(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 sde(e,t,r){var n=Bo.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function lde(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function FF(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function ude(e,t,r){var n=Bo.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function UF(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function cde(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function dde(e,t,r){var n=Bo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function pde(e,t,r){var n=Bo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function fde(e,t,r){var n=Bo.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function mde(e,t,r){var n=Qce.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function gde(e,t,r){var n=Bo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function hde(e,t,r){var n=Bo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function WF(e,t){return Ar(e.getDate(),t,2)}function yde(e,t){return Ar(e.getHours(),t,2)}function vde(e,t){return Ar(e.getHours()%12||12,t,2)}function xde(e,t){return Ar(1+ou.count(bi(e),e),t,3)}function GF(e,t){return Ar(e.getMilliseconds(),t,3)}function bde(e,t){return GF(e,t)+"000"}function wde(e,t){return Ar(e.getMonth()+1,t,2)}function Sde(e,t){return Ar(e.getMinutes(),t,2)}function kde(e,t){return Ar(e.getSeconds(),t,2)}function _de(e){var t=e.getDay();return t===0?7:t}function Cde(e,t){return Ar(au.count(bi(e)-1,e),t,2)}function YF(e){var t=e.getDay();return t>=4||t===0?Ac(e):Ac.ceil(e)}function Ade(e,t){return e=YF(e),Ar(Ac.count(bi(e),e)+(bi(e).getDay()===4),t,2)}function Ede(e){return e.getDay()}function Nde(e,t){return Ar(sg.count(bi(e)-1,e),t,2)}function Tde(e,t){return Ar(e.getFullYear()%100,t,2)}function Ode(e,t){return e=YF(e),Ar(e.getFullYear()%100,t,2)}function Pde(e,t){return Ar(e.getFullYear()%1e4,t,4)}function Mde(e,t){var r=e.getDay();return e=r>=4||r===0?Ac(e):Ac.ceil(e),Ar(e.getFullYear()%1e4,t,4)}function Ide(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Ar(t/60|0,"0",2)+Ar(t%60,"0",2)}function HF(e,t){return Ar(e.getUTCDate(),t,2)}function Dde(e,t){return Ar(e.getUTCHours(),t,2)}function jde(e,t){return Ar(e.getUTCHours()%12||12,t,2)}function $de(e,t){return Ar(1+cp.count(wi(e),e),t,3)}function XF(e,t){return Ar(e.getUTCMilliseconds(),t,3)}function Lde(e,t){return XF(e,t)+"000"}function zde(e,t){return Ar(e.getUTCMonth()+1,t,2)}function Bde(e,t){return Ar(e.getUTCMinutes(),t,2)}function Fde(e,t){return Ar(e.getUTCSeconds(),t,2)}function Ude(e){var t=e.getUTCDay();return t===0?7:t}function Wde(e,t){return Ar(iu.count(wi(e)-1,e),t,2)}function ZF(e){var t=e.getUTCDay();return t>=4||t===0?Ec(e):Ec.ceil(e)}function Hde(e,t){return e=ZF(e),Ar(Ec.count(wi(e),e)+(wi(e).getUTCDay()===4),t,2)}function qde(e){return e.getUTCDay()}function Kde(e,t){return Ar(lg.count(wi(e)-1,e),t,2)}function Vde(e,t){return Ar(e.getUTCFullYear()%100,t,2)}function Gde(e,t){return e=ZF(e),Ar(e.getUTCFullYear()%100,t,2)}function Yde(e,t){return Ar(e.getUTCFullYear()%1e4,t,4)}function Xde(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Ec(e):Ec.ceil(e),Ar(e.getUTCFullYear()%1e4,t,4)}function Zde(){return"+0000"}function qF(){return"%"}function KF(e){return+e}function VF(e){return Math.floor(+e/1e3)}var dg,hk,JF,yk,QF;dP({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 dP(e){return dg=cP(e),hk=dg.format,JF=dg.parse,yk=dg.utcFormat,QF=dg.utcParse,dg}function Jde(e){return new Date(e)}function Qde(e){return e instanceof Date?+e:+new Date(+e)}function vk(e,t,r,n,o,a,i,s,l,u){var c=ip(),d=c.invert,p=c.domain,f=u(".%L"),m=u(":%S"),y=u("%I:%M"),b=u("%I %p"),h=u("%a %d"),g=u("%b %d"),v=u("%B"),x=u("%Y");function S(w){return(l(w)t(o/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(o,a)=>YS(e,a/n))},r.copy=function(){return Sk(t).domain(e)},Zi.apply(r,arguments)}function kk(){var e=0,t=.5,r=1,n=1,o,a,i,s,l,u=wo,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 tpe(n)?n:"point"}};function rpe(e,t){for(var r=0,n=e.length,o=e[0]t)?r=a+1:n=a}return r}function Ek(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=rpe(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 rU(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):Ek(e,void 0)}function nU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Nk(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],ul=(e,t)=>{var r=xP(e,t);return r??Jn},Qn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:vP,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:Ud},bP=(e,t)=>e.cartesianAxis.yAxis[t],cl=(e,t)=>{var r=bP(e,t);return r??Qn},cpe={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:""},wP=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??cpe},kn=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);case"zAxis":return wP(e,r);case"angleAxis":return zS(e,r);case"radiusAxis":return BS(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},dpe=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},fp=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);case"angleAxis":return zS(e,r);case"radiusAxis":return BS(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},SP=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function Bv(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 Nc=e=>e.graphicalItems.cartesianItems,ppe=ne([fn,Jd],Bv),Fv=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),fg=ne([Nc,kn,ppe],Fv,{memoizeOptions:{resultEqualityCheck:Zm}}),sU=ne([fg],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(Qd)),kP=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),fpe=ne([fg],kP),Uv=e=>e.map(t=>t.data).filter(Boolean).flat(1),mpe=ne([fg],e=>e.some(t=>!t.data)),lU=ne([fg],Uv,{memoizeOptions:{resultEqualityCheck:Zm}}),Wv=(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)},_P=ne([lU,Yd],Wv),CP=(e,t,r)=>t?.dataKey!=null?e.map(n=>({value:Ut(n,t.dataKey)})):r.length>0?r.map(n=>n.dataKey).flatMap(n=>e.map(o=>({value:Ut(o,n)}))):e.map(n=>({value:n})),AP=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=CP(e,t,r);if(o&&t?.dataKey!=null&&a.length>0){var d=s.slice(l,u+1),p=d.map(f=>({value:Ut(f,t.dataKey)})).filter(f=>f.value!=null);return[...p,...c]}return c},Hv=ne([_P,kn,fg,Yd,mpe,lU],AP);function pg(e){if(ya(e)||e instanceof Date){var t=Number(e);if(Tt(t))return t}}function aU(e){if(Array.isArray(e)){var t=[pg(e[0]),pg(e[1])];return vi(t)?t:void 0}var r=pg(e);if(r!=null)return[r,r]}function Ts(e){return e.map(pg).filter(bo)}function gpe(e,t){var r=pg(e),n=pg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var hpe=ne([Hv],e=>e?.map(t=>t.value).sort(gpe));function uU(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function ype(e,t,r){if(!r)return[];if(!r.length)return[];var n;if(typeof t=="number"&&!jo(t))n=t;else if(Array.isArray(t)){var o=Ts(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:Ts(r.flatMap(a=>{var i=Ut(e,a.dataKey),s,l;if(Array.isArray(i)){var u=iU(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Tt(s)||!Tt(l)))return[n-s,n+l]}))}var Rn=e=>{var t=Zn(e),r=Sc(e);return fp(e,t,r)},lu=ne([Rn],e=>e?.dataKey),vpe=ne([sU,Yd,Rn],WS),EP=(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=iU(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(wc);return[l,{stackedData:SB(e,d,r),graphicalItems:c}]}))},mg=ne([vpe,sU,xc,DS],EP),NP=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return _B(e,o,a)},xpe=ne([kn],e=>e.allowDataOverflow),Tk=e=>{var t;if(e==null||!("domain"in e))return vP;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=Ts(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:vP},Ok=ne([kn],Tk),Pk=ne([Ok,xpe],TS),bpe=ne([mg,Ua,fn,Pk],NP,{memoizeOptions:{resultEqualityCheck:Rd}}),gg=e=>e.errorBars,wpe=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>uU(r,n)),zv=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=>uU(a,f));d.forEach(f=>{var m,y=Ut(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),b=ype(f,y,p);if(b.length>=2){var h=Math.min(...b),g=Math.max(...b);(s==null||hl)&&(l=g)}var v=aU(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=aU(Ut(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]))}),Tt(s)&&Tt(l))return[s,l]},Spe=ne([_P,kn,fpe,gg,fn,f9],qv,{memoizeOptions:{resultEqualityCheck:Rd}});function kpe(e){var t=e.value;if(ya(t)||t instanceof Date)return t}var _pe=(e,t,r)=>{var n=e.map(kpe).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&QN(n))?ES(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},TP=e=>e.referenceElements.dots,mp=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Cpe=ne([TP,fn,Jd],mp),OP=e=>e.referenceElements.areas,Ape=ne([OP,fn,Jd],mp),PP=e=>e.referenceElements.lines,Epe=ne([PP,fn,Jd],mp),MP=(e,t)=>{if(e!=null){var r=Ts(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Npe=ne(Cpe,fn,MP),IP=(e,t)=>{if(e!=null){var r=Ts(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)]}},Tpe=ne([Ape,fn],IP);function Ope(e){var t;if(e.x!=null)return Ts([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:Ts(r)}function Ppe(e){var t;if(e.y!=null)return Ts([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:Ts(r)}var DP=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?Ope(n):Ppe(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},Mpe=ne([Epe,fn],DP),Ipe=ne(Npe,Mpe,Tpe,(e,t,r)=>zv(e,r,t)),Kv=(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?zv(n,a,o):zv(a,o),d=v9(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},Dpe=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=Ts(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},jpe=ne([kn],Dpe,{memoizeOptions:{resultEqualityCheck:Rd}}),$pe=ne([kn,Ok,Pk,bpe,Spe,Ipe,Lt,fn,jpe],Kv,{memoizeOptions:{resultEqualityCheck:Rd}}),Lpe=[0,1],Vv=(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=ra(t,a);if(u&&s==null){var c;return ES(0,(c=r?.length)!==null&&c!==void 0?c:0)}return l==="category"?_pe(n,e,u):o==="expand"&&!u?Lpe:i}},jP=ne([kn,Lt,_P,Hv,xc,fn,$pe],Vv),uu=ne([kn,SP,Xm],Ak),Gv=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=Tk(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&vi(e)){if(a)return PS(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return MS(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&vi(e))return PS(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&vi(e))return MS(e,t.tickCount,t.allowDecimals,"adaptive")}}},$P=ne([jP,fp,uu],Gv),Yv=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&vi(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},zpe=ne([kn,jP,$P,fn],Yv),Bpe=ne(Hv,kn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(Ts(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(!Tt(e))return 0;var a=t==="vertical"?n.height:n.width;if(o==="gap")return e*a/2;if(o==="no-gap"){var i=On(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),Fpe=(e,t,r)=>{var n=ul(e,t);return n==null||typeof n.padding!="string"?0:cU(e,"xAxis",t,r,n.padding)},Upe=(e,t,r)=>{var n=cl(e,t);return n==null||typeof n.padding!="string"?0:cU(e,"yAxis",t,r,n.padding)},Wpe=ne(ul,Fpe,(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}}),Hpe=ne(cl,Upe,(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}}),LP=ne([Br,Wpe,Wd,Fm,(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]}),zP=ne([Br,Lt,Hpe,Wd,Fm,(e,t,r)=>r],(e,t,r,n,o,a)=>{var i=o.padding;return a?[n.height-i.bottom,i.top]:t==="horizontal"?[e.top+e.height-r.bottom,e.top+r.top]:[e.top+r.top,e.top+e.height-r.bottom]}),hg=(e,t,r,n)=>{var o;switch(t){case"xAxis":return LP(e,r,n);case"yAxis":return zP(e,r,n);case"zAxis":return(o=wP(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return $O(e);case"radiusAxis":return LO(e,r);default:return}},dU=ne([kn,hg],Xd),qpe=ne([uu,zpe],HS),BP=ne([kn,uu,qpe,dU],Lv),FP=(e,t,r,n)=>{if(!(r==null||r.dataKey==null)){var o=r.type,a=r.scale,i=ra(e,n);if(i&&(o==="number"||a!=="auto"))return t.map(s=>s.value)}},UP=ne([Lt,Hv,fp,fn],FP),Mk=ne([BP],gv),n8e=ne([BP],rU),o8e=ne([BP,hpe],Ek),a8e=ne([fg,gg,fn],wpe);function pU(e,t){return e.idt.id?1:0}var Ik=(e,t)=>t,Dk=(e,t,r)=>r,Kpe=ne(Lm,Ik,Dk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(pU)),Vpe=ne(zm,Ik,Dk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(pU)),fU=(e,t)=>{var r=typeof t.height=="number"?t.height:ov;return{width:e.width,height:r}},Gpe=(e,t)=>{var r=typeof t.width=="number"?t.width:Ud;return{width:r,height:e.height}},WP=ne(Br,ul,fU),Ype=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},Xpe=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},Zpe=ne(zo,Br,Kpe,Ik,Dk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=fU(t,s);i==null&&(i=Ype(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}),Jpe=ne(Lo,Br,Vpe,Ik,Dk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=Gpe(t,s);i==null&&(i=Xpe(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}),Qpe=(e,t)=>{var r=ul(e,t);if(r!=null)return Zpe(e,r.orientation,r.mirror)},mU=ne([Br,ul,Qpe,(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}}}),Rpe=(e,t)=>{var r=cl(e,t);if(r!=null)return Jpe(e,r.orientation,r.mirror)},gU=ne([Br,cl,Rpe,(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}}}),HP=ne(Br,cl,(e,t)=>{var r=typeof t.width=="number"?t.width:Ud;return{width:r,height:e.height}}),qP=(e,t,r)=>{switch(t){case"xAxis":return WP(e,r).width;case"yAxis":return HP(e,r).height;default:return}},KP=(e,t,r,n)=>{if(r!=null){var o=r.allowDuplicatedCategory,a=r.type,i=r.dataKey,s=ra(e,n),l=t.map(c=>c.value),u=l.filter(c=>c!=null);if(i&&s&&a==="category"&&o&&QN(u))return l}},VP=ne([Lt,Hv,kn,fn],KP),GP=ne([Lt,dpe,uu,Mk,VP,UP,hg,$P,fn],(e,t,r,n,o,a,i,s,l)=>{if(t!=null){var u=ra(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}}}),efe=(e,t,r,n,o,a,i,s,l)=>{if(!(t==null||n==null)){var u=ra(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?Vr(a[0]-a[1])*2*m:m;var y=d||o;return y?y.map((b,h)=>{var g=i?i.indexOf(b):b,v=n.map(g);return Tt(v)?{index:h,coordinate:v+m,value:b,offset:m}:null}).filter(bo):u&&s?s.map((b,h)=>{var g=n.map(b);return Tt(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(bo):n.ticks?n.ticks(p).map((b,h)=>{var g=n.map(b);return Tt(g)?{coordinate:g+m,value:b,index:h,offset:m}:null}).filter(bo):n.domain().map((b,h)=>{var g=n.map(b);return Tt(g)?{coordinate:g+m,value:i?i[b]:b,index:h,offset:m}:null}).filter(bo)}},jk=ne([Lt,fp,uu,Mk,$P,hg,VP,UP,fn],efe),tfe=(e,t,r,n,o,a,i)=>{if(!(t==null||r==null||n==null||n[0]===n[1])){var s=ra(e,i),l=t.tickCount,u=0;return u=i==="angleAxis"&&n?.length>=2?Vr(n[0]-n[1])*2*u:u,s&&a?a.map((c,d)=>{var p=r.map(c);return Tt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(bo):r.ticks?r.ticks(l).map((c,d)=>{var p=r.map(c);return Tt(p)?{coordinate:p+u,value:c,index:d,offset:u}:null}).filter(bo):r.domain().map((c,d)=>{var p=r.map(c);return Tt(p)?{coordinate:p+u,value:o?o[c]:c,index:d,offset:u}:null}).filter(bo)}},Si=ne([Lt,fp,Mk,hg,VP,UP,fn],tfe),ki=ne(kn,Mk,(e,t)=>{if(!(e==null||t==null))return Nk(Nk({},e),{},{scale:t})}),rfe=ne([kn,uu,jP,dU],Lv),nfe=ne([rfe],gv),i8e=ne((e,t,r)=>wP(e,r),nfe,(e,t)=>{if(!(e==null||t==null))return Nk(Nk({},e),{},{scale:t})}),hU=ne([Lt,Lm,zm],(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}}),ofe=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},s8e=ne([ofe],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,XP=e=>e.options.validateTooltipEventTypes;function ZP(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Tc(e,t){var r=YP(e),n=XP(e);return ZP(t,r,n)}function yU(e){return $e(t=>Tc(t,e))}var $k=(e,t)=>{var r,n=Number(t);if(!(jo(n)||t==null))return n>=0?e==null||(r=e[n])===null||r===void 0?void 0:r.value:void 0};var vU=e=>e.tooltip.settings;var cu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},afe={itemInteraction:{click:cu,hover:cu},axisInteraction:{click:cu,hover:cu},keyboardInteraction:cu,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}},xU=_r({name:"tooltip",initialState:afe,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Xt(t.payload))},prepare:Mr()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Yo(e).tooltipItemPayloads.indexOf(Xt(n));a>-1&&(e.tooltipItemPayloads[a]=Xt(o))},prepare:Mr()},removeTooltipEntrySettings:{reducer(e,t){var r=Yo(e).tooltipItemPayloads.indexOf(Xt(t.payload));r>-1&&e.tooltipItemPayloads.splice(r,1)},prepare:Mr()},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}}}),Qi=xU.actions,bU=Qi.addTooltipEntrySettings,wU=Qi.replaceTooltipEntrySettings,SU=Qi.removeTooltipEntrySettings,kU=Qi.setTooltipSettingsState,Lk=Qi.setActiveMouseOverItemIndex,_U=Qi.mouseLeaveItem,zk=Qi.mouseLeaveChart,CU=Qi.setActiveClickItemIndex,Bk=Qi.setMouseOverAxisIndex,AU=Qi.setMouseClickAxisIndex,yg=Qi.setSyncInteraction,Xv=Qi.setKeyboardInteraction;var EU=xU.reducer;function NU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Fk(e){for(var t=1;t{if(t==null)return cu;var o=ufe(e,t,r);if(o==null)return cu;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(cfe(o)){if(a)return Fk(Fk({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return Fk(Fk({},cu),{},{coordinate:o.coordinate})};function dfe(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 pfe(e,t){var r=dfe(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 ffe(e,t,r){if(r==null||t==null)return!0;var n=Ut(e,t);return n==null||!vi(r)?!0:pfe(n,r)}var Oc=(e,t,r,n)=>{var o=e?.index;if(o==null)return null;var a=Number(o);if(!Tt(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||ffe(u,r,n)?String(l):null};var Wk=(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 Hk=(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 qk=e=>e.options.tooltipPayloadSearcher;var du=e=>e.tooltip;function TU(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 OU(e){for(var t=1;te(t)}function PU(e){if(typeof e=="string")return e}function bfe(e){if(!(e==null||typeof e!="object")){var t="name"in e?yfe(e.name):void 0,r="unit"in e?vfe(e.unit):void 0,n="dataKey"in e?xfe(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?PU(e.color):void 0,i="fill"in e?PU(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function wfe(e,t){return e??t}var Kk=(e,t,r,n,o,a,i)=>{if(!(t==null||a==null)){var s=r.chartData,l=r.computedData,u=r.dataStartIndex,c=r.dataEndIndex,d=[];return e.reduce((p,f)=>{var m,y=f.dataDefinedOnItem,b=f.settings,h=wfe(y,s),g=Array.isArray(h)?Qw(h,u,c):h,v=(m=b?.dataKey)!==null&&m!==void 0?m:n,x=b?.nameKey,S;if(n&&Array.isArray(g)&&!Array.isArray(g[0])&&i==="axis"?(S=z1(g,n,o),S==null&&(S=a(g,t,l,x))):S=a(g,t,l,x),Array.isArray(S))S.forEach(A=>{var k,_,C=bfe(A),E=C?.name,j=C?.dataKey,X=C?.payload,z=OU(OU({},b),{},{name:E,unit:C?.unit,color:(k=C?.color)!==null&&k!==void 0?k:b?.color,fill:(_=C?.fill)!==null&&_!==void 0?_:b?.fill});p.push(dO({tooltipEntrySettings:z,dataKey:j,payload:X,value:Ut(X,j),name:E==null?void 0:String(E)}))});else{var w;p.push(dO({tooltipEntrySettings:b,dataKey:v,payload:S,value:Ut(S,v),name:(w=Ut(S,x))!==null&&w!==void 0?w:b?.name}))}return p},d)}};var JP=ne([Rn,SP,Xm],Ak),Sfe=ne([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),kfe=ne([Zn,Sc],Bv),Pc=ne([Sfe,Rn,kfe],Fv,{memoizeOptions:{resultEqualityCheck:Zm}}),_fe=ne([Pc],e=>e.filter(Qd)),MU=ne([Pc],Uv,{memoizeOptions:{resultEqualityCheck:Zm}}),Cfe=ne([Pc],e=>e.some(t=>!t.data)),pu=ne([MU,Ua],Wv),Afe=ne([_fe,Ua,Rn],WS),QP=ne([pu,Rn,Pc,Ua,Cfe,MU],AP),IU=ne([Rn],Tk),Efe=ne([Rn],e=>e.allowDataOverflow),DU=ne([IU,Efe],TS),Nfe=ne([Pc],e=>e.filter(Qd)),Tfe=ne([Afe,Nfe,xc,DS],EP),Ofe=ne([Tfe,Ua,Zn,DU],NP),Pfe=ne([Pc],kP),Mfe=ne([pu,Rn,Pfe,gg,Zn,g9],qv,{memoizeOptions:{resultEqualityCheck:Rd}}),Ife=ne([TP,Zn,Sc],mp),Dfe=ne([Ife,Zn],MP),jfe=ne([OP,Zn,Sc],mp),$fe=ne([jfe,Zn],IP),Lfe=ne([PP,Zn,Sc],mp),zfe=ne([Lfe,Zn],DP),Bfe=ne([Dfe,zfe,$fe],zv),Ffe=ne([Rn,IU,DU,Ofe,Mfe,Bfe,Lt,Zn],Kv),Mc=ne([Rn,Lt,pu,QP,xc,Zn,Ffe],Vv),Ufe=ne([Mc,Rn,JP],Gv),Wfe=ne([Rn,Mc,Ufe,Zn],Yv),jU=e=>{var t=Zn(e),r=Sc(e),n=!1;return hg(e,t,r,n)},RP=ne([Rn,jU],Xd),Hfe=ne([Rn,JP,Wfe,RP],Lv),e5=ne([Hfe],gv),qfe=ne([Lt,QP,Rn,Zn],KP),Kfe=ne([Lt,QP,Rn,Zn],FP),Vfe=(e,t,r,n,o,a,i,s)=>{if(t){var l=t.type,u=ra(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?Vr(o[0]-o[1])*2*d:d,u&&i?i.map((p,f)=>{var m=n.map(p);return Tt(m)?{coordinate:m+d,value:p,index:f,offset:d}:null}).filter(bo):n.domain().map((p,f)=>{var m=n.map(p);return Tt(m)?{coordinate:m+d,value:a?a[p]:p,index:f,offset:d}:null}).filter(bo)}}},Ha=ne([Lt,Rn,JP,e5,jU,qfe,Kfe,Zn],Vfe),t5=ne([YP,XP,vU],(e,t,r)=>ZP(r.shared,e,t)),$U=e=>e.tooltip.settings.trigger,r5=e=>e.tooltip.settings.defaultIndex,Zv=ne([du,t5,$U,r5],Uk),Ri=ne([Zv,pu,lu,Mc],Oc),Vk=ne([Ha,Ri],$k),vg=ne([Zv],e=>{if(e)return e.dataKey}),Gk=ne([Zv],e=>{if(e)return e.graphicalItemId}),LU=ne([du,t5,$U,r5],Hk),Gfe=ne([Lo,zo,Lt,Br,Ha,r5,LU],Wk),n5=ne([Zv,Gfe],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),o5=ne([Zv],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),Yfe=ne([LU,Ri,Ua,lu,Vk,qk,t5],Kk),zU=ne([Yfe],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function BU(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 FU(e){for(var t=1;t$e(Rn),UU=()=>{var e=Qfe(),t=$e(Ha),r=$e(e5);return!e||!r?Gi(void 0,t):Gi(FU(FU({},e),{},{scale:r}),t)};function WU(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function xg(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}},qU=(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 xg(xg(xg({},n),en(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return xg(xg(xg({},n),en(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 KU(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 a5=(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,O)=>[e,e+s,e-s].some(D=>(O?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,b=(p=r[u])===null||p===void 0?void 0:p.coordinate,h=u>=i-1?(f=r[0])===null||f===void 0?void 0:f.coordinate:(m=r[u+1])===null||m===void 0?void 0:m.coordinate,g=void 0;if(!(y==null||b==null||h==null))if(Vr(b-y)!==Vr(h-b)){var v=[];if(Vr(h-b)===Vr(o[1]-o[0])){g=h;var x=b+o[1]-o[0];v[0]=Math.min(x,(x+y)/2),v[1]=Math.max(x,(x+y)/2)}else{g=y;var S=h+o[1]-o[0];v[0]=Math.min(b,(S+b)/2),v[1]=Math.max(b,(S+b)/2)}var w=[Math.min(b,(g+b)/2),Math.max(b,(g+b)/2)];if(l(w[0],w[1],!1)||l(v[0],v[1],!0)){var A;return(A=r[u])===null||A===void 0?void 0:A.index}}else{var k=Math.min(y,h),_=Math.max(y,h);if(l((k+b)/2,(_+b)/2,!1)){var C;return(C=r[u])===null||C===void 0?void 0:C.index}}}else if(t)for(var E=0;E(j.coordinate+z.coordinate)/2||E>0&&E(j.coordinate+z.coordinate)/2&&e<=(j.coordinate+X.coordinate)/2)return j.index}}return-1};var Yk=()=>$e(Xm),i5=(e,t)=>t,VU=(e,t,r)=>r,s5=(e,t,r,n)=>n,GU=ne(Ha,e=>eu(e,t=>t.coordinate)),l5=ne([du,i5,VU,s5],Uk),u5=ne([l5,pu,lu,Mc],Oc),YU=(e,t,r)=>{if(t!=null){var n=du(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},XU=ne([du,i5,VU,s5],Hk),Jv=ne([Lo,zo,Lt,Br,Ha,s5,XU],Wk),ZU=ne([l5,Jv],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),c5=ne([Ha,u5],$k),JU=ne([XU,u5,Ua,lu,c5,qk,i5],Kk),QU=ne([l5,u5],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),rme=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&KU(e,i)){var s=CB(e,t),l=a5(s,a,o,r,n),u=HU(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},nme=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=t9(e,r);if(s){var l=AB(s,t),u=a5(l,i,a,n,o),c=qU(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},RU=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?rme(e,t,n,o,a,i,s):nme(e,t,r,n,o,a,i)};var bg=Z(J()),uW=Z(Wh());var eW=ne(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}}),tW=ne(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(n=>parseInt(n,10)).concat(Object.values(ar)),r=Array.from(new Set(t));return r.sort((n,o)=>n-o)},{memoizeOptions:{resultEqualityCheck:M9}});function rW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function nW(e){for(var t=1;tnW(nW({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),sme)},ume=new Set(Object.values(ar));function cme(e){return ume.has(e)}var oW=_r({name:"zIndex",initialState:lme,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:Mr()},unregisterZIndexPortal:{reducer:(e,t)=>{var r=t.payload.zIndex;e.zIndexMap[r]&&(e.zIndexMap[r].consumers-=1,e.zIndexMap[r].consumers<=0&&!cme(r)&&delete e.zIndexMap[r])},prepare:Mr()},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=Xt(o):e.zIndexMap[n].element=Xt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Xt(o),panoramaElement:a?Xt(o):void 0}},prepare:Mr()},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:Mr()}}}),Xk=oW.actions,aW=Xk.registerZIndexPortal,Zk=Xk.unregisterZIndexPortal,iW=Xk.registerZIndexPortalElement,sW=Xk.unregisterZIndexPortalElement;var lW=oW.reducer;function tn(e){var t=e.zIndex,r=e.children,n=UB(),o=n&&t!==void 0&&t!==0,a=Cr(),i=(0,bg.useRef)(void 0),s=(0,bg.useRef)(new Set),l=Dt(),u=$e(d=>eW(d,t,a));if((0,bg.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(Zk({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(aW({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(Zk({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,bg.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(Zk({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,uW.createPortal)(r,c):null}function d5(){return d5=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,Rk.useContext)(p5);var Rv=Z(J());var gW=Z(mW(),1);var hW=gW.default;var Sg=new hW;var t_="recharts.syncEvent.tooltip",m5="recharts.syncEvent.brush";var Ic=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!jo(r))return e[r]}},vme={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},yW=_r({name:"options",initialState:vme,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),vW=yW.reducer,xW=yW.actions.createEventEmitter;function bW(e){return e.tooltip.syncInteraction}var xme={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},wW=_r({name:"chartData",initialState:xme,reducers:{setChartData(e,t){if(e.chartData=Xt(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)}}}),g5=wW.actions,h5=g5.setChartData,SW=g5.setDataStartEndIndexes,bme=g5.setComputedData;var kW=wW.reducer;var wme=["x","y"];function _W(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 kg(e){for(var t=1;tl.rootProps.className);(0,Rv.useEffect)(()=>{if(e==null)return va;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(yg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(n==="index"){var p;if(i&&c!==null&&c!==void 0&&(p=c.payload)!==null&&p!==void 0&&p.coordinate&&c.payload.sourceViewBox){var f=c.payload.coordinate,m=f.x,y=f.y,b=Cme(f,wme),h=c.payload.sourceViewBox,g=h.x,v=h.y,x=h.width,S=h.height,w=kg(kg({},b),{},{x:i.x+(x?(m-g)/x:0)*i.width,y:i.y+(S?(y-v)/S:0)*i.height});r(kg(kg({},c),{},{payload:kg(kg({},c.payload),{},{coordinate:w})}))}else r(c);return}if(o!=null){var A;if(typeof n=="function"){var k={activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate},_=n(o,k);A=o[_]}else n==="value"&&(A=o.find(O=>String(O.value)===c.payload.label));var C=c.payload.coordinate;if(C==null||i==null){r(yg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(A==null){r(yg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:void 0}));return}var E=C.x,j=C.y,X=Math.min(E,i.x+i.width),z=Math.min(j,i.y+i.height),U={x:a==="horizontal"?A.coordinate:X,y:a==="horizontal"?z:A.coordinate},N=yg({active:c.payload.active,coordinate:U,dataKey:c.payload.dataKey,index:String(A.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId});r(N)}}};return Sg.on(t_,l),()=>{Sg.off(t_,l)}},[s,r,t,e,n,o,a,i])}function Nme(){var e=$e(jS),t=$e($S),r=Dt();(0,Rv.useEffect)(()=>{if(e==null)return va;var n=(o,a,i)=>{t!==i&&e===o&&r(SW(a))};return Sg.on(m5,n),()=>{Sg.off(m5,n)}},[r,t,e])}function CW(){var e=Dt();(0,Rv.useEffect)(()=>{e(xW())},[e]),Eme(),Nme()}function AW(e,t,r,n,o,a){var i=$e(m=>YU(m,e,t)),s=$e(Gk),l=$e($S),u=$e(jS),c=$e(DO),d=$e(bW),p=d?.sourceViewBox!=null,f=qd();(0,Rv.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=yg({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Sg.emit(t_,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function EW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function NW(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{A(kU({shared:g,trigger:v,axisId:w,active:o,defaultIndex:k}))},[A,g,v,w,o,k]);var _=qd(),C=pS(),E=yU(g),j=(t=$e(Q=>QU(Q,E,v,k)))!==null&&t!==void 0?t:{},X=j.activeIndex,z=j.isActive,U=$e(Q=>JU(Q,E,v,k)),N=$e(Q=>c5(Q,E,v,k)),O=$e(Q=>ZU(Q,E,v,k)),D=U,T=pW(),I=(r=o??z)!==null&&r!==void 0?r:!1,P=Cw([D,I]),H=Mme(P,2),G=H[0],L=H[1],Y=E==="axis"?N:void 0;AW(E,v,O,Y,X,I);var W=S??T;if(W==null||_==null||E==null)return null;var ie=D??OW;I||(ie=OW),u&&ie.length&&(ie=xw(ie.filter(Q=>Q.value!=null&&(Q.hide!==!0||n.includeHidden)),p,Lme));var Me=ie.length>0,pe=NW(NW({},n),{},{payload:ie,label:Y,active:I,activeIndex:X,coordinate:O,accessibilityLayer:C}),ce=es.createElement(p7,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:I,coordinate:O,hasPayload:Me,offset:d,position:f,reverseDirection:m,useTranslate3d:y,viewBox:_,wrapperStyle:b,lastBoundingBox:G,innerRef:L,hasPortalFromProps:!!S},zme(l,pe));return es.createElement(es.Fragment,null,(0,MW.createPortal)(ce,W),I&&es.createElement(dW,{cursor:h,tooltipEventType:E,coordinate:O,payload:ie,index:X}))}var fu=e=>null;fu.displayName="Cell";var v5=Z(J()),a_=Z(J());function Fme(e,t,r){return(t=Ume(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ume(e){var t=Wme(e,"string");return typeof t=="symbol"?t:t+""}function Wme(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var r_=class{constructor(t){Fme(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 IW(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 Hme(e){for(var t=1;t{try{var r=document.getElementById(jW);r||(r=document.createElement("span"),r.setAttribute("id",jW),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,Yme,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},gp=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Yi.isSsr)return{width:0,height:0};if(!LW.enableCache)return $W(t,r);var n=Xme(t,r),o=DW.get(n);if(o)return o;var a=$W(t,r);return DW.set(n,a),a};var WW;function n_(e,t){return Rme(e)||Qme(e,t)||Jme(e,t)||Zme()}function Zme(){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 Jme(e,t){if(e){if(typeof e=="string")return zW(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)?zW(e,t):void 0}}function zW(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=[];or(t)||(r?o=t.toString().split(""):o=t.toString().split(XW));var a=o.map(s=>({word:s,width:gp(s,n).width})),i=r?0:gp("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function i_(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function JW(e){return or(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var QW=(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),xge="\u2026",GW=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=ZW({breakAll:r,style:n,children:l+xge});if(!u)return[!1,[]];var c=QW(u.wordsWithComputedWidth,a,i,s),d=c.length>o||RW(c).width>Number(a);return[d,c]},bge=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=De(a),c=String(i),d=QW(t,n,r,o);if(!u||o)return d;var p=d.length>a||RW(d).width>Number(n);if(!p)return d;for(var f=0,m=c.length-1,y=0,b;f<=m&&y<=c.length-1;){var h=Math.floor((f+m)/2),g=h-1,v=GW(c,g,l,s,a,n,r,o),x=KW(v,2),S=x[0],w=x[1],A=GW(c,h,l,s,a,n,r,o),k=KW(A,1),_=k[0];if(!S&&!_&&(f=h+1),S&&_&&(m=h-1),!S&&_){b=w;break}y++}return b||d},YW=e=>{var t=or(e)?[]:e.toString().split(XW);return[{words:t,width:void 0}]},wge=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!Yi.isSsr){var s,l,u=ZW({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return YW(n);return bge({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return YW(n)},eH="#808080",Sge={angle:0,breakAll:!1,capHeight:"0.71em",fill:eH,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},hp=(0,a_.forwardRef)((e,t)=>{var r=rr(e,Sge),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=qW(r,pge),p=(0,a_.useMemo)(()=>wge({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:l,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,l,d.style,d.width]),f=d.dx,m=d.dy,y=d.angle,b=d.className,h=d.breakAll,g=qW(d,fge);if(!ya(n)||!ya(o)||p.length===0)return null;var v=Number(n)+(De(f)?f:0),x=Number(o)+(De(m)?m:0);if(!Tt(v)||!Tt(x))return null;var S;switch(c){case"start":S=o_("calc(".concat(i,")"));break;case"middle":S=o_("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:S=o_("calc(".concat(p.length-1," * -").concat(a,")"));break}var w=[],A=p[0];if(l&&A!=null){var k=A.width,_=d.width;w.push("scale(".concat(De(_)&&De(k)?_/k:1,")"))}return y&&w.push("rotate(".concat(y,", ").concat(v,", ").concat(x,")")),w.length&&(g.transform=w.join(" ")),v5.createElement("text",y5({},pn(g),{ref:t,x:v,y:x,className:xt("recharts-text",b),textAnchor:u,fill:s.includes("url")?eH:s}),p.map((C,E)=>{var j=C.words.join(h?"":" ");return v5.createElement("tspan",{x:v,dy:E===0?S:a,key:"".concat(j,"-").concat(E)},j)}))});hp.displayName="Text";var qa=Z(J()),So=Z(J());var kge=["labelRef"],_ge=["content"];function tH(e,t){if(e==null)return{};var r,n,o=Cge(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,So.useMemo)(()=>({x:t,y:r,upperWidth:n,lowerWidth:o,width:a,height:i}),[t,r,n,o,a,i]);return qa.createElement(nH.Provider,{value:l},s)},aH=()=>{var e=(0,So.useContext)(nH),t=qd();return e||(t?Wy(t):void 0)},iH=(0,So.createContext)(null),sH=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,So.useMemo)(()=>({cx:t,cy:r,innerRadius:n,outerRadius:o,startAngle:a,endAngle:i,clockWise:s}),[t,r,n,o,a,i,s]);return qa.createElement(iH.Provider,{value:u},l)},Tge=()=>{var e=(0,So.useContext)(iH),t=$e(US);return e||t},Oge=e=>{var t=e.value,r=e.formatter,n=or(e.children)?t:e.children;return typeof r=="function"?r(n):n},vp=e=>e!=null&&typeof e=="function",Pge=(e,t)=>{var r=Vr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Mge=(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=Pge(d,p),b=y>=0?1:-1,h,g;switch(t){case"insideStart":h=d+b*a,g=f;break;case"insideEnd":h=p-b*a,g=!f;break;case"end":h=p+b*a,g=f;break;default:throw new Error("Unsupported position ".concat(t))}g=y<=0?g:!g;var v=en(s,l,m,h),x=en(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,+(Q>180),+(c>0),w.x,w.y,a,a,+(c<0),_.x,_.y)}else b+=ko(z9||(z9=Rd(["L",",","Z"])),t,r);return b},rce={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},WS=e=>{var t=nr(e,rce),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=tce({cx:r,cy:n,innerRadius:o,outerRadius:a,cornerRadius:Math.min(m,f/2),forceCornerRadius:s,cornerIsExternal:l,startAngle:u,endAngle:c}):y=F9({cx:r,cy:n,innerRadius:o,outerRadius:a,startAngle:u,endAngle:c}),B9.createElement("path",YO({},gn(t),{className:p,d:y}))};function U9(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(cw(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 FS(t)}}function W9(e){return Fw(e)?NaN:Number(e)}function HS(e){return e?(e=W9(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"&&dv(e,t,r)&&(t=r=void 0),e=HS(e),t===void 0?(t=e,e=0):t=HS(t),r=r===void 0?ee.chartData,ep=ae([Ka],e=>{var t=e.chartData!=null?e.chartData.length-1:0;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),tp=(e,t,r,n)=>n?ep(e):Ka(e),KS=(e,t,r)=>r?ep(e):Ka(e),H9=ae([tp],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),q9=ae([ep],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]}),K9=ae([Ka],e=>{var t=e.chartData,r=e.dataStartIndex,n=e.dataEndIndex;return t!=null?t.slice(r,n+1):[]});function XO(e,t){return ice(e)||ace(e,t)||oce(e,t)||nce()}function nce(){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 oce(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);re.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=Nv(e,2),r=t[0],n=t[1],o=r,a=n;return r>n&&(o=n,a=r),[o,a]},eP=(e,t,r)=>{if(e.lte(0))return new wr.default(0);var n=QO(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()))},Q9=(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()))},dce=(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(QO(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]:eP;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?R9(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 YS=function(t){var r=Nv(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=J9([n,o]),c=Nv(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 dce(d,a,i);var m=s==="snap125"?Q9:eP,y=R9(d,p,l,i,0,m),x=y.step,h=y.tickMin,g=y.tickMax,v=RO(h,g.add(new wr.default(.1).mul(x)),x);return n>o?v.reverse():v},XS=function(t,r){var n=Nv(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=J9([o,a]),u=Nv(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"?Q9:eP,f=Math.max(r,2),m=p(new wr.default(d).sub(c).div(f-1),i,0),y=[...RO(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 tP=e=>e.rootProps.maxBarSize,eF=e=>e.rootProps.barGap,ZS=e=>e.rootProps.barCategoryGap,tF=e=>e.rootProps.barSize,vc=e=>e.rootProps.stackOffset,JS=e=>e.rootProps.reverseStackOrder,ng=e=>e.options.chartName,QS=e=>e.rootProps.syncId,rP=e=>e.rootProps.syncMethod,RS=e=>e.options.eventEmitter,rF=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 xc={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 Es={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 rp=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function np(e,t,r){if(r!=="auto")return r;if(e!=null)return sa(e,t)?"category":"number"}function nF(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 ek(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},tk=ae([gce,_S],(e,t)=>{var r;if(e!=null)return e;var n=(r=np(t,"angleAxis",oF.type))!==null&&r!==void 0?r:"category";return ek(ek({},oF),{},{type:n})}),hce=(e,t)=>e.polarAxis.radiusAxis[t],rk=ae([hce,_S],(e,t)=>{var r;if(e!=null)return e;var n=(r=np(t,"radiusAxis",aF.type))!==null&&r!==void 0?r:"category";return ek(ek({},aF),{},{type:n})}),nk=e=>e.polarOptions,nP=ae([qo,Ko,Fr],BS),iF=ae([nk,nP],(e,t)=>{if(e!=null)return Pn(e.innerRadius,t,0)}),sF=ae([nk,nP],(e,t)=>{if(e!=null)return Pn(e.outerRadius,t,t*.8)}),yce=e=>{if(e==null)return[0,0];var t=e.startAngle,r=e.endAngle;return[t,r]},oP=ae([nk],yce),EDe=ae([tk,oP],rp),aP=ae([nP,iF,sF],(e,t,r)=>{if(!(e==null||t==null||r==null))return[t,r]}),NDe=ae([rk,aP],rp),ok=ae([Lt,nk,iF,sF,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:Pn(i,o,o/2),cy:Pn(s,a,a/2),innerRadius:r,outerRadius:n,startAngle:l,endAngle:u,clockWise:!1}}});var hn=(e,t)=>t;var op=(e,t,r)=>r;function bc(e){return e?.id}function ak(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=bc(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 ap(e){return"stackId"in e&&e.stackId!=null&&e.dataKey!=null}var ip=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function og(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function lF(e,t){if(e.length===t.length){for(var r=0;r{var t=Lt(e);return t==="horizontal"?"xAxis":t==="vertical"?"yAxis":t==="centric"?"angleAxis":"radiusAxis"};var wc=e=>e.tooltip.settings.axisId;function Tv(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 ik=(e,t)=>{if(t!=null)switch(e){case"linear":{if(!xi(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 Zv={};ate(Zv,{scaleBand:()=>Iv,scaleDiverging:()=>Uk,scaleDivergingLog:()=>zP,scaleDivergingPow:()=>Wk,scaleDivergingSqrt:()=>OU,scaleDivergingSymlog:()=>BP,scaleIdentity:()=>Ck,scaleImplicit:()=>fk,scaleLinear:()=>_k,scaleLog:()=>Ak,scaleOrdinal:()=>sg,scalePoint:()=>gF,scalePow:()=>qv,scaleQuantile:()=>Tk,scaleQuantize:()=>Ok,scaleRadial:()=>Nk,scaleSequential:()=>Lk,scaleSequentialLog:()=>$P,scaleSequentialPow:()=>zk,scaleSequentialQuantile:()=>Bk,scaleSequentialSqrt:()=>TU,scaleSequentialSymlog:()=>LP,scaleSqrt:()=>JF,scaleSymlog:()=>Ek,scaleThreshold:()=>Pk,scaleTime:()=>DP,scaleUtc:()=>jP,tickFormat:()=>Bv});function _a(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function iP(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function sp(e){let t,r,n;e.length!==2?(t=_a,r=(s,l)=>_a(e(s),l),n=(s,l)=>e(s)-l):(t=e===_a||e===iP?e:vce,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 vce(){return 0}function Ov(e){return e===null?NaN:+e}function*uF(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 cF=sp(_a),dF=cF.right,xce=cF.left,bce=sp(Ov).center,Ns=dF;var ag=class extends Map{constructor(t,r=kce){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(pF(this,t))}has(t){return super.has(pF(this,t))}set(t,r){return super.set(wce(this,t),r)}delete(t){return super.delete(Sce(this,t))}};function pF({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function wce({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function Sce({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function kce(e){return e!==null&&typeof e=="object"?e.valueOf():e}function fF(e=_a){if(e===_a)return sP;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 sP(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var _ce=Math.sqrt(50),Cce=Math.sqrt(10),Ace=Math.sqrt(2);function sk(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>=_ce?10:a>=Cce?5:a>=Ace?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 uk(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 ck(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?sP:fF(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));ck(e,t,f,m,o)}let a=e[t],i=r,s=n;for(Mv(e,r,t),o(e[n],a)>0&&Mv(e,r,n);i0;)--s}o(e[r],a)===0?Mv(e,r,s):(++s,Mv(e,s,n)),s<=t&&(r=s+1),t<=s&&(n=s-1)}return e}function Mv(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}function dk(e,t,r){if(e=Float64Array.from(uF(e,r)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return uk(e);if(t>=1)return lk(e);var n,o=(n-1)*t,a=Math.floor(o),i=lk(ck(e,a).subarray(0,a+1)),s=uk(e.subarray(a+1));return i+(s-i)*(o-a)}}function lP(e,t,r=Ov){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 pk(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?gk(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gk(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=Nce.exec(e))?new Va(t[1],t[2],t[3],1):(t=Tce.exec(e))?new Va(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Oce.exec(e))?gk(t[1],t[2],t[3],t[4]):(t=Pce.exec(e))?gk(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Mce.exec(e))?SF(t[1],t[2]/100,t[3]/100,1):(t=Ice.exec(e))?SF(t[1],t[2]/100,t[3]/100,t[4]):hF.hasOwnProperty(e)?xF(hF[e]):e==="transparent"?new Va(NaN,NaN,NaN,0):null}function xF(e){return new Va(e>>16&255,e>>8&255,e&255,1)}function gk(e,t,r,n){return n<=0&&(e=t=r=NaN),new Va(e,t,r,n)}function $ce(e){return e instanceof $v||(e=Sc(e)),e?(e=e.rgb(),new Va(e.r,e.g,e.b,e.opacity)):new Va}function ug(e,t,r,n){return arguments.length===1?$ce(e):new Va(e,t,r,n??1)}function Va(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}mk(Va,ug,uP($v,{brighter(e){return e=e==null?yk:Math.pow(yk,e),new Va(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Dv:Math.pow(Dv,e),new Va(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Va(cp(this.r),cp(this.g),cp(this.b),vk(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:bF,formatHex:bF,formatHex8:Lce,formatRgb:wF,toString:wF}));function bF(){return`#${up(this.r)}${up(this.g)}${up(this.b)}`}function Lce(){return`#${up(this.r)}${up(this.g)}${up(this.b)}${up((isNaN(this.opacity)?1:this.opacity)*255)}`}function wF(){let e=vk(this.opacity);return`${e===1?"rgb(":"rgba("}${cp(this.r)}, ${cp(this.g)}, ${cp(this.b)}${e===1?")":`, ${e})`}`}function vk(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function cp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function up(e){return e=cp(e),(e<16?"0":"")+e.toString(16)}function SF(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Ts(e,t,r,n)}function _F(e){if(e instanceof Ts)return new Ts(e.h,e.s,e.l,e.opacity);if(e instanceof $v||(e=Sc(e)),!e)return new Ts;if(e instanceof Ts)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,o=Math.min(t,r,n),a=Math.max(t,r,n),i=NaN,s=a-o,l=(a+o)/2;return s?(t===a?i=(r-n)/s+(r0&&l<1?0:i,new Ts(i,s,l,e.opacity)}function CF(e,t,r,n){return arguments.length===1?_F(e):new Ts(e,t,r,n??1)}function Ts(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}mk(Ts,CF,uP($v,{brighter(e){return e=e==null?yk:Math.pow(yk,e),new Ts(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Dv:Math.pow(Dv,e),new Ts(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,o=2*r-n;return new Va(cP(e>=240?e-240:e+120,o,n),cP(e,o,n),cP(e<120?e+240:e-120,o,n),this.opacity)},clamp(){return new Ts(kF(this.h),hk(this.s),hk(this.l),vk(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=vk(this.opacity);return`${e===1?"hsl(":"hsla("}${kF(this.h)}, ${hk(this.s)*100}%, ${hk(this.l)*100}%${e===1?")":`, ${e})`}`}}));function kF(e){return e=(e||0)%360,e<0?e+360:e}function hk(e){return Math.max(0,Math.min(1,e||0))}function cP(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 dP(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 AF(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 zce(e,t){return function(r){return e+r*t}}function Bce(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 NF(e){return(e=+e)==1?xk:function(t,r){return r-t?Bce(t,r,e):Lv(isNaN(t)?r:t)}}function xk(e,t){var r=t-e;return r?zce(e,r):Lv(isNaN(e)?t:e)}var pP=(function e(t){var r=NF(t);function n(o,a){var i=r((o=ug(o)).r,(a=ug(a)).r),s=r(o.g,a.g),l=r(o.b,a.b),u=xk(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 TF(e){return function(t){var r=t.length,n=new Array(r),o=new Array(r),a=new Array(r),i,s;for(i=0;ir&&(a=t.slice(r,a),s[i]?s[i]+=a:s[++i]=a),(n=n[0])===(o=o[0])?s[i]?s[i]+=o:s[++i]=o:(s[++i]=null,l.push({i,x:kc(n,o)})),r=fP.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function Hce(e,t,r){var n=e[0],o=e[1],a=t[0],i=t[1];return o2?qce:Hce,l=u=null,d}function d(p){return p==null||isNaN(p=+p)?a:(l||(l=s(e.map(n),t,r)))(n(i(p)))}return d.invert=function(p){return i(o((u||(u=s(t,e.map(n),kc)))(p)))},d.domain=function(p){return arguments.length?(e=Array.from(p,_c),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=dp,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 fp(){return pp()(Co,Co)}function LF(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function mp(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 il(e){return e=mp(Math.abs(e)),e?e[1]:NaN}function zF(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 BF(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var Kce=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function sl(e){if(!(t=Kce.exec(e)))throw new Error("invalid format: "+e);var t;return new wk({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}sl.prototype=wk.prototype;function wk(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+""}wk.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 FF(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 zv;function UF(e,t){var r=mp(e,t);if(!r)return zv=void 0,e.toPrecision(t);var n=r[0],o=r[1],a=o-(zv=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")+mp(e,Math.max(0,t+a-1))[0]}function yP(e,t){var r=mp(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 vP={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:LF,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)=>yP(e*100,t),r:yP,s:UF,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function xP(e){return e}var WF=Array.prototype.map,HF=["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?xP:zF(WF.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?xP:BF(WF.call(e.numerals,String)),i=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"\u2212":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function u(d,p){d=sl(d);var f=d.fill,m=d.align,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"):vP[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=vP[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=FF(I)),j&&+I==0&&y!=="+"&&(j=!1),Q=(j?y==="("?y:s:y==="-"||y==="("?"":y)+Q,$=(w==="s"&&!isNaN(I)&&zv!==void 0?HF[8+zv/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(il(p)/3)))*3,m=Math.pow(10,-f),y=u((d=sl(d),d.type="f",d),{suffix:HF[8+f/3]});return function(x){return y(m*x)}}return{format:u,formatPrefix:c}}var Sk,cg,kk;bP({thousands:",",grouping:[3],currency:["$",""]});function bP(e){return Sk=qF(e),cg=Sk.format,kk=Sk.formatPrefix,Sk}function wP(e){return Math.max(0,-il(Math.abs(e)))}function SP(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(il(t)/3)))*3-il(Math.abs(e)))}function kP(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,il(t)-il(e))+1}function Bv(e,t,r,n){var o=ig(e,t,r),a;switch(n=sl(n??",f"),n.type){case"s":{var i=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=SP(o,i))&&(n.precision=a),kk(n,i)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=kP(o,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=wP(o))&&(n.precision=a-(n.type==="%")*2);break}}return cg(n)}function Ca(e){var t=e.domain;return e.ticks=function(r){var n=t();return lp(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var o=t();return Bv(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=Pv(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 _k(){var e=fp();return e.copy=function(){return al(e,_k())},_n.apply(e,arguments),Ca(e)}function Ck(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,_c),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Ck(e).unknown(t)},e=arguments.length?Array.from(e,_c):[0,1],Ca(r)}function Fv(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 Zce(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 GF(e){return(t,r)=>-e(-t,r)}function Uv(e){let t=e(KF,VF),r=t.domain,n=10,o,a;function i(){return o=Zce(n),a=Xce(n),r()[0]<0?(o=GF(o),a=GF(a),e(Vce,Gce)):e(KF,VF),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=sl(l)).precision==null&&(l.trim=!0),l=cg(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(Fv(r(),{floor:s=>a(Math.floor(o(s))),ceil:s=>a(Math.ceil(o(s)))})),t}function Ak(){let e=Uv(pp()).domain([1,10]);return e.copy=()=>al(e,Ak()).base(e.base()),_n.apply(e,arguments),e}function YF(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function XF(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Wv(e){var t=1,r=e(YF(t),XF(t));return r.constant=function(n){return arguments.length?e(YF(t=+n),XF(t)):t},Ca(r)}function Ek(){var e=Wv(pp());return e.copy=function(){return al(e,Ek()).constant(e.constant())},_n.apply(e,arguments)}function ZF(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Jce(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function Qce(e){return e<0?-e*e:e*e}function Hv(e){var t=e(Co,Co),r=1;function n(){return r===1?e(Co,Co):r===.5?e(Jce,Qce):e(ZF(r),ZF(1/r))}return t.exponent=function(o){return arguments.length?(r=+o,n()):r},Ca(t)}function qv(){var e=Hv(pp());return e.copy=function(){return al(e,qv()).exponent(e.exponent())},_n.apply(e,arguments),e}function JF(){return qv.apply(null,arguments).exponent(.5)}function QF(e){return Math.sign(e)*e*e}function Rce(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Nk(){var e=fp(),t=[0,1],r=!1,n;function o(a){var i=Rce(e(a));return isNaN(i)?n:r?Math.round(i):i}return o.invert=function(a){return e.invert(QF(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,_c)).map(QF)),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 Nk(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},_n.apply(o,arguments),Ca(o)}function Tk(){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 Ok().domain([e,t]).range(o).unknown(a)},_n.apply(Ca(i),arguments)}function Pk(){var e=[.5],t=[0,1],r,n=1;function o(a){return a!=null&&a<=a?t[Ns(e,a,0,n)]:r}return o.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),o):e.slice()},o.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),o):t.slice()},o.invertExtent=function(a){var i=t.indexOf(a);return[e[i-1],e[i]]},o.unknown=function(a){return arguments.length?(r=a,o):r},o.copy=function(){return Pk().domain(e).range(t).unknown(r)},_n.apply(o,arguments)}var _P=new Date,CP=new Date;function Xr(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(uXr(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)=>(_P.setTime(+a),CP.setTime(+i),e(_P),e(CP),Math.floor(r(_P,CP))),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 Kv=Xr(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kv.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Xr(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Kv);var i$e=Kv.range;var Qi=Xr(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),RF=Qi.range;var dg=Xr(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),ede=dg.range,pg=Xr(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),tde=pg.range;var fg=Xr(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()),rde=fg.range,mg=Xr(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),nde=mg.range;var ou=Xr(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),ode=ou.range,yp=Xr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),ade=yp.range,Mk=Xr(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),ide=Mk.range;function vp(e){return Xr(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 au=vp(0),gg=vp(1),tU=vp(2),rU=vp(3),Cc=vp(4),nU=vp(5),oU=vp(6),aU=au.range,sde=gg.range,lde=tU.range,ude=rU.range,cde=Cc.range,dde=nU.range,pde=oU.range;function xp(e){return Xr(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 iu=xp(0),hg=xp(1),iU=xp(2),sU=xp(3),Ac=xp(4),lU=xp(5),uU=xp(6),cU=iu.range,fde=hg.range,mde=iU.range,gde=sU.range,hde=Ac.range,yde=lU.range,vde=uU.range;var yg=Xr(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()),xde=yg.range,vg=Xr(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()),bde=vg.range;var wi=Xr(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());wi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Xr(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 wde=wi.range,Si=Xr(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());Si.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Xr(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 Sde=Si.range;function pU(e,t,r,n,o,a){let i=[[Qi,1,1e3],[Qi,5,5*1e3],[Qi,15,15*1e3],[Qi,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(ig(u/31536e6,c/31536e6,d));if(f===0)return Kv.every(Math.max(ig(u,c,d),1));let[m,y]=i[p/i[f-1][2]53)return null;"w"in te||(te.w=1),"Z"in te?(ee=PP(Gv(te.y,0,1)),U=ee.getUTCDay(),ee=U>4||U===0?hg.ceil(ee):hg(ee),ee=yp.offset(ee,(te.V-1)*7),te.y=ee.getUTCFullYear(),te.m=ee.getUTCMonth(),te.d=ee.getUTCDate()+(te.w+6)%7):(ee=OP(Gv(te.y,0,1)),U=ee.getDay(),ee=U>4||U===0?gg.ceil(ee):gg(ee),ee=ou.offset(ee,(te.V-1)*7),te.y=ee.getFullYear(),te.m=ee.getMonth(),te.d=ee.getDate()+(te.w+6)%7)}else("W"in te||"U"in te)&&("w"in te||(te.w="u"in te?te.u%7:"W"in te?1:0),U="Z"in te?PP(Gv(te.y,0,1)).getUTCDay():OP(Gv(te.y,0,1)).getDay(),te.m=0,te.d="W"in te?(te.w+6)%7+te.W*7-(U+5)%7:te.w+te.U*7-(U+6)%7);return"Z"in te?(te.H+=te.Z/100|0,te.M+=te.Z%100,PP(te)):OP(te)}}function k(he,ce,R,te){for(var z=0,ee=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 fU?ce.charAt(z++):P],!Y||(te=Y(he,R,te))<0)return-1}else if(P!=R.charCodeAt(te++))return-1}return te}function A(he,ce,R){var te=u.exec(ce.slice(R));return te?(he.p=c.get(te[0].toLowerCase()),R+te[0].length):-1}function C(he,ce,R){var te=f.exec(ce.slice(R));return te?(he.w=m.get(te[0].toLowerCase()),R+te[0].length):-1}function E(he,ce,R){var te=d.exec(ce.slice(R));return te?(he.w=p.get(te[0].toLowerCase()),R+te[0].length):-1}function I(he,ce,R){var te=h.exec(ce.slice(R));return te?(he.m=g.get(te[0].toLowerCase()),R+te[0].length):-1}function Q(he,ce,R){var te=y.exec(ce.slice(R));return te?(he.m=x.get(te[0].toLowerCase()),R+te[0].length):-1}function $(he,ce,R){return k(he,t,ce,R)}function F(he,ce,R){return k(he,r,ce,R)}function N(he,ce,R){return k(he,n,ce,R)}function O(he){return i[he.getDay()]}function j(he){return a[he.getDay()]}function T(he){return l[he.getMonth()]}function D(he){return s[he.getMonth()]}function M(he){return o[+(he.getHours()>=12)]}function q(he){return 1+~~(he.getMonth()/3)}function V(he){return i[he.getUTCDay()]}function L(he){return a[he.getUTCDay()]}function G(he){return l[he.getUTCMonth()]}function W(he){return s[he.getUTCMonth()]}function ie(he){return o[+(he.getUTCHours()>=12)]}function Me(he){return 1+~~(he.getUTCMonth()/3)}return{format:function(he){var ce=w(he+="",v);return ce.toString=function(){return he},ce},parse:function(he){var ce=_(he+="",!1);return ce.toString=function(){return he},ce},utcFormat:function(he){var ce=w(he+="",b);return ce.toString=function(){return he},ce},utcParse:function(he){var ce=_(he+="",!0);return ce.toString=function(){return he},ce}}}var fU={"-":"",_:" ",0:"0"},Vo=/^\s*\d+/,_de=/^%/,Cde=/[\\^$*+?|[\]().{}]/g;function Er(e,t,r){var n=e<0?"-":"",o=(n?-e:e)+"",a=o.length;return n+(a[t.toLowerCase(),r]))}function Ede(e,t,r){var n=Vo.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Nde(e,t,r){var n=Vo.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Tde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Ode(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Pde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function mU(e,t,r){var n=Vo.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function gU(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 Mde(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 Ide(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 Dde(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 hU(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 yU(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function $de(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Lde(e,t,r){var n=Vo.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function zde(e,t,r){var n=Vo.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Bde(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 Fde(e,t,r){var n=_de.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Ude(e,t,r){var n=Vo.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Wde(e,t,r){var n=Vo.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function vU(e,t){return Er(e.getDate(),t,2)}function Hde(e,t){return Er(e.getHours(),t,2)}function qde(e,t){return Er(e.getHours()%12||12,t,2)}function Kde(e,t){return Er(1+ou.count(wi(e),e),t,3)}function kU(e,t){return Er(e.getMilliseconds(),t,3)}function Vde(e,t){return kU(e,t)+"000"}function Gde(e,t){return Er(e.getMonth()+1,t,2)}function Yde(e,t){return Er(e.getMinutes(),t,2)}function Xde(e,t){return Er(e.getSeconds(),t,2)}function Zde(e){var t=e.getDay();return t===0?7:t}function Jde(e,t){return Er(au.count(wi(e)-1,e),t,2)}function _U(e){var t=e.getDay();return t>=4||t===0?Cc(e):Cc.ceil(e)}function Qde(e,t){return e=_U(e),Er(Cc.count(wi(e),e)+(wi(e).getDay()===4),t,2)}function Rde(e){return e.getDay()}function epe(e,t){return Er(gg.count(wi(e)-1,e),t,2)}function tpe(e,t){return Er(e.getFullYear()%100,t,2)}function rpe(e,t){return e=_U(e),Er(e.getFullYear()%100,t,2)}function npe(e,t){return Er(e.getFullYear()%1e4,t,4)}function ope(e,t){var r=e.getDay();return e=r>=4||r===0?Cc(e):Cc.ceil(e),Er(e.getFullYear()%1e4,t,4)}function ape(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Er(t/60|0,"0",2)+Er(t%60,"0",2)}function xU(e,t){return Er(e.getUTCDate(),t,2)}function ipe(e,t){return Er(e.getUTCHours(),t,2)}function spe(e,t){return Er(e.getUTCHours()%12||12,t,2)}function lpe(e,t){return Er(1+yp.count(Si(e),e),t,3)}function CU(e,t){return Er(e.getUTCMilliseconds(),t,3)}function upe(e,t){return CU(e,t)+"000"}function cpe(e,t){return Er(e.getUTCMonth()+1,t,2)}function dpe(e,t){return Er(e.getUTCMinutes(),t,2)}function ppe(e,t){return Er(e.getUTCSeconds(),t,2)}function fpe(e){var t=e.getUTCDay();return t===0?7:t}function mpe(e,t){return Er(iu.count(Si(e)-1,e),t,2)}function AU(e){var t=e.getUTCDay();return t>=4||t===0?Ac(e):Ac.ceil(e)}function gpe(e,t){return e=AU(e),Er(Ac.count(Si(e),e)+(Si(e).getUTCDay()===4),t,2)}function hpe(e){return e.getUTCDay()}function ype(e,t){return Er(hg.count(Si(e)-1,e),t,2)}function vpe(e,t){return Er(e.getUTCFullYear()%100,t,2)}function xpe(e,t){return e=AU(e),Er(e.getUTCFullYear()%100,t,2)}function bpe(e,t){return Er(e.getUTCFullYear()%1e4,t,4)}function wpe(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Ac(e):Ac.ceil(e),Er(e.getUTCFullYear()%1e4,t,4)}function Spe(){return"+0000"}function bU(){return"%"}function wU(e){return+e}function SU(e){return Math.floor(+e/1e3)}var xg,Ik,EU,Dk,NU;IP({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 IP(e){return xg=MP(e),Ik=xg.format,EU=xg.parse,Dk=xg.utcFormat,NU=xg.utcParse,xg}function kpe(e){return new Date(e)}function _pe(e){return e instanceof Date?+e:+new Date(+e)}function jk(e,t,r,n,o,a,i,s,l,u){var c=fp(),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)=>dk(e,a/n))},r.copy=function(){return Bk(t).domain(e)},Ji.apply(r,arguments)}function Fk(){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 Epe(n)?n:"point"}};function Npe(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=Npe(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 MU(e){if(e!=null)return"invert"in e&&typeof e.invert=="function"?e.invert.bind(e):qk(e,void 0)}function IU(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 Kk(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);re.cartesianAxis.xAxis[t],ul=(e,t)=>{var r=UP(e,t);return r??Qn},Rn={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:FP,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:Yd},WP=(e,t)=>e.cartesianAxis.yAxis[t],cl=(e,t)=>{var r=WP(e,t);return r??Rn},$pe={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:""},HP=(e,t)=>{var r=e.cartesianAxis.zAxis[t];return r??$pe},Cn=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);case"zAxis":return HP(e,r);case"angleAxis":return tk(e,r);case"radiusAxis":return rk(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},Lpe=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},bp=(e,t,r)=>{switch(t){case"xAxis":return ul(e,r);case"yAxis":return cl(e,r);case"angleAxis":return tk(e,r);case"radiusAxis":return rk(e,r);default:throw new Error("Unexpected axis type: ".concat(t))}},qP=e=>e.graphicalItems.cartesianItems.some(t=>t.type==="bar")||e.graphicalItems.polarItems.some(t=>t.type==="radialBar");function Rv(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 Ec=e=>e.graphicalItems.cartesianItems,zpe=ae([hn,op],Rv),ex=(e,t,r)=>e.filter(r).filter(n=>t?.includeHidden===!0?!0:!n.hide),wg=ae([Ec,Cn,zpe],ex,{memoizeOptions:{resultEqualityCheck:og}}),LU=ae([wg],e=>e.filter(t=>t.type==="area"||t.type==="bar").filter(ap)),KP=e=>e.filter(t=>!("stackId"in t)||t.stackId===void 0),Bpe=ae([wg],KP),tx=e=>e.map(t=>t.data).filter(Boolean).flat(1),Fpe=ae([wg],e=>e.some(t=>!t.data)),zU=ae([wg],tx,{memoizeOptions:{resultEqualityCheck:og}}),rx=(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)},VP=ae([zU,tp],rx),GP=(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})),YP=(e,t,r,n,o,a)=>{var i=n.chartData,s=i===void 0?[]:i,l=n.dataStartIndex,u=n.dataEndIndex,c=GP(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},nx=ae([VP,Cn,wg,tp,Fpe,zU],YP);function bg(e){if(wa(e)||e instanceof Date){var t=Number(e);if(Ot(t))return t}}function jU(e){if(Array.isArray(e)){var t=[bg(e[0]),bg(e[1])];return xi(t)?t:void 0}var r=bg(e);if(r!=null)return[r,r]}function Os(e){return e.map(bg).filter(_o)}function Upe(e,t){var r=bg(e),n=bg(t);return r==null&&n==null?0:r==null?-1:n==null?1:r-n}var Wpe=ae([nx],e=>e?.map(t=>t.value).sort(Upe));function BU(e,t){switch(e){case"xAxis":return t.direction==="x";case"yAxis":return t.direction==="y";default:return!1}}function Hpe(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=Os(t);o.length>0&&(n=Math.max(...o))}return n==null?[]:Os(r.flatMap(a=>{var i=Wt(e,a.dataKey),s,l;if(Array.isArray(i)){var u=$U(i,2);s=u[0],l=u[1]}else s=l=i;if(!(!Ot(s)||!Ot(l)))return[n-s,n+l]}))}var eo=e=>{var t=Jn(e),r=wc(e);return bp(e,t,r)},lu=ae([eo],e=>e?.dataKey),qpe=ae([LU,tp,eo],ak),XP=(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=$U(i,2),l=s[0],u=s[1],c=n?[...u].reverse():u,d=c.map(bc);return[l,{stackedData:QB(e,d,r),graphicalItems:c}]}))},Sg=ae([qpe,LU,vc,JS],XP),ZP=(e,t,r,n)=>{var o=t.dataStartIndex,a=t.dataEndIndex;if(n==null&&r!=="zAxis")return e7(e,o,a)},Kpe=ae([Cn],e=>e.allowDataOverflow),Vk=e=>{var t;if(e==null||!("domain"in e))return FP;if(e.domain!=null)return e.domain;if("ticks"in e&&e.ticks!=null){if(e.type==="number"){var r=Os(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:FP},Gk=ae([Cn],Vk),Yk=ae([Gk,Kpe],VS),Vpe=ae([Sg,Ka,hn,Yk],ZP,{memoizeOptions:{resultEqualityCheck:ip}}),kg=e=>e.errorBars,Gpe=(e,t,r)=>e.flatMap(n=>t[n.id]).filter(Boolean).filter(n=>BU(r,n)),Qv=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=>BU(a,f));d.forEach(f=>{var m,y=Wt(f,(m=r.dataKey)!==null&&m!==void 0?m:u.dataKey),x=Hpe(f,y,p);if(x.length>=2){var h=Math.min(...x),g=Math.max(...x);(s==null||hl)&&(l=g)}var v=jU(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=jU(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]},Ype=ae([VP,Cn,Bpe,kg,hn,H9],ox,{memoizeOptions:{resultEqualityCheck:ip}});function Xpe(e){var t=e.value;if(wa(t)||t instanceof Date)return t}var Zpe=(e,t,r)=>{var n=e.map(Xpe).filter(o=>o!=null);return r&&(t.dataKey==null||t.allowDuplicatedCategory&&bT(n))?qS(0,e.length):t.allowDuplicatedCategory?n:Array.from(new Set(n))},JP=e=>e.referenceElements.dots,wp=(e,t,r)=>e.filter(n=>n.ifOverflow==="extendDomain").filter(n=>t==="xAxis"?n.xAxisId===r:n.yAxisId===r),Jpe=ae([JP,hn,op],wp),QP=e=>e.referenceElements.areas,Qpe=ae([QP,hn,op],wp),RP=e=>e.referenceElements.lines,Rpe=ae([RP,hn,op],wp),e5=(e,t)=>{if(e!=null){var r=Os(e.map(n=>t==="xAxis"?n.x:n.y));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},efe=ae(Jpe,hn,e5),t5=(e,t)=>{if(e!=null){var r=Os(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)]}},tfe=ae([Qpe,hn],t5);function rfe(e){var t;if(e.x!=null)return Os([e.x]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.x);return r==null||r.length===0?[]:Os(r)}function nfe(e){var t;if(e.y!=null)return Os([e.y]);var r=(t=e.segment)===null||t===void 0?void 0:t.map(n=>n.y);return r==null||r.length===0?[]:Os(r)}var r5=(e,t)=>{if(e!=null){var r=e.flatMap(n=>t==="xAxis"?rfe(n):nfe(n));if(r.length!==0)return[Math.min(...r),Math.max(...r)]}},ofe=ae([Rpe,hn],r5),afe=ae(efe,ofe,tfe,(e,t,r)=>Qv(e,r,t)),ax=(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?Qv(n,a,o):Qv(a,o),d=Y9(t,c,e.allowDataOverflow);return d??(e.allowDataOverflow&&c==null&&l!=null?l:d)},ife=e=>{if(!(e==null||e.type!=="number"||!("ticks"in e)||e.ticks==null)){var t=Os(e.ticks);if(t.length!==0)return[Math.min(...t),Math.max(...t)]}},sfe=ae([Cn],ife,{memoizeOptions:{resultEqualityCheck:ip}}),lfe=ae([Cn,Gk,Yk,Vpe,Ype,afe,Lt,hn,sfe],ax,{memoizeOptions:{resultEqualityCheck:ip}}),ufe=[0,1],ix=(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"?Zpe(n,e,u):o==="expand"&&!u?ufe:i}},n5=ae([Cn,Lt,VP,nx,vc,hn,lfe],ix),uu=ae([Cn,qP,ng],Hk),sx=(e,t,r)=>{var n=t.niceTicks;if(n!=="none"){var o=Vk(t),a=Array.isArray(o)&&(o[0]==="auto"||o[1]==="auto");if((n==="snap125"||n==="adaptive")&&t!=null&&t.tickCount&&xi(e)){if(a)return YS(e,t.tickCount,t.allowDecimals,n);if(t.type==="number")return XS(e,t.tickCount,t.allowDecimals,n)}if(n==="auto"&&r==="linear"&&t!=null&&t.tickCount){if(a&&xi(e))return YS(e,t.tickCount,t.allowDecimals,"adaptive");if(t.type==="number"&&xi(e))return XS(e,t.tickCount,t.allowDecimals,"adaptive")}}},o5=ae([n5,bp,uu],sx),lx=(e,t,r,n)=>{if(n!=="angleAxis"&&e?.type==="number"&&xi(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},cfe=ae([Cn,n5,o5,hn],lx),dfe=ae(nx,Cn,(e,t)=>{if(!(!t||t.type!=="number")){var r=1/0,n=Array.from(Os(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=Pn(r,e*a),s=e*a/2;return s-i-(s-i)/a*i}return 0}),pfe=(e,t,r)=>{var n=ul(e,t);return n==null||typeof n.padding!="string"?0:FU(e,"xAxis",t,r,n.padding)},ffe=(e,t,r)=>{var n=cl(e,t);return n==null||typeof n.padding!="string"?0:FU(e,"yAxis",t,r,n.padding)},mfe=ae(ul,pfe,(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}}),gfe=ae(cl,ffe,(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}}),a5=ae([Fr,mfe,Xd,Ym,(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]}),i5=ae([Fr,Lt,gfe,Xd,Ym,(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]}),_g=(e,t,r,n)=>{var o;switch(t){case"xAxis":return a5(e,r,n);case"yAxis":return i5(e,r,n);case"zAxis":return(o=HP(e,r))===null||o===void 0?void 0:o.range;case"angleAxis":return oP(e);case"radiusAxis":return aP(e,r);default:return}},UU=ae([Cn,_g],rp),hfe=ae([uu,cfe],ik),s5=ae([Cn,uu,hfe,UU],Jv),l5=(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)}},u5=ae([Lt,nx,bp,hn],l5),Xk=ae([s5],Tv),T8e=ae([s5],MU),O8e=ae([s5,Wpe],qk),P8e=ae([wg,kg,hn],Gpe);function WU(e,t){return e.idt.id?1:0}var Zk=(e,t)=>t,Jk=(e,t,r)=>r,yfe=ae(Km,Zk,Jk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(WU)),vfe=ae(Vm,Zk,Jk,(e,t,r)=>e.filter(n=>n.orientation===t).filter(n=>n.mirror===r).sort(WU)),HU=(e,t)=>{var r=typeof t.height=="number"?t.height:vv;return{width:e.width,height:r}},xfe=(e,t)=>{var r=typeof t.width=="number"?t.width:Yd;return{width:r,height:e.height}},c5=ae(Fr,ul,HU),bfe=(e,t,r)=>{switch(t){case"top":return e.top;case"bottom":return r-e.bottom;default:return 0}},wfe=(e,t,r)=>{switch(t){case"left":return e.left;case"right":return r-e.right;default:return 0}},Sfe=ae(Ko,Fr,yfe,Zk,Jk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=HU(t,s);i==null&&(i=bfe(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}),kfe=ae(qo,Fr,vfe,Zk,Jk,(e,t,r,n,o)=>{var a={},i;return r.forEach(s=>{var l=xfe(t,s);i==null&&(i=wfe(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}),_fe=(e,t)=>{var r=ul(e,t);if(r!=null)return Sfe(e,r.orientation,r.mirror)},qU=ae([Fr,ul,_fe,(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}}}),Cfe=(e,t)=>{var r=cl(e,t);if(r!=null)return kfe(e,r.orientation,r.mirror)},KU=ae([Fr,cl,Cfe,(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}}}),d5=ae(Fr,cl,(e,t)=>{var r=typeof t.width=="number"?t.width:Yd;return{width:r,height:e.height}}),p5=(e,t,r)=>{switch(t){case"xAxis":return c5(e,r).width;case"yAxis":return d5(e,r).height;default:return}},f5=(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&&bT(u))return l}},m5=ae([Lt,nx,Cn,hn],f5),g5=ae([Lt,Lpe,uu,Xk,m5,u5,_g,o5,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}}}),Afe=(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?Yr(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)}},Qk=ae([Lt,bp,uu,Xk,o5,_g,m5,u5,hn],Afe),Efe=(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?Yr(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)}},ki=ae([Lt,bp,Xk,_g,m5,u5,hn],Efe),_i=ae(Cn,Xk,(e,t)=>{if(!(e==null||t==null))return Kk(Kk({},e),{},{scale:t})}),Nfe=ae([Cn,uu,n5,UU],Jv),Tfe=ae([Nfe],Tv),M8e=ae((e,t,r)=>HP(e,r),Tfe,(e,t)=>{if(!(e==null||t==null))return Kk(Kk({},e),{},{scale:t})}),VU=ae([Lt,Km,Vm],(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}}),Ofe=(e,t,r)=>{var n;return(n=e.renderedTicks[t])===null||n===void 0?void 0:n[r]},I8e=ae([Ofe],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,y5=e=>e.options.validateTooltipEventTypes;function v5(e,t,r){if(e==null)return t;var n=e?"axis":"item";return r==null?t:r.includes(n)?n:t}function Nc(e,t){var r=h5(e),n=y5(e);return v5(t,r,n)}function GU(e){return $e(t=>Nc(t,e))}var Rk=(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 YU=e=>e.tooltip.settings;var cu={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},Pfe={itemInteraction:{click:cu,hover:cu},axisInteraction:{click:cu,hover:cu},keyboardInteraction:cu,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}},XU=Cr({name:"tooltip",initialState:Pfe,reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Jt(t.payload))},prepare:Ir()},replaceTooltipEntrySettings:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).tooltipItemPayloads.indexOf(Jt(n));a>-1&&(e.tooltipItemPayloads[a]=Jt(o))},prepare:Ir()},removeTooltipEntrySettings:{reducer(e,t){var r=ea(e).tooltipItemPayloads.indexOf(Jt(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}}}),Ri=XU.actions,ZU=Ri.addTooltipEntrySettings,JU=Ri.replaceTooltipEntrySettings,QU=Ri.removeTooltipEntrySettings,RU=Ri.setTooltipSettingsState,e_=Ri.setActiveMouseOverItemIndex,eW=Ri.mouseLeaveItem,t_=Ri.mouseLeaveChart,tW=Ri.setActiveClickItemIndex,r_=Ri.setMouseOverAxisIndex,rW=Ri.setMouseClickAxisIndex,Cg=Ri.setSyncInteraction,ux=Ri.setKeyboardInteraction;var nW=XU.reducer;function oW(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function n_(e){for(var t=1;t{if(t==null)return cu;var o=jfe(e,t,r);if(o==null)return cu;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($fe(o)){if(a)return n_(n_({},o),{},{active:!0})}else if(n!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:n,graphicalItemId:void 0};return n_(n_({},cu),{},{coordinate:o.coordinate})};function Lfe(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 zfe(e,t){var r=Lfe(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 Bfe(e,t,r){if(r==null||t==null)return!0;var n=Wt(e,t);return n==null||!xi(r)?!0:zfe(n,r)}var Tc=(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||Bfe(u,r,n)?String(l):null};var a_=(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 i_=(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 s_=e=>e.options.tooltipPayloadSearcher;var du=e=>e.tooltip;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 iW(e){for(var t=1;te(t)}function sW(e){if(typeof e=="string")return e}function Vfe(e){if(!(e==null||typeof e!="object")){var t="name"in e?Hfe(e.name):void 0,r="unit"in e?qfe(e.unit):void 0,n="dataKey"in e?Kfe(e.dataKey):void 0,o="payload"in e?e.payload:void 0,a="color"in e?sW(e.color):void 0,i="fill"in e?sW(e.fill):void 0;return{name:t,unit:r,dataKey:n,payload:o,color:a,fill:i}}}function Gfe(e,t){return e??t}var l_=(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=Gfe(y,s),g=Array.isArray(h)?gS(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=tw(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=Vfe(_),E=C?.name,I=C?.dataKey,Q=C?.payload,$=iW(iW({},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(IO({tooltipEntrySettings:$,dataKey:I,payload:Q,value:Wt(Q,I),name:E==null?void 0:String(E)}))});else{var w;p.push(IO({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 x5=ae([eo,qP,ng],Hk),Yfe=ae([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),Xfe=ae([Jn,wc],Rv),Oc=ae([Yfe,eo,Xfe],ex,{memoizeOptions:{resultEqualityCheck:og}}),Zfe=ae([Oc],e=>e.filter(ap)),lW=ae([Oc],tx,{memoizeOptions:{resultEqualityCheck:og}}),Jfe=ae([Oc],e=>e.some(t=>!t.data)),pu=ae([lW,Ka],rx),Qfe=ae([Zfe,Ka,eo],ak),b5=ae([pu,eo,Oc,Ka,Jfe,lW],YP),uW=ae([eo],Vk),Rfe=ae([eo],e=>e.allowDataOverflow),cW=ae([uW,Rfe],VS),eme=ae([Oc],e=>e.filter(ap)),tme=ae([Qfe,eme,vc,JS],XP),rme=ae([tme,Ka,Jn,cW],ZP),nme=ae([Oc],KP),ome=ae([pu,eo,nme,kg,Jn,K9],ox,{memoizeOptions:{resultEqualityCheck:ip}}),ame=ae([JP,Jn,wc],wp),ime=ae([ame,Jn],e5),sme=ae([QP,Jn,wc],wp),lme=ae([sme,Jn],t5),ume=ae([RP,Jn,wc],wp),cme=ae([ume,Jn],r5),dme=ae([ime,cme,lme],Qv),pme=ae([eo,uW,cW,rme,ome,dme,Lt,Jn],ax),Pc=ae([eo,Lt,pu,b5,vc,Jn,pme],ix),fme=ae([Pc,eo,x5],sx),mme=ae([eo,Pc,fme,Jn],lx),dW=e=>{var t=Jn(e),r=wc(e),n=!1;return _g(e,t,r,n)},w5=ae([eo,dW],rp),gme=ae([eo,x5,mme,w5],Jv),S5=ae([gme],Tv),hme=ae([Lt,b5,eo,Jn],f5),yme=ae([Lt,b5,eo,Jn],l5),vme=(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?Yr(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)}}},Ga=ae([Lt,eo,x5,S5,dW,hme,yme,Jn],vme),k5=ae([h5,y5,YU],(e,t,r)=>v5(r.shared,e,t)),pW=e=>e.tooltip.settings.trigger,_5=e=>e.tooltip.settings.defaultIndex,cx=ae([du,k5,pW,_5],o_),es=ae([cx,pu,lu,Pc],Tc),u_=ae([Ga,es],Rk),Ag=ae([cx],e=>{if(e)return e.dataKey}),c_=ae([cx],e=>{if(e)return e.graphicalItemId}),fW=ae([du,k5,pW,_5],i_),xme=ae([qo,Ko,Lt,Fr,Ga,_5,fW],a_),C5=ae([cx,xme],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),A5=ae([cx],e=>{var t;return(t=e?.active)!==null&&t!==void 0?t:!1}),bme=ae([fW,es,Ka,lu,u_,s_,k5],l_),mW=ae([bme],e=>{if(e!=null){var t=e.map(r=>r.payload).filter(r=>r!=null);return Array.from(new Set(t))}});function gW(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 hW(e){for(var t=1;t$e(eo),yW=()=>{var e=_me(),t=$e(Ga),r=$e(S5);return!e||!r?Yi(void 0,t):Yi(hW(hW({},e),{},{scale:r}),t)};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 Eg(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}},bW=(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 Eg(Eg(Eg({},n),nn(n.cx,n.cy,i,a)),{},{angle:a,radius:i})}var s=o.coordinate,l=n.angle;return Eg(Eg(Eg({},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 wW(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 E5=(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(Yr(x-y)!==Yr(h-x)){var v=[];if(Yr(h-x)===Yr(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 d_=()=>$e(ng),N5=(e,t)=>t,SW=(e,t,r)=>r,T5=(e,t,r,n)=>n,kW=ae(Ga,e=>eu(e,t=>t.coordinate)),O5=ae([du,N5,SW,T5],o_),P5=ae([O5,pu,lu,Pc],Tc),_W=(e,t,r)=>{if(t!=null){var n=du(e);return t==="axis"?r==="hover"?n.axisInteraction.hover.dataKey:n.axisInteraction.click.dataKey:r==="hover"?n.itemInteraction.hover.dataKey:n.itemInteraction.click.dataKey}},CW=ae([du,N5,SW,T5],i_),dx=ae([qo,Ko,Lt,Fr,Ga,T5,CW],a_),AW=ae([O5,dx],(e,t)=>{var r;return(r=e.coordinate)!==null&&r!==void 0?r:t}),M5=ae([Ga,P5],Rk),EW=ae([CW,P5,Ka,lu,M5,s_,N5],l_),NW=ae([O5,P5],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),Nme=(e,t,r,n,o,a,i)=>{if(!(!e||!r||!n||!o)&&wW(e,i)){var s=t7(e,t),l=E5(s,a,o,r,n),u=xW(t,o,l,e);return{activeIndex:String(l),activeCoordinate:u}}},Tme=(e,t,r,n,o,a,i)=>{if(!(!e||!n||!o||!a||!r)){var s=P9(e,r);if(s){var l=r7(s,t),u=E5(l,i,a,n,o),c=bW(t,a,u,s);return{activeIndex:String(u),activeCoordinate:c}}}},TW=(e,t,r,n,o,a,i,s)=>{if(!(!e||!t||!n||!o||!a))return t==="horizontal"||t==="vertical"?Nme(e,t,n,o,a,i,s):Tme(e,t,r,n,o,a,i)};var Ng=Z(J()),BW=Z(Qh());var OW=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}}),PW=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:lF}});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 IW(e){for(var t=1;tIW(IW({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),Ime)},jme=new Set(Object.values(ir));function $me(e){return jme.has(e)}var DW=Cr({name:"zIndex",initialState:Dme,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&&!$me(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=Jt(o):e.zIndexMap[n].element=Jt(o):e.zIndexMap[n]={consumers:0,element:a?void 0:Jt(o),panoramaElement:a?Jt(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()}}}),p_=DW.actions,jW=p_.registerZIndexPortal,f_=p_.unregisterZIndexPortal,$W=p_.registerZIndexPortalElement,LW=p_.unregisterZIndexPortalElement;var zW=DW.reducer;function on(e){var t=e.zIndex,r=e.children,n=y7(),o=n&&t!==void 0&&t!==0,a=Ar(),i=(0,Ng.useRef)(void 0),s=(0,Ng.useRef)(new Set),l=Dt(),u=$e(d=>OW(d,t,a));if((0,Ng.useLayoutEffect)(()=>{if(!o){var d=s.current;d.forEach(f=>{l(f_({zIndex:f}))}),d.clear(),i.current=void 0;return}if(s.current.has(t)||(l(jW({zIndex:t})),s.current.add(t)),u){i.current=u;var p=s.current;p.forEach(f=>{f!==t&&(l(f_({zIndex:f})),p.delete(f))})}},[l,t,o,u]),(0,Ng.useLayoutEffect)(()=>{var d=s.current;return()=>{d.forEach(p=>{l(f_({zIndex:p}))}),d.clear()}},[l]),!o)return r;var c=u??i.current;return c?(0,BW.createPortal)(r,c):null}function I5(){return I5=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,h_.useContext)(D5);var fx=Z(J());var KW=Z(qW(),1);var VW=KW.default;var Og=new VW;var v_="recharts.syncEvent.tooltip",$5="recharts.syncEvent.brush";var Mc=(e,t)=>{if(t&&Array.isArray(e)){var r=Number.parseInt(t,10);if(!Wo(r))return e[r]}},qme={chartName:"",tooltipPayloadSearcher:()=>{},eventEmitter:void 0,defaultTooltipEventType:"axis"},GW=Cr({name:"options",initialState:qme,reducers:{createEventEmitter:e=>{e.eventEmitter==null&&(e.eventEmitter=Symbol("rechartsEventEmitter"))}}}),YW=GW.reducer,XW=GW.actions.createEventEmitter;function ZW(e){return e.tooltip.syncInteraction}var Kme={chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},JW=Cr({name:"chartData",initialState:Kme,reducers:{setChartData(e,t){if(e.chartData=Jt(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)}}}),L5=JW.actions,z5=L5.setChartData,QW=L5.setDataStartEndIndexes,Vme=L5.setComputedData;var RW=JW.reducer;var Gme=["x","y"];function eH(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 Pg(e){for(var t=1;tl.rootProps.className);(0,fx.useEffect)(()=>{if(e==null)return Sa;var l=(u,c,d)=>{if(t!==d&&e===u){if(c.payload.active===!1){r(Cg({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=Jme(f,Gme),h=c.payload.sourceViewBox,g=h.x,v=h.y,b=h.width,S=h.height,w=Pg(Pg({},x),{},{x:i.x+(b?(m-g)/b:0)*i.width,y:i.y+(S?(y-v)/S:0)*i.height});r(Pg(Pg({},c),{},{payload:Pg(Pg({},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(Cg({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}if(_==null){r(Cg({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=Cg({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 Og.on(v_,l),()=>{Og.off(v_,l)}},[s,r,t,e,n,o,a,i])}function ege(){var e=$e(QS),t=$e(RS),r=Dt();(0,fx.useEffect)(()=>{if(e==null)return Sa;var n=(o,a,i)=>{t!==i&&e===o&&r(QW(a))};return Og.on($5,n),()=>{Og.off($5,n)}},[r,t,e])}function tH(){var e=Dt();(0,fx.useEffect)(()=>{e(XW())},[e]),Rme(),ege()}function rH(e,t,r,n,o,a){var i=$e(m=>_W(m,e,t)),s=$e(c_),l=$e(RS),u=$e(QS),c=$e(rP),d=$e(ZW),p=d?.sourceViewBox!=null,f=Jd();(0,fx.useEffect)(()=>{if(!p&&u!=null&&l!=null){var m=Cg({active:a,coordinate:r,dataKey:i,index:o,label:typeof n=="number"?String(n):n,sourceViewBox:f,graphicalItemId:s});Og.emit(v_,u,m,l)}},[p,r,i,s,o,n,l,u,c,a,f])}function nH(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 oH(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r{_(RU({shared:g,trigger:v,axisId:w,active:o,defaultIndex:k}))},[_,g,v,w,o,k]);var A=Jd(),C=TS(),E=GU(g),I=(t=$e(R=>NW(R,E,v,k)))!==null&&t!==void 0?t:{},Q=I.activeIndex,$=I.isActive,F=$e(R=>EW(R,E,v,k)),N=$e(R=>M5(R,E,v,k)),O=$e(R=>AW(R,E,v,k)),j=F,T=WW(),D=(r=o??$)!==null&&r!==void 0?r:!1,M=Ww([j,D]),q=oge(M,2),V=q[0],L=q[1],G=E==="axis"?N:void 0;rH(E,v,O,G,Q,D);var W=S??T;if(W==null||A==null||E==null)return null;var ie=j??iH;D||(ie=iH),u&&ie.length&&(ie=$w(ie.filter(R=>R.value!=null&&(R.hide!==!0||n.includeHidden)),p,uge));var Me=ie.length>0,he=oH(oH({},n),{},{payload:ie,label:G,active:D,activeIndex:Q,coordinate:O,accessibilityLayer:C}),ce=ts.createElement(W7,{allowEscapeViewBox:a,animationDuration:i,animationEasing:s,isAnimationActive:c,active:D,coordinate:O,hasPayload:Me,offset:d,position:f,reverseDirection:m,useTranslate3d:y,viewBox:A,wrapperStyle:x,lastBoundingBox:V,innerRef:L,hasPortalFromProps:!!S},cge(l,he));return ts.createElement(ts.Fragment,null,(0,lH.createPortal)(ce,W),D&&ts.createElement(UW,{cursor:h,tooltipEventType:E,coordinate:O,payload:ie,index:Q}))}var fu=e=>null;fu.displayName="Cell";var F5=Z(J()),S_=Z(J());function pge(e,t,r){return(t=fge(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function fge(e){var t=mge(e,"string");return typeof t=="symbol"?t:t+""}function mge(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 x_=class{constructor(t){pge(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 uH(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function gge(e){for(var t=1;t{try{var r=document.getElementById(dH);r||(r=document.createElement("span"),r.setAttribute("id",dH),r.setAttribute("aria-hidden","true"),document.body.appendChild(r)),Object.assign(r.style,bge,t),r.textContent="".concat(e);var n=r.getBoundingClientRect();return{width:n.width,height:n.height}}catch{return{width:0,height:0}}},Sp=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||Xi.isSsr)return{width:0,height:0};if(!fH.enableCache)return pH(t,r);var n=wge(t,r),o=cH.get(n);if(o)return o;var a=pH(t,r);return cH.set(n,a),a};var vH;function b_(e,t){return Cge(e)||_ge(e,t)||kge(e,t)||Sge()}function Sge(){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 kge(e,t){if(e){if(typeof e=="string")return mH(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)?mH(e,t):void 0}}function mH(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(CH));var a=o.map(s=>({word:s,width:Sp(s,n).width})),i=r?0:Sp("\xA0",n).width;return{wordsWithComputedWidth:a,spaceWidth:i}}catch{return null}};function k_(e){return e==="start"||e==="middle"||e==="end"||e==="inherit"}function EH(e){return ar(e)||typeof e=="string"||typeof e=="number"||typeof e=="boolean"}var NH=(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),Kge="\u2026",kH=(e,t,r,n,o,a,i,s)=>{var l=e.slice(0,t),u=AH({breakAll:r,style:n,children:l+Kge});if(!u)return[!1,[]];var c=NH(u.wordsWithComputedWidth,a,i,s),d=c.length>o||TH(c).width>Number(a);return[d,c]},Vge=(e,t,r,n,o)=>{var a=e.maxLines,i=e.children,s=e.style,l=e.breakAll,u=De(a),c=String(i),d=NH(t,n,r,o);if(!u||o)return d;var p=d.length>a||TH(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=kH(c,g,l,s,a,n,r,o),b=wH(v,2),S=b[0],w=b[1],_=kH(c,h,l,s,a,n,r,o),k=wH(_,1),A=k[0];if(!S&&!A&&(f=h+1),S&&A&&(m=h-1),!S&&A){x=w;break}y++}return x||d},_H=e=>{var t=ar(e)?[]:e.toString().split(CH);return[{words:t,width:void 0}]},Gge=e=>{var t=e.width,r=e.scaleToFit,n=e.children,o=e.style,a=e.breakAll,i=e.maxLines;if((t||r)&&!Xi.isSsr){var s,l,u=AH({breakAll:a,children:n,style:o});if(u){var c=u.wordsWithComputedWidth,d=u.spaceWidth;s=c,l=d}else return _H(n);return Vge({breakAll:a,children:n,maxLines:i,style:o},s,l,t,!!r)}return _H(n)},OH="#808080",Yge={angle:0,breakAll:!1,capHeight:"0.71em",fill:OH,lineHeight:"1em",scaleToFit:!1,textAnchor:"start",verticalAnchor:"end",x:0,y:0},kp=(0,S_.forwardRef)((e,t)=>{var r=nr(e,Yge),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=bH(r,zge),p=(0,S_.useMemo)(()=>Gge({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=bH(d,Bge);if(!wa(n)||!wa(o)||p.length===0)return null;var v=Number(n)+(De(f)?f:0),b=Number(o)+(De(m)?m:0);if(!Ot(v)||!Ot(b))return null;var S;switch(c){case"start":S=w_("calc(".concat(i,")"));break;case"middle":S=w_("calc(".concat((p.length-1)/2," * -").concat(a," + (").concat(i," / 2))"));break;default:S=w_("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(De(A)&&De(k)?A/k:1,")"))}return y&&w.push("rotate(".concat(y,", ").concat(v,", ").concat(b,")")),w.length&&(g.transform=w.join(" ")),F5.createElement("text",B5({},gn(g),{ref:t,x:v,y:b,className:xt("recharts-text",x),textAnchor:u,fill:s.includes("url")?OH:s}),p.map((C,E)=>{var I=C.words.join(h?"":" ");return F5.createElement("tspan",{x:v,dy:E===0?S:a,key:"".concat(I,"-").concat(E)},I)}))});kp.displayName="Text";var Ya=Z(J()),Ao=Z(J());var Xge=["labelRef"],Zge=["content"];function PH(e,t){if(e==null)return{};var r,n,o=Jge(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 Ya.createElement(IH.Provider,{value:l},s)},jH=()=>{var e=(0,Ao.useContext)(IH),t=Jd();return e||(t?rv(t):void 0)},$H=(0,Ao.createContext)(null),LH=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 Ya.createElement($H.Provider,{value:u},l)},the=()=>{var e=(0,Ao.useContext)($H),t=$e(ok);return e||t},rhe=e=>{var t=e.value,r=e.formatter,n=ar(e.children)?t:e.children;return typeof r=="function"?r(n):n},Cp=e=>e!=null&&typeof e=="function",nhe=(e,t)=>{var r=Yr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},ohe=(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=nhe(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`).concat(m,",").concat(m,",0,1,").concat(g?0:1,`, - `).concat(x.x,",").concat(x.y),w=or(e.id)?Zl("recharts-radial-line-"):e.id;return qa.createElement("text",gu({},n,{dominantBaseline:"central",className:xt("recharts-radial-bar-label",i)}),qa.createElement("defs",null,qa.createElement("path",{id:w,d:S})),qa.createElement("textPath",{xlinkHref:"#".concat(w)},r))},Ige=(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=en(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=en(n,o,f,u),y=m.x,b=m.y;return{x:y,y:b,textAnchor:"middle",verticalAnchor:"middle"}},Cg=e=>e!=null&&"cx"in e&&De(e.cx),Dge={angle:0,offset:5,zIndex:ar.label,position:"middle",textBreakAll:!1};function jge(e){if(!Cg(e))return e;var t=e.cx,r=e.cy,n=e.outerRadius,o=n*2;return{x:t-n,y:r-n,width:o,upperWidth:o,lowerWidth:o,height:o}}function mu(e){var t,r,n=rr(e,Dge),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=Tge(),y=aH(),b=i==="center"?y:m??y,h,g,v;o==null?h=b:Cg(o)?h=o:h=Wy(o);var x=jge(h);if(!h||or(s)&&or(l)&&!(0,So.isValidElement)(u)&&typeof u!="function")return null;var S=Cg(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Cg(h))S||(v=Ige(h,n.offset,n.position));else if(x){var w=B1({viewBox:x,position:i,offset:n.offset,parentViewBox:Cg(a)?void 0:a,clamp:!0});v=yp(yp({x:w.x,y:w.y,textAnchor:w.horizontalAnchor,verticalAnchor:w.verticalAnchor},w.width!==void 0?{width:w.width}:{}),w.height!==void 0?{height:w.height}:{})}var A=yp(yp(yp(yp({},((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,So.isValidElement)(u)){var k=A.labelRef,_=tH(A,kge);return(0,So.cloneElement)(u,_)}if(typeof u=="function"){var C=A.content,E=tH(A,_ge);if(g=(0,So.createElement)(u,E),(0,So.isValidElement)(g))return g}else g=Oge(n);var j=pn(n);return S&&Cg(h)?Mge(n,i,g,j,h):v==null?null:qa.createElement(tn,{zIndex:n.zIndex},qa.createElement(hp,gu({ref:f,className:xt("recharts-label",d)},j,v,{textAnchor:i_(j.textAnchor)?j.textAnchor:v.textAnchor,breakAll:p}),g))}mu.displayName="Label";var $ge=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?qa.createElement(mu,gu({key:"label-implicit"},n)):ya(e)?qa.createElement(mu,gu({key:"label-implicit",value:e},n)):(0,So.isValidElement)(e)?e.type===mu?(0,So.cloneElement)(e,yp({key:"label-implicit"},n)):qa.createElement(mu,gu({key:"label-implicit",content:e},n)):vp(e)?qa.createElement(mu,gu({key:"label-implicit",content:e},n)):e&&typeof e=="object"?qa.createElement(mu,gu({},e,{key:"label-implicit"},n)):null};function lH(e){var t=e.label,r=e.labelRef,n=aH();return $ge(t,n,r)||null}var hu=Z(J()),Ag=Z(J());var Lge=["valueAccessor"],zge=["dataKey","clockWise","id","textBreakAll","zIndex"];function l_(){return l_=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(JW(t))return t},cH=(0,Ag.createContext)(void 0),Eg=cH.Provider,dH=(0,Ag.createContext)(void 0),pH=dH.Provider;function Uge(){return(0,Ag.useContext)(cH)}function Wge(){return(0,Ag.useContext)(dH)}function s_(e){var t=e.valueAccessor,r=t===void 0?Fge:t,n=uH(e,Lge),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=uH(n,zge),c=Uge(),d=Wge(),p=c||d;return!p||!p.length?null:hu.createElement(tn,{zIndex:l??ar.label},hu.createElement(xr,{className:"recharts-label-list"},p.map((f,m)=>{var y,b=or(o)?r(f,m):Ut(f.payload,o),h=or(i)?{}:{id:"".concat(i,"-").concat(m)};return hu.createElement(mu,l_({key:"label-".concat(m)},pn(f),u,h,{fill:(y=n.fill)!==null&&y!==void 0?y:f.fill,parentViewBox:f.parentViewBox,value:b,textBreakAll:s,viewBox:f.viewBox,index:m,zIndex:0}))})))}s_.displayName="LabelList";function $c(e){var t=e.label;return t?t===!0?hu.createElement(s_,{key:"labelList-implicit"}):hu.isValidElement(t)||vp(t)?hu.createElement(s_,{key:"labelList-implicit",content:t}):typeof t=="object"?hu.createElement(s_,l_({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var fH=Z(J());function x5(){return x5=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=xt("recharts-dot",o);return De(t)&&De(r)&&De(n)?fH.createElement("circle",x5({},dn(e),Am(e),{className:a,cx:t,cy:r,r:n})):null};var b5=e=>e.graphicalItems.polarItems,Hge=ne([fn,Jd],Bv),c_=ne([b5,kn,Hge],Fv),qge=ne([c_],Uv),d_=ne([qge,Gd],Wv),Kge=ne([d_,kn,c_],CP),RBe=ne([d_,kn,c_],(e,t,r)=>r.length>0?e.flatMap(n=>r.flatMap(o=>{var a,i=Ut(n,(a=t.dataKey)!==null&&a!==void 0?a:o.dataKey);return{value:i,errorDomain:[]}})).filter(Boolean):t?.dataKey!=null?e.map(n=>({value:Ut(n,t.dataKey),errorDomain:[]})):e.map(n=>({value:n,errorDomain:[]}))),mH=()=>{},Vge=ne([d_,kn,c_,gg,fn,m9],qv),Gge=ne([kn,Ok,Pk,mH,Vge,mH,Lt,fn],Kv),gH=ne([kn,Lt,d_,Kge,xc,fn,Gge],Vv),Yge=ne([gH,fp,uu],Gv),Xge=ne([kn,gH,Yge,fn],Yv),e7e=ne([uu,Xge],HS);var Zge={radiusAxis:{},angleAxis:{}},hH=_r({name:"polarAxis",initialState:Zge,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Xt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Xt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),p_=hH.actions,o7e=p_.addRadiusAxis,a7e=p_.removeRadiusAxis,i7e=p_.addAngleAxis,s7e=p_.removeAngleAxis;var yH=hH.reducer;function f_(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Vt=Z(J()),Dg=Z(J());function vH(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 xH(e){for(var t=1;tt,w5=ne([b5,ehe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),the=[],S5=(e,t,r)=>r?.length===0?the:r,bH=ne([Gd,w5,S5],(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=>xH(xH({},t.presentationProps),a.props))),o!=null)return o}}),wH=ne([bH,w5,S5],(e,t,r)=>{if(!(e==null||t==null))return e.map((n,o)=>{var a,i=Ut(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:hi(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),SH=ne([bH,w5,S5,Br],(e,t,r,n)=>{if(!(t==null||e==null))return kH({offset:n,pieSettings:t,displayedData:e,cells:r})});var TH=Z(J()),OH=Z(AH());var EH=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",NH=null,C5=null,PH=e=>{if(e===NH&&Array.isArray(C5))return C5;var t=[];return TH.Children.forEach(e,r=>{or(r)||((0,OH.isFragment)(r)?t=t.concat(PH(r.props.children)):t.push(r))}),C5=t,NH=e,t};function e0(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>EH(o)):n=[EH(t)],PH(e).forEach(o=>{var a=Do(o,"type.displayName")||Do(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var Ng=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Tg=Z(J()),t0=Z(J());function MH(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function IH(e){for(var t=1;t{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(Lk({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},n0=e=>{var t=Dt();return(r,n)=>o=>{e?.(r,n,o),t(_U())}},o0=(e,t,r)=>{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(CU({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var a0=Z(J());function zc(e){var t=e.tooltipEntrySettings,r=Dt(),n=Cr(),o=(0,a0.useRef)(null);return(0,a0.useLayoutEffect)(()=>{n||(o.current===null?r(bU(t)):o.current!==t&&r(wU({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,a0.useLayoutEffect)(()=>()=>{o.current&&(r(SU(o.current)),o.current=null)},[r]),null}var Bc=Z(J());function Og(e){var t=e.legendPayload,r=Dt(),n=Cr(),o=(0,Bc.useRef)(null);return(0,Bc.useLayoutEffect)(()=>{n||(o.current===null?r(gO(t)):o.current!==t&&r(hO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Bc.useLayoutEffect)(()=>()=>{o.current&&(r(yO(o.current)),o.current=null)},[r]),null}function jH(e){var t=e.legendPayload,r=Dt(),n=$e(Lt),o=(0,Bc.useRef)(null);return(0,Bc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(gO(t)):o.current!==t&&r(hO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,Bc.useLayoutEffect)(()=>()=>{o.current&&(r(yO(o.current)),o.current=null)},[r]),null}var zH=Z(J()),l0=Z(J());function dhe(e,t){return ghe(e)||mhe(e,t)||fhe(e,t)||phe()}function phe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function fhe(e,t){if(e){if(typeof e=="string")return $H(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$H(e,t):void 0}}function $H(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r2&&arguments[2]!==void 0?arguments[2]:[],n=[];for(var o of r)n.push({status:"removed",prev:o});for(var a=0;ae[Math.floor(a*r)]);return A5(n,t)}function yhe(e,t){var r=t.map((n,o)=>e[o]);return A5(r,t)}function vhe(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=dhe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return A5(a,t,i)}function s0(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===xp?hhe(e,t):r===i0?yhe(e,t):xhe(e,t,r)}var Pg=Z(J());function __(e,t){var r=(0,Pg.useRef)(e),n=(0,Pg.useRef)(t.current),o=(0,Pg.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,Pg.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 bhe(e,t){return _he(e)||khe(e,t)||She(e,t)||whe()}function whe(){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 She(e,t){if(e){if(typeof e=="string")return LH(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)?LH(e,t):void 0}}function LH(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,l0.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function Uc(e){var t,r=e.animationInput,n=e.animationIdPrefix,o=e.items,a=e.previousItemsRef,i=e.isAnimationActive,s=e.animationBegin,l=e.animationDuration,u=e.animationEasing,c=e.onAnimationStart,d=e.onAnimationEnd,p=e.animationInterpolateFn,f=e.animationMatchBy,m=e.shouldUpdatePreviousRef,y=e.children,b=e.layout,h=vS(r,n),g=__(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,x=s0(v,o,f??xp);return zH.createElement(yS,{animationId:h,begin:s,duration:l,isActive:i,easing:u,onAnimationEnd:d,onAnimationStart:c,key:h},S=>{var w=v==null,A=o==null?o:p(x,S,b),k=m?m(S):S>0;return g.syncStepValue(A,S,k),A==null?null:y(A,S,w)})}var UH=Z(J()),N5=Z(J());var C_=Z(J());var E5;function Che(e,t){return The(e)||Nhe(e,t)||Ehe(e,t)||Ahe()}function Ahe(){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 Ehe(e,t){if(e){if(typeof e=="string")return BH(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)?BH(e,t):void 0}}function BH(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=C_.useState(()=>Zl("uid-")),t=Che(e,1),r=t[0];return r},A_=(E5=C_.useId)!==null&&E5!==void 0?E5:Ohe;function FH(e,t){var r=A_();return t||(e?"".concat(e,"-").concat(r):r)}var Phe=(0,N5.createContext)(void 0),Wc=e=>{var t=e.id,r=e.type,n=e.children,o=FH("recharts-".concat(r),t);return UH.createElement(Phe.Provider,{value:o},n(o))};var Os=Z(J());var Mhe={cartesianItems:[],polarItems:[]},WH=_r({name:"graphicalItems",initialState:Mhe,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Xt(t.payload))},prepare:Mr()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Yo(e).cartesianItems.indexOf(Xt(n));a>-1&&(e.cartesianItems[a]=Xt(o))},prepare:Mr()},removeCartesianGraphicalItem:{reducer(e,t){var r=Yo(e).cartesianItems.indexOf(Xt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:Mr()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Xt(t.payload))},prepare:Mr()},removePolarGraphicalItem:{reducer(e,t){var r=Yo(e).polarItems.indexOf(Xt(t.payload));r>-1&&e.polarItems.splice(r,1)},prepare:Mr()},replacePolarGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=Yo(e).polarItems.indexOf(Xt(n));a>-1&&(e.polarItems[a]=Xt(o))},prepare:Mr()}}}),Mg=WH.actions,HH=Mg.addCartesianGraphicalItem,qH=Mg.replaceCartesianGraphicalItem,KH=Mg.removeCartesianGraphicalItem,VH=Mg.addPolarGraphicalItem,GH=Mg.removePolarGraphicalItem,YH=Mg.replacePolarGraphicalItem;var XH=WH.reducer;var Ihe=e=>{var t=Dt(),r=(0,Os.useRef)(null);return(0,Os.useLayoutEffect)(()=>{r.current===null?t(HH(e)):r.current!==e&&t(qH({prev:r.current,next:e})),r.current=e},[t,e]),(0,Os.useLayoutEffect)(()=>()=>{r.current&&(t(KH(r.current)),r.current=null)},[t]),null},Ig=(0,Os.memo)(Ihe),Dhe=e=>{var t=Dt(),r=(0,Os.useRef)(null);return(0,Os.useLayoutEffect)(()=>{r.current===null?t(VH(e)):r.current!==e&&t(YH({prev:r.current,next:e})),r.current=e},[t,e]),(0,Os.useLayoutEffect)(()=>()=>{r.current&&(t(GH(r.current)),r.current=null)},[t]),null},ZH=(0,Os.memo)(Dhe);var jhe=["key"],$he=["onMouseEnter","onClick","onMouseLeave"],Lhe=["id"],zhe=["id"];function bp(){return bp=Object.assign?Object.assign.bind():function(e){for(var t=1;te0(e.children,fu),[e.children]),r=$e(n=>wH(n,e.id,t));return r==null?null:Vt.createElement(jH,{legendPayload:r})}function qhe(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(Vt.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 Khe=Vt.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=qhe(p),m=n.map(b=>{var h=b.tooltipPayload;return f==null||h==null?h:h.map(g=>_n(_n({},g),{},{color:f,fill:f}))}),y={dataDefinedOnItem:m,getPosition:b=>{var h;return(h=n[Number(b)])===null||h===void 0?void 0:h.tooltipPosition},settings:{stroke:o,strokeWidth:a,fill:i,dataKey:t,nameKey:r,name:hi(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Vt.createElement(zc,{tooltipEntrySettings:y})}),Vhe=(e,t)=>e>t?"start":etypeof t=="function"?On(t(e),r,r*.8):On(t,r,r*.8),Yhe=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=SS(a,i),l=o+On(e.cx,a,a/2),u=n+On(e.cy,i,i/2),c=On(e.innerRadius,s,0),d=Ghe(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}},Xhe=(e,t)=>{var r=Vr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Zhe=(e,t)=>{if(Vt.isValidElement(e))return Vt.cloneElement(e,t);if(typeof e=="function")return e(t);var r=xt("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=E_(t,jhe);return Vt.createElement(rl,bp({},o,{type:"linear",className:r}))},Jhe=(e,t,r)=>{if(Vt.isValidElement(e))return Vt.cloneElement(e,t);var n=r;if(typeof e=="function"&&(n=e(t),Vt.isValidElement(n)))return n;var o=xt("recharts-pie-label-text",f_(e));return Vt.createElement(hp,bp({},t,{alignmentBaseline:"middle",className:o}),n)};function Qhe(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=dn(r),l=di(o),u=di(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=en(p.cx,p.cy,p.outerRadius+c,m),b=_n(_n(_n(_n({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:Vhe(y.x,p.cx)},y),h=_n(_n(_n(_n({},s),p),{},{fill:"none",stroke:p.fill},u),{},{index:f,points:[en(p.cx,p.cy,p.outerRadius,m),y],key:"line"});return Vt.createElement(tn,{zIndex:ar.label,key:"label-".concat(p.startAngle,"-").concat(p.endAngle,"-").concat(p.midAngle,"-").concat(f)},Vt.createElement(xr,null,a&&Zhe(a,h),Jhe(o,b,Ut(p,i))))});return Vt.createElement(xr,{className:"recharts-pie-labels"},d)}function Rhe(e){var t=e.sectors,r=e.props,n=e.showLabels,o=r.label;return typeof o=="object"&&o!=null&&"position"in o?Vt.createElement($c,{label:o}):Vt.createElement(Qhe,{sectors:t,props:r,showLabels:n})}function eye(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(Ri),d=$e(vg),p=$e(Gk),f=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,b=E_(o,$he),h=r0(f,o.dataKey,i),g=n0(y),v=o0(m,o.dataKey,i);return t==null||t.length===0?null:Vt.createElement(Vt.Fragment,null,t.map((x,S)=>{if(x?.startAngle===0&&x?.endAngle===0&&t.length!==1)return null;var w=p==null||p===i,A=String(S)===c&&(d==null||o.dataKey===d)&&w,k=c?n:null,_=r&&A?r:k,C=_n(_n({},x),{},{stroke:x.stroke,tabIndex:-1,index:S,isActive:A,animationElapsedTime:s,isAnimating:l,isEntrance:u,[eS]:S,[tS]:i});return Vt.createElement(xr,bp({key:"sector-".concat(x?.startAngle,"-").concat(x?.endAngle,"-").concat(x.midAngle,"-").concat(S),tabIndex:-1,className:"recharts-pie-sector"},Ql(b,x,S),{onMouseEnter:h(x,S),onMouseLeave:g(x,S),onClick:v(x,S)}),Vt.createElement(Lc,{option:_??a,DefaultShape:QH,shapeProps:C}))}))}function kH(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=Xhe(s,l),m=Math.abs(f),y=n.length<=1?0:(t=r.paddingAngle)!==null&&t!==void 0?t:0,b=n.filter(k=>Ut(k,u,0)!==0).length,h=(m>=360?b:b-1)*y,g=n.reduce((k,_)=>{var C=Ut(_,u,0);return k+(De(C)?C:0)},0),v=p>0&&g>0&&n.some(k=>{var _=Ut(k,u,0),C=(De(_)?_:0)/g;return _!==0&&C*m0){var A;w=n.map((k,_)=>{var C=Ut(k,u,0),E=Ut(k,c,_),j=Yhe(r,a,k),X=(De(C)?C:0)/g,z,U=_n(_n({},k),o&&o[_]&&o[_].props),N=U!=null&&"fill"in U&&typeof U.fill=="string"?U.fill:r.fill;_?z=A.endAngle+Vr(f)*y*(C!==0?1:0):z=s;var O=z+Vr(f)*((C!==0?x:0)+X*S),D=(z+O)/2,T=(j.innerRadius+j.outerRadius)/2,I=[{name:E,value:C,payload:U,dataKey:u,type:d,color:N,fill:N,graphicalItemId:r.id}],P=en(j.cx,j.cy,T,D);return A=_n(_n(_n(_n({},r.presentationProps),{},{percent:X,cornerRadius:typeof i=="string"?parseFloat(i):i,name:E,tooltipPayload:I,midAngle:D,middleRadius:T,tooltipPosition:P},U),j),{},{value:C,dataKey:u,startAngle:z,endAngle:O,payload:U,paddingAngle:C!==0?Vr(f)*y:0}),A})}return w}function tye(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,Dg.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 Vt.createElement(pH,{value:t?o:void 0},n)}var rye=(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?Do(a.next,"paddingAngle",0):0;if(a.status==="matched"){var l=kr(a.prev.endAngle-a.prev.startAngle,a.next.endAngle-a.next.startAngle,t),u=_n(_n({},a.next),{},{startAngle:o+s,endAngle:o+l+s});r.push(u),o=u.endAngle}else{var c=kr(0,a.next.endAngle-a.next.startAngle,t),d=_n(_n({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function nye(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=Fc(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,y=p.handleAnimationEnd,b=FB();if(b==null)return null;var h=l[0];return Vt.createElement(tye,{showLabels:!f,sectors:l},Vt.createElement(Uc,{animationInput:a,animationIdPrefix:"recharts-pie-",items:l,previousItemsRef:i,isAnimationActive:a.isAnimationActive,animationBegin:a.animationBegin,animationDuration:a.animationDuration,animationEasing:a.animationEasing,onAnimationStart:m,onAnimationEnd:y,animationInterpolateFn:d,animationMatchBy:a.animationMatchBy,layout:b},(g,v,x)=>Vt.createElement(xr,null,Vt.createElement(eye,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:f||v<1,isEntrance:x}))),Vt.createElement(Rhe,{showLabels:!f,sectors:l,props:a}),Vt.createElement(sH,{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 oye={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:rye,animationMatchBy:i0,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:QH,startAngle:0,stroke:"#fff",zIndex:ar.area};function aye(e){var t=e.id,r=E_(e,Lhe),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,Dg.useMemo)(()=>e0(e.children,fu),[e.children]),s=$e(c=>SH(c,t,i)),l=(0,Dg.useRef)(null),u=xt("recharts-pie",o);return n||s==null?(l.current=null,Vt.createElement(xr,{tabIndex:a,className:u})):Vt.createElement(tn,{zIndex:e.zIndex},Vt.createElement(Khe,{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}),Vt.createElement(xr,{tabIndex:a,className:u},Vt.createElement(nye,{props:_n(_n({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function iye(e){var t=rr(e,oye),r=t.id,n=E_(t,zhe),o=dn(n);return Vt.createElement(Wc,{id:r,type:"pie"},a=>Vt.createElement(Vt.Fragment,null,Vt.createElement(ZH,{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}),Vt.createElement(Hhe,bp({},n,{id:a})),Vt.createElement(aye,bp({},n,{id:a}))))}var N_=iye;N_.displayName="Pie";var u0=Z(J()),O_=Z(J());var sye=["points"];function RH(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function T5(e){for(var t=1;t{var h,g,v=T5(T5(T5({r:3},i),p),{},{index:b,cx:(h=y.x)!==null&&h!==void 0?h:void 0,cy:(g=y.y)!==null&&g!==void 0?g:void 0,dataKey:a,value:y.value,payload:y.payload,points:t});return u0.createElement(fye,{key:"dot-".concat(b),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),u0.createElement(tn,{zIndex:c},u0.createElement(xr,T_({className:n},m),f))}var c0=Z(J()),I_=Z(J());function eq(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function M_(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var pq=ne([dq,Lo,zo],(e,t,r)=>{if(!(!e||t==null||r==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,r-e.top-e.bottom)}});var Hc=()=>$e(pq),fq=()=>$e(zU);function mq(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function P5(e){for(var t=1;t{var t=e.point,r=e.childIndex,n=e.mainColor,o=e.activeDot,a=e.dataKey,i=e.clipPath;if(o===!1||t.x==null||t.y==null)return null;var s={index:r,dataKey:a,cx:t.x,cy:t.y,r:4,fill:n??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},l=P5(P5(P5({},s),di(o)),Am(o)),u;return(0,I_.isValidElement)(o)?u=(0,I_.cloneElement)(o,l):typeof o=="function"?u=o(l):u=c0.createElement(u_,l),c0.createElement(xr,{className:"recharts-active-dot",clipPath:i},u)};function d0(e){var t=e.points,r=e.mainColor,n=e.activeDot,o=e.itemDataKey,a=e.clipPath,i=e.zIndex,s=i===void 0?ar.activeDot:i,l=$e(Ri),u=fq();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return or(c)?null:c0.createElement(tn,{zIndex:s},c0.createElement(Sye,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function kye(e,t){return Eye(e)||Aye(e,t)||Cye(e,t)||_ye()}function _ye(){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 gq(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)?gq(e,t):void 0}}function gq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var n=r??e;if(!or(n))return On(n,t,0)},yq=(e,t,r)=>{var n={},o=e.filter(Qd),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=kye(u,2),p=d[0],f=d[1],m=f.map(b=>b.dataKey),y=hq(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=hq(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function vq(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;tg+(v.barSize||0),0);p+=(i-1)*s,p>=r&&(p-=(i-1)*s,s=0),p>=r&&d>0&&(c=!0,d*=.9,p=i*d);var f=Math.round((r-p)/2),m={offset:f-s,size:0};l=n.reduce((g,v)=>{var x,S={stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:m.offset+m.size+s,size:c?d:(x=v.barSize)!==null&&x!==void 0?x:0}},w=[...g,S];return m=S.position,w},u)}else{var y=On(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var b=(r-2*y-(i-1)*s)/i;b>1&&(b=Math.round(b));var h=Tt(o)?Math.min(b,o):b;l=n.reduce((g,v,x)=>[...g,{stackId:v.stackId,dataKeys:v.dataKeys,position:{offset:y+i*(b-h)/2+(h+s)*x,size:h}}],u)}return l}}var xq=(e,t,r,n,o,a,i)=>{var s=or(i)?t:i,l=Pye(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>D_(D_({},u),{},{position:D_(D_({},u.position),{},{offset:u.position.offset-o/2})}))),l};var bq=(e,t)=>{var r=wc(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 wq=(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 Sq(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Tt(e.zIndex)?e.zIndex:t}var kq=Z(J());var j_=e=>{var t=e.chartData,r=Dt(),n=Cr();return(0,kq.useEffect)(()=>n?()=>{}:(r(h5(t)),()=>{r(h5(void 0))}),[t,r,n]),null};var _q={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},Cq=_r({name:"brush",initialState:_q,reducers:{setBrushSettings(e,t){return t.payload==null?_q:t.payload}}}),MFe=Cq.actions.setBrushSettings;var Aq=Cq.reducer;function Mye(e){return(e%180+180)%180}var Eq=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=Mye(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=Yo(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=Yo(e).areas.findIndex(n=>n===t.payload);r!==-1&&e.areas.splice(r,1)},addLine:(e,t)=>{e.lines.push(Xt(t.payload))},removeLine:(e,t)=>{var r=Yo(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),jg=Nq.actions,LFe=jg.addDot,zFe=jg.removeDot,BFe=jg.addArea,FFe=jg.removeArea,UFe=jg.addLine,WFe=jg.removeLine;var Tq=Nq.reducer;var p0=Z(J()),f0=Z(J());function Dye(e,t){return zye(e)||Lye(e,t)||$ye(e,t)||jye()}function jye(){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 $ye(e,t){if(e){if(typeof e=="string")return Oq(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)?Oq(e,t):void 0}}function Oq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,f0.useState)("".concat(Zl("recharts"),"-clip")),n=Dye(r,1),o=n[0],a=Hc();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return p0.createElement(Bye.Provider,{value:o},p0.createElement("defs",null,p0.createElement("clipPath",{id:o},p0.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var mn=Z(J()),aa=Z(J());function Mq(){}function M5(e){if(!e||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)==="[object Object]":!1}function Iq(e,t,r){return m0(e,t,void 0,void 0,void 0,void 0,r)}function m0(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 g0(e,t,a,i)}return g0(e,t,a,i)}function g0(e,t,r,n){if(Object.is(e,t))return!0;let o=Rl(e),a=Rl(t);if(o==="[object Arguments]"&&(o=Om),a==="[object Arguments]"&&(a=Om),o!==a)return!1;switch(o){case Em:return e.toString()===t.toString();case Nm:return hc(e.valueOf(),t.valueOf());case Tm:case R1:case Q1:return Object.is(e.valueOf(),t.valueOf());case Z1:return e.source===t.source&&e.flags===t.flags;case j6: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 ew:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!m0(u,t.get(l),l,e,t,r,n))return!1;return!0;case tw:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cm0(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case rw:case aw:case iw:case sw:case lw:case L6:case uw:case cw:case dw:case z6:case pw:case fw:if(Yy(e)!==Yy(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 $q(e,t){return $_(e,t+1)}function Lq(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:$_(n,u)};var y=l,b,h=()=>(b===void 0&&(b=r(m,y)),b),g=m.coordinate,v=l===0||wp(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 zq(e,t,r,n,o){var a=(n||[]).slice(),i=a.length;if(i===0)return[];for(var s=t.start,l=t.end,u=1;u<=i;u++){for(var c=(i-1)%u,d=s,p=!0,f=function(){var x=n[y];if(x==null)return 0;var S=y,w,A=()=>(w===void 0&&(w=r(x,S)),w),k=x.coordinate,_=y===c||wp(e,k,A,d,l);if(!_)return p=!1,1;_&&(d=k+e*(A()/2+o))},m,y=c;y(y===void 0&&(y=r(f,p)),y);if(p===i-1){var h=e*(m.coordinate+e*b()/2-l);a[p]=m=oa(oa({},m),{},{tickCoord:h>0?m.coordinate-h*e:m.coordinate})}else a[p]=m=oa(oa({},m),{},{tickCoord:m.coordinate});if(m.tickCoord!=null){var g=wp(e,m.tickCoord,b,s,l);g&&(l=m.tickCoord-e*(b()/2+o),a[p]=oa(oa({},m),{},{isShow:!0}))}},c=i-1;c>=0;c--)u(c);return a}function qye(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=oa(oa({},c),{},{tickCoord:p>0?c.coordinate-p*e:c.coordinate}),c.tickCoord!=null){var f=wp(e,c.tickCoord,()=>d,l,u);f&&(u=c.tickCoord-e*(d/2+o),i[s-1]=oa(oa({},c),{},{isShow:!0}))}}}for(var m=a?s-1:s,y=function(g){var v=i[g];if(v==null)return 1;var x=v,S,w=()=>(S===void 0&&(S=r(v,g)),S);if(g===0){var A=e*(x.coordinate-e*w()/2-l);i[g]=x=oa(oa({},x),{},{tickCoord:A<0?x.coordinate-A*e:x.coordinate})}else i[g]=x=oa(oa({},x),{},{tickCoord:x.coordinate});if(x.tickCoord!=null){var k=wp(e,x.tickCoord,w,l,u);k&&(l=x.tickCoord+e*(w()/2+o),i[g]=oa(oa({},x),{},{isShow:!0}))}},b=0;b{var A=typeof u=="function"?u(S.value,w):S.value;return m==="width"?Dq(gp(A,{fontSize:t,letterSpacing:r}),y,d):gp(A,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?Vr(g.coordinate-h.coordinate):1,x=jq(a,v,m);return l==="equidistantPreserveStart"?Lq(v,x,b,o,i):l==="equidistantPreserveEnd"?zq(v,x,b,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=qye(v,x,b,o,i,l==="preserveStartEnd"):f=Hye(v,x,b,o,i),f.filter(S=>S.isShow))}var Fq=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 Uq=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 Kye={xAxis:{},yAxis:{}},Wq=_r({name:"renderedTicks",initialState:Kye,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Xt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),Hq=Wq.actions,qq=Hq.setRenderedTicks,Kq=Hq.removeRenderedTicks;var Vq=Wq.reducer;var Vye=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function Gq(e,t){return Zye(e)||Xye(e,t)||Yye(e,t)||Gye()}function Gye(){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 Yye(e,t){if(e){if(typeof e=="string")return Yq(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)?Yq(e,t):void 0}}function Yq(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&&I5(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(qq({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,aa.useEffect)(()=>n==null||r==null?va:()=>{o(Kq({axisId:n,axisType:r}))},[o,n,r]),null}var lve=(0,aa.forwardRef)((e,t)=>{var r=e.ticks,n=r===void 0?[]:r,o=e.tick,a=e.tickLine,i=e.stroke,s=e.tickFormatter,l=e.unit,u=e.padding,c=e.tickTextProps,d=e.orientation,p=e.mirror,f=e.x,m=e.y,y=e.width,b=e.height,h=e.tickSize,g=e.tickMargin,v=e.fontSize,x=e.letterSpacing,S=e.getTicksConfig,w=e.events,A=e.axisType,k=e.axisId,_=h0(Un(Un({},S),{},{ticks:n}),v,x),C=dn(S),E=di(o),j=i_(C.textAnchor)?C.textAnchor:ove(d,p),X=ave(d,p),z={};typeof a=="object"&&(z=a);var U=Un(Un({},C),{},{fill:"none"},z),N=_.map(T=>Un({entry:T},nve(T,f,m,y,b,d,h,p,g))),O=N.map(T=>{var I=T.entry,P=T.line;return mn.createElement(xr,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(I.value,"-").concat(I.coordinate,"-").concat(I.tickCoord)},a&&mn.createElement("line",Sp({},U,P,{className:xt("recharts-cartesian-axis-tick-line",Do(a,"className"))})))}),D=N.map((T,I)=>{var P,H,G=T.entry,L=T.tick,Y=Un(Un(Un(Un({verticalAnchor:X},C),{},{textAnchor:j,stroke:"none",fill:i},L),{},{index:I,payload:G,visibleTicksCount:_.length,tickFormatter:s,padding:u},c),{},{angle:(P=(H=c?.angle)!==null&&H!==void 0?H:C.angle)!==null&&P!==void 0?P:0}),W=Un(Un({},Y),E);return mn.createElement(xr,Sp({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(G.value,"-").concat(G.coordinate,"-").concat(G.tickCoord)},Ql(w,G,I)),o&&mn.createElement(ive,{option:o,tickProps:W,value:"".concat(typeof s=="function"?s(G.value,I):G.value).concat(l||"")}))});return mn.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(A,"-ticks")},mn.createElement(sve,{ticks:_,axisId:k,axisType:A}),D.length>0&&mn.createElement(tn,{zIndex:ar.label},mn.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(A,"-tick-labels"),ref:t},D)),O.length>0&&mn.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(A,"-tick-lines")},O))}),uve=(0,aa.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=Jye(e,Vye),d=(0,aa.useState)(""),p=Gq(d,2),f=p[0],m=p[1],y=(0,aa.useState)(""),b=Gq(y,2),h=b[0],g=b[1],v=(0,aa.useRef)(null);(0,aa.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var S;return Fq({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 Uq({ticks:v.current,label:(S=e.labelRef)===null||S===void 0?void 0:S.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var x=(0,aa.useCallback)(S=>{if(S){var w=S.getElementsByClassName("recharts-cartesian-axis-tick-value");v.current=w;var A=w[0];if(A){var k=window.getComputedStyle(A),_=k.fontSize,C=k.letterSpacing;(_!==f||C!==h)&&(m(_),g(C))}}},[f,h]);return i||n!=null&&n<=0||o!=null&&o<=0?null:mn.createElement(tn,{zIndex:e.zIndex},mn.createElement(xr,{className:xt("recharts-cartesian-axis",a)},mn.createElement(rve,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:dn(e)}),mn.createElement(lve,{ref:x,axisType:l,events:c,fontSize:f,getTicksConfig:e,height:e.height,letterSpacing:h,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:u}),mn.createElement(oH,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},mn.createElement(lH,{label:e.label,labelRef:e.labelRef}),e.children)))}),y0=mn.forwardRef((e,t)=>{var r=rr(e,rs);return mn.createElement(uve,Sp({},r,{ref:t}))});y0.displayName="CartesianAxis";var Wn=Z(J());var L_=Z(J());var Zq={grid:{stroke:"#ccc",fill:"none"}};var Jq=(0,L_.createContext)(Zq),VUe=Jq.Provider,Qq=()=>(0,L_.useContext)(Jq);var cve=["x1","y1","x2","y2","key"],dve=["offset"],pve=["xAxisId","yAxisId"],fve=["xAxisId","yAxisId"];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 ia(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 Wn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function eK(e){var t=e.option,r=e.lineItemProps,n;if(Wn.isValidElement(t))n=Wn.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=z_(r,cve),d=(o=dn(c))!==null&&o!==void 0?o:{},p=d.offset,f=z_(d,dve),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=Wn.createElement("line",kp({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function xve(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=z_(e,pve),u=a.map((c,d)=>{var p=ia(ia({},l),{},{x1:t,y1:c,x2:t+r,y2:c,key:"line-".concat(d),index:d});return Wn.createElement(eK,{key:"line-".concat(d),option:o,lineItemProps:p})});return Wn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function bve(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=z_(e,fve),u=a.map((c,d)=>{var p=ia(ia({},l),{},{x1:c,y1:t,x2:c,y2:t+r,key:"line-".concat(d),index:d});return Wn.createElement(eK,{option:o,lineItemProps:p,key:"line-".concat(d)})});return Wn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function wve(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,o=e.y,a=e.width,i=e.height,s=e.horizontalPoints,l=e.horizontal,u=l===void 0?!0:l;if(!u||!t||!t.length||s==null)return null;var c=s.map(p=>Math.round(p+o-o)).sort((p,f)=>p-f);o!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,b=y?o+i-p:m-p;if(b<=0)return null;var h=f%t.length;return Wn.createElement("rect",{key:"react-".concat(f),y:p,x:n,height:b,width:a,stroke:"none",fill:t[h],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return Wn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function Sve(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,o=e.fillOpacity,a=e.x,i=e.y,s=e.width,l=e.height,u=e.verticalPoints;if(!r||!n||!n.length)return null;var c=u.map(p=>Math.round(p+a-a)).sort((p,f)=>p-f);a!==c[0]&&c.unshift(0);var d=c.map((p,f)=>{var m=c[f+1],y=m==null,b=y?a+s-p:m-p;if(b<=0)return null;var h=f%n.length;return Wn.createElement("rect",{key:"react-".concat(f),x:p,y:i,width:b,height:l,stroke:"none",fill:n[h],fillOpacity:o,className:"recharts-cartesian-grid-bg"})});return Wn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var kve=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return iO(h0(ia(ia(ia({},rs),r),{},{ticks:sO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},_ve=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return iO(h0(ia(ia(ia({},rs),r),{},{ticks:sO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},Cve={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:ar.grid};function yu(e){var t,r,n,o,a,i,s=Wm(),l=Hm(),u=iS(),c=ia(ia({},rr(e,Cve)),{},{x:De(e.x)?e.x:u.left,y:De(e.y)?e.y:u.top,width:De(e.width)?e.width:u.width,height:De(e.height)?e.height:u.height}),d=c.xAxisId,p=c.yAxisId,f=c.x,m=c.y,y=c.width,b=c.height,h=c.syncWithTicks,g=c.horizontalValues,v=c.verticalValues,x=Cr(),S=$e(O=>GP(O,"xAxis",d,x)),w=$e(O=>GP(O,"yAxis",p,x)),A=Qq(),k={stroke:(t=c.stroke)!==null&&t!==void 0?t:A.grid.stroke,strokeWidth:(r=c.strokeWidth)!==null&&r!==void 0?r:A.grid.strokeWidth,strokeOpacity:(n=c.strokeOpacity)!==null&&n!==void 0?n:A.grid.strokeOpacity,strokeDasharray:(o=c.strokeDasharray)!==null&&o!==void 0?o:A.grid.strokeDasharray};if(!La(y)||!La(b)||!De(f)||!De(m))return null;var _=c.verticalCoordinatesGenerator||kve,C=c.horizontalCoordinatesGenerator||_ve,E=c.horizontalPoints,j=c.verticalPoints;if((!E||!E.length)&&typeof C=="function"){var X=g&&g.length,z=C({yAxis:w?ia(ia({},w),{},{ticks:X?g:w.ticks}):void 0,width:s??y,height:l??b,offset:u},X?!0:h);Um(Array.isArray(z),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof z,"]")),Array.isArray(z)&&(E=z)}if((!j||!j.length)&&typeof _=="function"){var U=v&&v.length,N=_({xAxis:S?ia(ia({},S),{},{ticks:U?v:S.ticks}):void 0,width:s??y,height:l??b,offset:u},U?!0:h);Um(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(j=N)}return Wn.createElement(tn,{zIndex:c.zIndex},Wn.createElement("g",{className:"recharts-cartesian-grid"},Wn.createElement(vve,{fill:(a=c.fill)!==null&&a!==void 0?a:A.grid.fill,fillOpacity:(i=c.fillOpacity)!==null&&i!==void 0?i:A.grid.fillOpacity,x:c.x,y:c.y,width:c.width,height:c.height,ry:c.ry}),Wn.createElement(wve,kp({},c,{horizontalPoints:E})),Wn.createElement(Sve,kp({},c,{verticalPoints:j})),Wn.createElement(xve,kp({},c,k,{offset:u,horizontalPoints:E,xAxis:S,yAxis:w})),Wn.createElement(bve,kp({},c,k,{offset:u,verticalPoints:j,xAxis:S,yAxis:w}))))}yu.displayName="CartesianGrid";var wr=Z(J()),vu=Z(J());var tK=Z(J());var Ave=["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 rK(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[...Pve(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function Ive(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return Mve(r,t,n)}return rK(t,r)}function nK(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=Eve(e,Ave),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=Tve((c=d?.current)!==null&&c!==void 0?c:null);u=Ive(a,p,o)}else a!=null&&(u=String(a));return tK.createElement(rl,D5({},s,{connectNulls:l,strokeDasharray:u}))}var _p=Z(J());function oK(e){var t=(0,_p.useRef)(0),r=(0,_p.useRef)(0),n=(0,_p.useRef)(!1),o=(0,_p.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,_p.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(Wi(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 sK=Z(J()),v0=Z(J());var Dve={},aK=_r({name:"errorBars",initialState:Dve,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))}}}),j5=aK.actions,gWe=j5.addErrorBar,hWe=j5.replaceErrorBar,yWe=j5.removeErrorBar;var iK=aK.reducer;var jve=["children"];function $ve(e,t){if(e==null)return{};var r,n,o=Lve(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},Bve=(0,v0.createContext)(zve);function B_(e){var t=e.children,r=$ve(e,jve);return sK.createElement(Bve.Provider,{value:r},t)}var $5=Z(J());function Cp(e,t){var r,n,o=$e(u=>ul(u,e)),a=$e(u=>cl(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:Jn.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:Qn.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function $g(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=Hc(),a=Cp(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=$e(v=>LP(v,t,!1)),c=$e(v=>zP(v,r,!1));if(!l||!o)return null;var d=o.x,p=o.y,f=o.width,m=o.height,y=i&&u?Math.min(u[0],u[1]):d-f/2,b=s&&c?Math.min(c[0],c[1]):p-m/2,h=i&&u?Math.abs(u[1]-u[0]):f*2,g=s&&c?Math.abs(c[1]-c[0]):m*2;return $5.createElement("clipPath",{id:"clipPath-".concat(n)},$5.createElement("rect",{x:y,y:b,width:h,height:g}))}var lK=(e,t,r,n)=>ki(e,"xAxis",t,n),uK=(e,t,r,n)=>Si(e,"xAxis",t,n),cK=(e,t,r,n)=>ki(e,"yAxis",r,n),dK=(e,t,r,n)=>Si(e,"yAxis",r,n),Fve=ne([Lt,lK,cK,uK,dK],(e,t,r,n,o)=>ra(e,"xAxis")?Gi(t,n,!1):Gi(r,o,!1)),Uve=(e,t,r,n,o)=>o;function Wve(e){return e.type==="line"}var Hve=ne([Nc,Uve],(e,t)=>e.filter(Wve).find(r=>r.id===t)),pK=ne([Lt,lK,cK,uK,dK,Hve,Fve,Yd],(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 fK({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function F_(e){var t=di(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 qve=["id"],Kve=["type","layout","connectNulls","needClip","shape","strokeDasharray"],Vve=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function U_(){return U_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Rve=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=Qve(e),n=[];for(var o of e)if(o.status==="matched")n.push(dl(dl({},o.next),{},{x:kr(o.prev.x,o.next.x,t),y:kr(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(dl(dl({},o.next),{},{x:kr(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(dl(dl({},o.prev),{},{x:kr(o.prev.x,i,t),y:o.prev.y}))}return n},B5={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Rve,animationMatchBy:xp,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:nK,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:ar.line,type:"linear"},e0e=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:hi(r,t),payload:e}]},t0e=wr.memo(e=>{var t=e.dataKey,r=e.data,n=e.stroke,o=e.strokeWidth,a=e.fill,i=e.name,s=e.hide,l=e.unit,u=e.formatter,c=e.tooltipType,d=e.id,p={dataDefinedOnItem:r,getPosition:va,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:hi(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return wr.createElement(zc,{tooltipEntrySettings:p})});function r0e(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=z5(n,qve),u=dn(l);return wr.createElement(P_,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function n0e(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,vu.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 dl(dl({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return wr.createElement(Eg,{value:t?o:void 0},r)}function o0e(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=z5(o,Kve),b=dl(dl({},pn(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 wr.createElement(wr.Fragment,null,n?.length>1&&wr.createElement(Lc,{option:f,DefaultShape:B5.shape,shapeProps:b}),wr.createElement(r0e,{points:n,clipPathId:t,props:o}))}function a0e(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=Jve(n.current),m=Fc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,b=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=oK(a),x=(0,vu.useCallback)(S=>S>0&&f>0,[f]);return wr.createElement(n0e,{points:a,showLabels:g},r.children,wr.createElement(Uc,{animationInput:a,animationIdPrefix:"recharts-line-",items:a,previousItemsRef:o,isAnimationActive:i,animationBegin:s,animationDuration:l,animationEasing:u,onAnimationStart:b,onAnimationEnd:h,animationInterpolateFn:d,animationMatchBy:c,shouldUpdatePreviousRef:x,layout:p},(S,w,A)=>{var k=y||w<1,_=k?v(w,f):null;return wr.createElement(o0e,{props:r,points:S,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:k,isEntrance:A,visibleLength:_})}),wr.createElement($c,{label:r.label}))}function i0e(e){var t=e.clipPathId,r=e.props,n=(0,vu.useRef)(null),o=(0,vu.useRef)(null);return wr.createElement(a0e,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var s0e=(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:Ut(e.payload,t)}},L5=class extends vu.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=xt("recharts-line",a),b=p,h=F_(n),g=h.r,v=h.strokeWidth,x=Ng(n),S=g*2+v,w=f?"url(#clipPath-".concat(x?"":"dots-").concat(b,")"):void 0;return wr.createElement(tn,{zIndex:m},wr.createElement(xr,{className:y},f&&wr.createElement("defs",null,wr.createElement($g,{clipPathId:b,xAxisId:i,yAxisId:s}),!x&&wr.createElement("clipPath",{id:"clipPath-dots-".concat(b)},wr.createElement("rect",{x:u-S/2,y:l-S/2,width:c+S,height:d+S}))),wr.createElement(B_,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:s0e,errorBarOffset:0},wr.createElement(i0e,{props:this.props,clipPathId:b}))),wr.createElement(d0,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function l0e(e){var t=rr(e,B5),r=t.activeDot,n=t.animateNewValues,o=t.animationBegin,a=t.animationDuration,i=t.animationEasing,s=t.connectNulls,l=t.dot,u=t.hide,c=t.isAnimationActive,d=t.label,p=t.legendType,f=t.xAxisId,m=t.yAxisId,y=t.id,b=z5(t,Vve),h=Cp(f,m),g=h.needClip,v=Hc(),x=Ba(),S=Cr(),w=$e(E=>pK(E,f,m,S,y));if(x!=="horizontal"&&x!=="vertical"||w==null||v==null)return null;var A=v.height,k=v.width,_=v.x,C=v.y;return wr.createElement(L5,U_({},b,{id:y,connectNulls:s,dot:l,activeDot:r,animateNewValues:n,animationBegin:o,animationDuration:a,animationEasing:i,isAnimationActive:c,hide:u,label:d,legendType:p,xAxisId:f,yAxisId:m,points:w,layout:x,height:A,width:k,left:_,top:C,needClip:g}))}function fK(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=Ut(u,i);if(t==="horizontal"){var p=jm({axis:r,ticks:o,bandSize:s,entry:u,index:c}),f=or(d)?null:n.scale.map(d);return{x:p,y:f??null,value:d,payload:u}}var m=or(d)?null:r.scale.map(d),y=jm({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 u0e(e){var t=rr(e,B5),r=Cr();return wr.createElement(Wc,{id:t.id,type:"line"},n=>wr.createElement(wr.Fragment,null,wr.createElement(Og,{legendPayload:e0e(t)}),wr.createElement(t0e,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,formatter:t.formatter,tooltipType:t.tooltipType,id:n}),wr.createElement(Ig,{type:"line",id:n,data:t.data,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,hide:t.hide,isPanorama:r}),wr.createElement(l0e,U_({},t,{id:n}))))}var W_=wr.memo(u0e,Fa);W_.displayName="Line";var gr=Z(J()),Ap=Z(J());function ns(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:O5}function os(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:O5}var gK=(e,t,r)=>ki(e,"xAxis",ns(e,t),r),hK=(e,t,r)=>Si(e,"xAxis",ns(e,t),r),yK=(e,t,r)=>ki(e,"yAxis",os(e,t),r),vK=(e,t,r)=>Si(e,"yAxis",os(e,t),r),c0e=ne([Lt,gK,yK,hK,vK],(e,t,r,n,o)=>ra(e,"xAxis")?Gi(t,n,!1):Gi(r,o,!1)),d0e=(e,t)=>t,F5=ne([Nc,d0e],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),xK=e=>{var t=Lt(e),r=ra(t,"xAxis");return r?"yAxis":"xAxis"},p0e=(e,t)=>{var r=xK(e);return r==="yAxis"?os(e,t):ns(e,t)},bK=(e,t,r)=>mg(e,xK(e),p0e(e,t),r),f0e=ne([F5,bK],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=wc(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]])}}}),m0e=ne([F5,bK],(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(bo)}}),wK=ne([Lt,gK,yK,hK,vK,f0e,NS,c0e,F5,A9,m0e],(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 SK({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 sa=Z(J());var g0e=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],h0e=["id","baseLine"];function x0(){return x0=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return De(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),De(c)?sa.createElement("rect",{x:sd.x||0));return De(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),De(c)?sa.createElement("rect",{x:0,y:se==null?[]:t===1?e.flatMap(r=>r.status==="removed"?[]:[r.next]):e.flatMap(r=>r.status==="matched"?[Lg(Lg({},r.next),{},{x:kr(r.prev.x,r.next.x,t),y:kr(r.prev.y,r.next.y,t)})]:r.status==="added"?[r.next]:[]),EK={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:xp,animationInterpolateFn:E0e,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:_K,xAxisId:0,yAxisId:0,zIndex:ar.area};function q_(e,t){return e&&e!=="none"?e:t}var N0e=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:q_(n,o),value:hi(r,t),payload:e}]},T0e=gr.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:va,settings:{stroke:n,strokeWidth:o,fill:a,dataKey:t,nameKey:void 0,name:hi(i,t),hide:s,type:c,color:q_(n,a),unit:l,formatter:u,graphicalItemId:d}};return gr.createElement(zc,{tooltipEntrySettings:p})});function O0e(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.needClip,a=n.dot,i=n.dataKey,s=dn(n);return gr.createElement(P_,{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 Lg(Lg({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return gr.createElement(Eg,{value:t?o:void 0},r)}function M0e(e){var t=e.points,r=e.baseLine,n=e.needClip,o=e.clipPathId,a=e.props,i=e.animationElapsedTime,s=e.isAnimating,l=e.isEntrance,u=a.layout,c=a.type,d=a.stroke,p=a.connectNulls,f=a.isRange,m=a.shape,y=a.id,b=AK(a,w0e),h=pn(b),g=Lg(Lg({},h),{},{id:y,points:t,connectNulls:p,type:c,baseLine:r,layout:u,stroke:d,isRange:f,animationElapsedTime:i,isAnimating:s,isEntrance:l});return gr.createElement(gr.Fragment,null,t?.length>1&&gr.createElement(xr,{clipPath:n?"url(#clipPath-".concat(o,")"):void 0},gr.createElement(Lc,{option:m,DefaultShape:EK.shape,shapeProps:g})),gr.createElement(O0e,{points:t,props:b,clipPathId:o}))}function I0e(e,t,r){if(De(e)){var n=De(t)?t:void 0;return kr(n,e,r)}if(or(e)||jo(e)){var o=De(t)?t:void 0;return kr(o,0,r)}return e}function D0e(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,Ap.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=__(m,a),b=qm(),h=Fc(n.onAnimationStart,n.onAnimationEnd),g=h.isAnimating,v=h.handleAnimationStart,x=h.handleAnimationEnd,S=y.startValue;if(b==null)return null;var w;return Array.isArray(s)&&Array.isArray(S)?w=s0(S,s,p):Array.isArray(s)?w=s0(null,s,p):w=null,gr.createElement(Uc,{animationInput:m,animationIdPrefix:"recharts-area-",items:i,previousItemsRef:o,isAnimationActive:l,animationBegin:u,animationDuration:c,animationEasing:d,onAnimationStart:v,onAnimationEnd:x,animationInterpolateFn:f,animationMatchBy:p,layout:b},(A,k,_)=>{var C;return k===1?C=s:Array.isArray(s)?C=f(w,k,b):C=_?s:I0e(s,S,k),y.syncStepValue(C,k),gr.createElement(P0e,{showLabels:!g,points:i},n.children,gr.createElement(M0e,{points:A,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:k,isAnimating:g||k<1,isEntrance:_}),gr.createElement($c,{label:n.label}))})}function j0e(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Ap.useRef)(null),a=(0,Ap.useRef)();return gr.createElement(D0e,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var U5=class extends Ap.PureComponent{render(){var t=this.props,r=t.hide,n=t.dot,o=t.points,a=t.className,i=t.top,s=t.left,l=t.needClip,u=t.xAxisId,c=t.yAxisId,d=t.width,p=t.height,f=t.id,m=t.baseLine,y=t.zIndex;if(r)return null;var b=xt("recharts-area",a),h=f,g=F_(n),v=g.r,x=g.strokeWidth,S=Ng(n),w=v*2+x,A=l?"url(#clipPath-".concat(S?"":"dots-").concat(h,")"):void 0;return gr.createElement(tn,{zIndex:y},gr.createElement(xr,{className:b},l&&gr.createElement("defs",null,gr.createElement($g,{clipPathId:h,xAxisId:u,yAxisId:c}),!S&&gr.createElement("clipPath",{id:"clipPath-dots-".concat(h)},gr.createElement("rect",{x:s-w/2,y:i-w/2,width:d+w,height:p+w}))),gr.createElement(j0e,{needClip:l,clipPathId:h,props:this.props})),gr.createElement(d0,{points:o,mainColor:q_(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}),this.props.isRange&&Array.isArray(m)&&gr.createElement(d0,{points:m,mainColor:q_(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:A}))}};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,b=AK(e,S0e),h=Ba(),g=Yk(),v=Cp(m,y),x=v.needClip,S=Cr(),w=(t=$e(U=>wK(U,e.id,S)))!==null&&t!==void 0?t:{},A=w.points,k=w.isRange,_=w.baseLine,C=Hc();if(h!=="horizontal"&&h!=="vertical"||C==null||g!=="AreaChart"&&g!=="ComposedChart")return null;var E=C.height,j=C.width,X=C.x,z=C.y;return!A||!A.length?null:gr.createElement(U5,H_({},b,{activeDot:r,animationBegin:n,animationDuration:o,animationEasing:a,baseLine:_,connectNulls:i,dot:s,fill:l,fillOpacity:u,height:E,hide:c,layout:h,isAnimationActive:d,isRange:k,legendType:p,needClip:x,points:A,stroke:f,width:j,left:X,top:z,xAxisId:m,yAxisId:y}))}var L0e=(e,t,r,n,o)=>{var a=r??t;if(De(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 SK(e){var t=e.areaSettings,r=t.connectNulls,n=t.baseValue,o=t.dataKey,a=e.stackedData,i=e.layout,s=e.chartBaseValue,l=e.xAxis,u=e.yAxis,c=e.displayedData,d=e.dataStartIndex,p=e.xAxisTicks,f=e.yAxisTicks,m=e.bandSize,y=e.stackDataKeys,b=a&&a.length,h=L0e(i,s,n,l,u),g=i==="horizontal",v=!1,x=c.map((w,A)=>{var k,_,C,E;if(b)E=a[d+A];else{var j=Ut(w,o);Array.isArray(j)?(E=j,v=!0):E=[h,j]}var X=(k=(_=E)===null||_===void 0?void 0:_[1])!==null&&k!==void 0?k:null,z=Ut(w,o),U=b&&z==null&&y!=null&&y.length>0&&y.every(D=>Ut(w,D)==null),N=X==null||b&&!r&&z==null||U;if(g){var O;return{x:jm({axis:l,ticks:p,bandSize:m,entry:w,index:A}),y:N?null:(O=u.scale.map(X))!==null&&O!==void 0?O:null,value:E,payload:w}}return{x:N?null:(C=l.scale.map(X))!==null&&C!==void 0?C:null,y:jm({axis:u,ticks:f,bandSize:m,entry:w,index:A}),value:E,payload:w}}),S;return b||v?S=x.map(w=>{var A,k=Array.isArray(w.value)?w.value[0]:null;if(g){var _;return{x:w.x,y:k!=null&&w.y!=null&&(_=u.scale.map(k))!==null&&_!==void 0?_:null,payload:w.payload}}return{x:k!=null&&(A=l.scale.map(k))!==null&&A!==void 0?A:null,y:w.y,payload:w.payload}}):S=g?u.scale.map(h):l.scale.map(h),{points:x,baseLine:S??0,isRange:v}}function z0e(e){var t=rr(e,EK),r=Cr();return gr.createElement(Wc,{id:t.id,type:"area"},n=>gr.createElement(gr.Fragment,null,gr.createElement(Og,{legendPayload:N0e(t)}),gr.createElement(T0e,{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}),gr.createElement(Ig,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:Rw(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),gr.createElement($0e,H_({},t,{id:n}))))}var xu=gr.memo(z0e,Fa);xu.displayName="Area";var Qt=Z(J()),Ms=Z(J());var TK=Z(J());var B0e=!0,W5="Invariant failed";function NK(e,t){if(!e){if(B0e)throw new Error(W5);var r=typeof t=="function"?t():t,n=r?"".concat(W5,": ").concat(r):W5;throw new Error(n)}}var F0e=["option"];function U0e(e,t){if(e==null)return{};var r,n,o=W0e(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(De(t))return t;var a=De(n)||or(n);return a?t(n,o):(a||NK(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var H0e=(e,t,r)=>r,q0e=(e,t)=>t,b0=ne([Nc,q0e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),K0e=ne([b0],e=>e?.maxBarSize),V0e=(e,t,r,n)=>n,G0e=ne([Lt,Nc,ns,os,H0e],(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")),Y0e=(e,t,r)=>{var n=Lt(e),o=ns(e,t),a=os(e,t);if(!(o==null||a==null))return n==="horizontal"?mg(e,"yAxis",a,r):mg(e,"xAxis",o,r)},X0e=(e,t)=>{var r=Lt(e),n=ns(e,t),o=os(e,t);if(!(n==null||o==null))return r==="horizontal"?qP(e,"xAxis",n):qP(e,"yAxis",o)},Z0e=ne([G0e,C9,X0e],yq),J0e=(e,t,r)=>{var n,o,a=b0(e,t);if(a==null)return 0;var i=ns(e,t),s=os(e,t);if(i==null||s==null)return 0;var l=Lt(e),u=IO(e),c=a.maxBarSize,d=or(c)?u:c,p,f;return l==="horizontal"?(p=ki(e,"xAxis",i,r),f=Si(e,"xAxis",i,r)):(p=ki(e,"yAxis",s,r),f=Si(e,"yAxis",s,r)),(n=(o=Gi(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},PK=(e,t,r)=>{var n=Lt(e),o=ns(e,t),a=os(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=ki(e,"xAxis",o,r),s=Si(e,"xAxis",o,r)):(i=ki(e,"yAxis",a,r),s=Si(e,"yAxis",a,r)),Gi(i,s)}},Q0e=ne([Z0e,IO,_9,IS,J0e,PK,K0e],xq),R0e=(e,t,r)=>{var n=ns(e,t);if(n!=null)return ki(e,"xAxis",n,r)},exe=(e,t,r)=>{var n=os(e,t);if(n!=null)return ki(e,"yAxis",n,r)},txe=(e,t,r)=>{var n=ns(e,t);if(n!=null)return Si(e,"xAxis",n,r)},rxe=(e,t,r)=>{var n=os(e,t);if(n!=null)return Si(e,"yAxis",n,r)},nxe=ne([Q0e,b0],wq),oxe=ne([Y0e,b0],bq),MK=ne([Br,Bm,R0e,exe,txe,rxe,nxe,Lt,NS,PK,oxe,b0,V0e],(e,t,r,n,o,a,i,s,l,u,c,d,p)=>{var f=l.chartData,m=l.dataStartIndex,y=l.dataEndIndex;if(!(d==null||i==null||t==null||s!=="horizontal"&&s!=="vertical"||r==null||n==null||o==null||a==null||u==null)){var b=d.data,h;if(b!=null&&b.length>0?h=b:h=f?.slice(m,y+1),h!=null)return IK({layout:s,barSettings:d,pos:i,parentViewBox:t,bandSize:u,xAxis:r,yAxis:n,xAxisTicks:o,yAxisTicks:a,stackedData:c,displayedData:h,offset:e,cells:p,dataStartIndex:m})}});var q5=Z(J()),zg=Z(J());var axe=["index"];function H5(){return H5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,zg.useContext)(DK);if(t!=null)return t.stackId;if(e!=null)return Rw(e)};var lxe=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),uxe=e=>{var t=(0,zg.useContext)(DK);if(t!=null){var r=t.stackId;return"url(#".concat(lxe(r,e),")")}},K5=e=>{var t=e.index,r=ixe(e,axe),n=uxe(t);return q5.createElement(xr,H5({className:"recharts-bar-stack-layer",clipPath:n},r))};var cxe=["onMouseEnter","onMouseLeave","onClick"],dxe=["value","background","tooltipPosition"],pxe=["id"],fxe=["onMouseEnter","onClick","onMouseLeave"];function $K(e,t){return yxe(e)||hxe(e,t)||gxe(e,t)||mxe()}function mxe(){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 gxe(e,t){if(e){if(typeof e=="string")return LK(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?LK(e,t):void 0}}function LK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{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:hi(r,t),payload:e}]},kxe=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:va,settings:{stroke:r,strokeWidth:n,fill:o,dataKey:t,nameKey:void 0,name:hi(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Qt.createElement(zc,{tooltipEntrySettings:d})});function _xe(e){var t=$e(Ri),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=G_(a,cxe),c=r0(i,n,a.id),d=n0(s),p=o0(l,n,a.id);if(!o||r==null)return null;var f=di(o);return Qt.createElement(tn,{zIndex:Sq(o,ar.barBackground)},r.map((m,y)=>{var b=m.value,h=m.background,g=m.tooltipPosition,v=G_(m,dxe);if(!h)return null;var x=c(m,m.originalDataIndex),S=d(m,m.originalDataIndex),w=p(m,m.originalDataIndex),A=ko(ko(ko(ko(ko({option:o,isActive:String(m.originalDataIndex)===t},v),{},{fill:"#eee"},h),f),Ql(u,m,y)),{},{onMouseEnter:x,onMouseLeave:S,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Qt.createElement(V_,qc({key:"background-bar-".concat(y)},A))}))}function Cxe(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 ko(ko({},i),{},{value:a.value,payload:a.payload,parentViewBox:a.parentViewBox,viewBox:i,fill:a.fill})});return Qt.createElement(Eg,{value:t?o:void 0},r)}function Axe(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=$e(Ri),l=$e(vg),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,Ms.useState)(!1),p=$K(d,2),f=p[0],m=p[1],y=(0,Ms.useState)(!1),b=$K(y,2),h=b[0],g=b[1];(0,Ms.useEffect)(()=>{var k;return u?(m(!0),k=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(k)}},[u,c]);var v=(0,Ms.useCallback)(()=>{u||m(!1)},[u]),x=u&&h,S=u||f,w;u?r===!0?w=t:w=r:w=t;var A=Qt.createElement(V_,qc({},n,{name:String(n.name)},o,{isActive:x,option:w,index:a,dataKey:i,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance,onTransitionEnd:v}));return S?Qt.createElement(tn,{zIndex:ar.activeBar},Qt.createElement(K5,{index:o.originalDataIndex},A)):A}function Exe(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Qt.createElement(V_,qc({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function Nxe(e){var t,r=e.data,n=e.props,o=e.animationElapsedTime,a=e.isAnimating,i=e.isEntrance,s=(t=dn(n))!==null&&t!==void 0?t:{},l=s.id,u=G_(s,pxe),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,b=G_(n,fxe),h=r0(f,d,l),g=n0(y),v=o0(m,d,l);return r?Qt.createElement(Qt.Fragment,null,r.map((x,S)=>Qt.createElement(K5,qc({index:x.originalDataIndex,key:"rectangle-".concat(x?.x,"-").concat(x?.y,"-").concat(x?.value,"-").concat(S),className:"recharts-bar-rectangle"},Ql(b,x,S),{onMouseEnter:h(x,x.originalDataIndex),onMouseLeave:g(x,x.originalDataIndex),onClick:v(x,x.originalDataIndex)}),p?Qt.createElement(Axe,{shape:c,activeBar:p,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Qt.createElement(Exe,{shape:c,baseProps:u,entry:x,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var Txe=(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"?[ko(ko({},n.prev),{},{height:kr(n.prev.height,0,t),y:kr(n.prev.y,n.prev.y+n.prev.height,t)})]:[ko(ko({},n.prev),{},{width:kr(n.prev.width,0,t)})];if(n.status==="matched")return[ko(ko({},n.next),{},{x:kr(n.prev.x,n.next.x,t),y:kr(n.prev.y,n.next.y,t),width:kr(n.prev.width,n.next.width,t),height:kr(n.prev.height,n.next.height,t)})];var o=n.next;return r==="horizontal"?[ko(ko({},o),{},{height:kr(0,o.height,t),y:kr(o.stackedBarStart,o.y,t)})]:[ko(ko({},o),{},{width:kr(0,o.width,t),x:kr(o.stackedBarStart,o.x,t)})]});function Oxe(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=Fc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return Qt.createElement(Cxe,{showLabels:!d,rects:n},Qt.createElement(Uc,{animationInput:n,animationIdPrefix:"recharts-bar-",items:n,previousItemsRef:r,isAnimationActive:o,animationBegin:a,animationDuration:i,animationEasing:s,onAnimationStart:p,onAnimationEnd:f,animationInterpolateFn:l,animationMatchBy:t.animationMatchBy,layout:u},(m,y,b)=>Qt.createElement(xr,null,Qt.createElement(Nxe,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:b}))),Qt.createElement($c,{label:t.label}),t.children)}function Pxe(e){var t=(0,Ms.useRef)(null);return Qt.createElement(Oxe,{previousRectanglesRef:t,props:e})}var BK=0,Mxe=(e,t)=>{var r=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:r,errorVal:Ut(e,t)}},V5=class extends Ms.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=xt("recharts-bar",a),p=c;return Qt.createElement(xr,{className:d,id:c},l&&Qt.createElement("defs",null,Qt.createElement($g,{clipPathId:p,xAxisId:i,yAxisId:s})),Qt.createElement(xr,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},Qt.createElement(_xe,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Qt.createElement(Pxe,this.props)))}},Ixe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:Txe,animationMatchBy:i0,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:BK,shape:K_,xAxisId:0,yAxisId:0,zIndex:ar.bar};function Dxe(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=Cp(t,r),p=d.needClip,f=Ba(),m=Cr(),y=e0(e.children,fu),b=$e(v=>MK(v,e.id,m,y));if(f!=="vertical"&&f!=="horizontal")return null;var h,g=b?.[0];return g==null||g.height==null||g.width==null?h=0:h=f==="vertical"?g.height/2:g.width/2,Qt.createElement(B_,{xAxisId:t,yAxisId:r,data:b,dataPointFormatter:Mxe,errorBarOffset:h},Qt.createElement(V5,qc({},e,{layout:f,needClip:p,data:b,xAxisId:t,yAxisId:r,hide:n,legendType:o,minPointSize:a,activeBar:i,animationBegin:s,animationDuration:l,animationEasing:u,isAnimationActive:c})))}function IK(e){var t=e.layout,r=e.barSettings,n=r.dataKey,o=r.minPointSize,a=r.hasCustomShape,i=e.pos,s=e.bandSize,l=e.xAxis,u=e.yAxis,c=e.xAxisTicks,d=e.yAxisTicks,p=e.stackedData,f=e.displayedData,m=e.offset,y=e.cells,b=e.parentViewBox,h=e.dataStartIndex,g=t==="horizontal"?u:l,v=p?g.scale.domain():null,x=kB({numericAxis:g}),S=g.scale.map(x);return f.map((w,A)=>{var k,_,C,E,j,X;if(p){var z=p[A+h];if(z==null)return null;k=wB(z,v)}else k=Ut(w,n),Array.isArray(k)||(k=[x,k]);var U=OK(o,BK)(k[1],A);if(t==="horizontal"){var N,O=u.scale.map(k[0]),D=u.scale.map(k[1]);if(O==null||D==null)return null;_=lO({axis:l,ticks:c,bandSize:s,offset:i.offset,entry:w,index:A}),C=(N=D??O)!==null&&N!==void 0?N:void 0,E=i.size;var T=O-D;if(j=jo(T)?0:T,X={x:_,y:m.top,width:E,height:m.height},Math.abs(U)>0&&Math.abs(j)0&&Math.abs(E)Qt.createElement(Qt.Fragment,null,Qt.createElement(Og,{legendPayload:Sxe(t)}),Qt.createElement(kxe,{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(Ig,{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!==K_}),Qt.createElement(tn,{zIndex:t.zIndex},Qt.createElement(Dxe,qc({},t,{id:o})))))}var Y_=Qt.memo(jxe,Fa);Y_.displayName="Bar";var bu=Z(J()),as=Z(J());var $xe=["domain","range"],Lxe=["domain","range"];function FK(e,t){if(e==null)return{};var r,n,o=zxe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return HK(HK({},a),{},{type:i})},[a,i]);return(0,as.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(rq(s)):r.current!==s&&t(nq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,as.useLayoutEffect)(()=>()=>{r.current&&(t(oq(r.current)),r.current=null)},[t]),null}var Gxe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,as.useRef)(null),i=(0,as.useRef)(null),s=$e(Bm),l=Cr(),u=Dt(),c="xAxis",d=$e(w=>jk(w,c,t,l)),p=$e(w=>WP(w,t)),f=$e(w=>mU(w,t)),m=$e(w=>xP(w,t));if((0,as.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||vp(o)||(0,as.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedHeight();Math.round(p.height)!==Math.round(A)&&u(uq({id:t,height:A}))}}},[d,p,u,o,t,n,m]),p==null||f==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=Y5(e,Fxe),v=m.id,x=m.scale,S=Y5(m,Uxe);return bu.createElement(y0,G5({},g,S,{ref:a,labelRef:i,x:f.x,y:f.y,width:p.width,height:p.height,className:xt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},Yxe={allowDataOverflow:Jn.allowDataOverflow,allowDecimals:Jn.allowDecimals,allowDuplicatedCategory:Jn.allowDuplicatedCategory,angle:Jn.angle,axisLine:rs.axisLine,height:Jn.height,hide:!1,includeHidden:Jn.includeHidden,interval:Jn.interval,label:!1,minTickGap:Jn.minTickGap,mirror:Jn.mirror,orientation:Jn.orientation,padding:Jn.padding,reversed:Jn.reversed,scale:Jn.scale,tick:Jn.tick,tickCount:Jn.tickCount,tickLine:rs.tickLine,tickSize:rs.tickSize,type:Jn.type,niceTicks:Jn.niceTicks,xAxisId:0},Xxe=e=>{var t=rr(e,Yxe);return bu.createElement(bu.Fragment,null,bu.createElement(Vxe,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),bu.createElement(Gxe,t))},wu=bu.memo(Xxe,X_);wu.displayName="XAxis";var Su=Z(J()),is=Z(J());var Zxe=["type"],Jxe=["dangerouslySetInnerHTML","ticks","scale"],Qxe=["id","scale"];function X5(){return X5=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return KK(KK({},a),{},{type:i})},[i,a]);return(0,is.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(aq(s)):r.current!==s&&t(iq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,is.useLayoutEffect)(()=>()=>{r.current&&(t(sq(r.current)),r.current=null)},[t]),null}function obe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,is.useRef)(null),i=(0,is.useRef)(null),s=$e(Bm),l=Cr(),u=Dt(),c="yAxis",d=$e(w=>HP(w,t)),p=$e(w=>gU(w,t)),f=$e(w=>jk(w,c,t,l)),m=$e(w=>bP(w,t));if((0,is.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||vp(o)||(0,is.isValidElement)(o)||m==null)){var w=a.current;if(w){var A=w.getCalculatedWidth();Math.round(d.width)!==Math.round(A)&&u(lq({id:t,width:A}))}}},[f,d,u,o,t,n,m]),d==null||p==null||m==null)return null;var y=e.dangerouslySetInnerHTML,b=e.ticks,h=e.scale,g=Z5(e,Jxe),v=m.id,x=m.scale,S=Z5(m,Qxe);return Su.createElement(y0,X5({},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:xt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:f,axisType:c,axisId:t}))}var abe={allowDataOverflow:Qn.allowDataOverflow,allowDecimals:Qn.allowDecimals,allowDuplicatedCategory:Qn.allowDuplicatedCategory,angle:Qn.angle,axisLine:rs.axisLine,hide:!1,includeHidden:Qn.includeHidden,interval:Qn.interval,label:!1,minTickGap:Qn.minTickGap,mirror:Qn.mirror,orientation:Qn.orientation,padding:Qn.padding,reversed:Qn.reversed,scale:Qn.scale,tick:Qn.tick,tickCount:Qn.tickCount,tickLine:rs.tickLine,tickSize:rs.tickSize,type:Qn.type,niceTicks:Qn.niceTicks,width:Qn.width,yAxisId:0},ibe=e=>{var t=rr(e,abe);return Su.createElement(Su.Fragment,null,Su.createElement(nbe,{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}),Su.createElement(obe,t))},ku=Su.memo(ibe,X_);ku.displayName="YAxis";var vV=Z(J()),xV=Z(J());var Mp=Z(J()),yV=Z(J());var iV=Z(J()),sV=Z(J());var sbe=(e,t)=>t,w0=ne([sbe,Lt,US,Zn,RP,Ha,GU,Br],RU);function lbe(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function S0(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(lbe(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 Q5=uo("mouseClick"),R5=nu();R5.startListening({actionCreator:Q5,effect:(e,t)=>{var r=e.payload,n=w0(t.getState(),S0(r));n?.activeIndex!=null&&t.dispatch(AU({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var Z_=uo("mouseMove"),eM=nu(),Bg=null,Ep=null,J5=null;eM.startListening({actionCreator:Z_,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");Bg!==null&&(cancelAnimationFrame(Bg),Bg=null),Ep!==null&&(typeof a!="number"||!s)&&(clearTimeout(Ep),Ep=null),J5=S0(r);var l=()=>{var u=t.getState(),c=Tc(u,u.tooltip.settings.shared);if(!J5){Bg=null,Ep=null;return}if(c==="axis"){var d=w0(u,J5);d?.activeIndex!=null?t.dispatch(Bk({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(zk())}Bg=null,Ep=null};if(!s){l();return}a==="raf"?Bg=requestAnimationFrame(l):typeof a=="number"&&Ep===null&&(Ep=setTimeout(l,a))}});function VK(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 GK={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},YK=_r({name:"rootProps",initialState:GK,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:GK.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}}}),XK=YK.reducer,ZK=YK.actions.updateOptions;var ube=null,cbe={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)},JK=_r({name:"polarOptions",initialState:ube,reducers:cbe}),QK=JK.actions.updatePolarOptions;var RK=JK.reducer;var tM=uo("keyDown"),rM=uo("focus"),nM=uo("blur"),k0=nu(),Fg=null,Np=null,J_=null;k0.startListening({actionCreator:tM,effect:(e,t)=>{J_=e.payload,Fg!==null&&(cancelAnimationFrame(Fg),Fg=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");Np!==null&&(typeof o!="number"||!i)&&(clearTimeout(Np),Np=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=J_;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=Oc(c,pu(l),lu(l),Mc(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,y=Ha(l),b=pu(l),h=Tc(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=Jv(l,h,"hover",String(c.index));t.dispatch(Xv({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=hU(l),x=v==="left-to-right"?1:-1,S=d==="ArrowRight"?1:-1,w;if(m){var A=lu(l),k=Mc(l),_=S*x,C=U=>({active:!1,index:String(U),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(w=-1,_>0){for(var E=0;E=0;j--)if(Oc(C(j),b,A,k)!=null){w=j;break}if(w<0)return}else{w=f+S*x;var X=y?.length||b.length;if(X===0||w>=X||w<0)return}var z=Jv(l,h,"hover",String(w));t.dispatch(Xv({active:!0,activeIndex:w.toString(),activeCoordinate:z}))}finally{Fg=null,Np=null}};if(!i){s();return}o==="raf"?Fg=requestAnimationFrame(s):typeof o=="number"&&Np===null&&(s(),J_=null,Np=setTimeout(()=>{J_?s():(Np=null,Fg=null)},o))}});k0.startListening({actionCreator:rM,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=Tc(r,r.tooltip.settings.shared),s=Jv(r,i,"hover",String(a));t.dispatch(Xv({active:!0,activeIndex:a,activeCoordinate:s}))}}}});k0.startListening({actionCreator:nM,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(Xv({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function Q_(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 _i=uo("externalEvent"),aM=nu(),R_=new Map,_0=new Map,oM=new Map;aM.startListening({actionCreator:_i,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=Q_(o);oM.set(a,{handler:n,reactEvent:i});var s=R_.get(a);s!==void 0&&(cancelAnimationFrame(s),R_.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=_0.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),_0.delete(a));var y=()=>{var g=oM.get(a);try{if(!g)return;var v=g.handler,x=g.reactEvent,S=t.getState(),w={activeCoordinate:n5(S),activeDataKey:vg(S),activeIndex:Ri(S),activeLabel:Vk(S),activeTooltipIndex:Ri(S),isTooltipActive:o5(S)};v&&v(w,x)}finally{R_.delete(a),_0.delete(a),oM.delete(a)}};if(!f){y();return}if(c==="raf"){var b=requestAnimationFrame(y);R_.set(a,b)}else if(typeof c=="number"){if(!_0.has(a)){y();var h=setTimeout(y,c);_0.set(a,h)}}else y()}}});var dbe=ne([du],e=>e.tooltipItemPayloads),eV=ne([dbe,(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 iM=uo("touchMove"),sM=nu(),Tp=null,Kc=null,tV=null,C0=null;sM.startListening({actionCreator:iM,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){C0=Q_(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");Tp!==null&&(cancelAnimationFrame(Tp),Tp=null),Kc!==null&&(typeof a!="number"||!s)&&(clearTimeout(Kc),Kc=null),tV=Array.from(r.touches).map(u=>S0({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(C0!=null){var u=t.getState(),c=Tc(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=tV)===null||d===void 0?void 0:d[0];if(p==null){Tp=null,Kc=null;return}var f=w0(u,p);f?.activeIndex!=null&&t.dispatch(Bk({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,y=C0.touches[0];if(document.elementFromPoint==null||y==null)return;var b=document.elementFromPoint(y.clientX,y.clientY);if(!b||!b.getAttribute)return;var h=b.getAttribute(eS),g=(m=b.getAttribute(tS))!==null&&m!==void 0?m:void 0,v=Pc(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var x=v.dataKey,S=eV(u,h,g);t.dispatch(Lk({activeDataKey:x,activeIndex:h,activeCoordinate:S,activeGraphicalItemId:g}))}Tp=null,Kc=null}};if(!s){l();return}a==="raf"?Tp=requestAnimationFrame(l):typeof a=="number"&&Kc===null&&(l(),C0=null,Kc=setTimeout(()=>{C0?l():(Kc=null,Tp=null)},a))}}});var A0={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},rV=_r({name:"eventSettings",initialState:A0,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Xt(t.payload.throttledEvents))}}}),nV=rV.actions.setEventSettings;var oV=rV.reducer;var pbe=Nw({brush:Aq,cartesianAxis:cq,chartData:kW,errorBars:iK,eventSettings:oV,graphicalItems:XH,layout:vB,legend:qB,options:vW,polarAxis:yH,polarOptions:RK,referenceElements:Tq,renderedTicks:Vq,rootProps:XK,tooltip:EU,zIndex:lW}),aV=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return eB({reducer:pbe,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([R5.middleware,eM.middleware,k0.middleware,aM.middleware,sM.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(rO({type:"raf"}))},devTools:Yi.devToolsEnabled&&{serialize:{replacer:VK},name:"recharts-".concat(r)}})};function eC(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Cr(),a=(0,sV.useRef)(null);if(o)return r;a.current==null&&(a.current=aV(t,n));var i=Xy;return iV.createElement(QB,{context:i,store:a.current},r)}var tC=Z(J());function fbe(e){var t=e.layout,r=e.margin,n=Dt(),o=Cr();return(0,tC.useEffect)(()=>{o||(n(gB(t)),n(aO(r)))},[n,o,t,r]),null}var rC=(0,tC.memo)(fbe,Fa);var lV=Z(J());function nC(e){var t=Dt();return(0,lV.useEffect)(()=>{t(ZK(e))},[t,e]),null}var oC=Z(J());var mbe=e=>{var t=Dt();return(0,oC.useEffect)(()=>{t(nV(e))},[t,e]),null},aC=(0,oC.memo)(mbe,Fa);var _u=Z(J()),gV=Z(J());var Pp=Z(J()),uM=Z(J());var Op=Z(J()),iC=Z(J());function uV(e){var t=e.zIndex,r=e.isPanorama,n=(0,iC.useRef)(null),o=Dt();return(0,iC.useLayoutEffect)(()=>(n.current&&o(iW({zIndex:t,element:n.current,isPanorama:r})),()=>{o(sW({zIndex:t,isPanorama:r}))}),[o,t,r]),Op.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function lM(e){var t=e.children,r=e.isPanorama,n=$e(tW);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Op.createElement(Op.Fragment,null,o.map(i=>Op.createElement(uV,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Op.createElement(uV,{key:i,zIndex:i,isPanorama:r})))}var gbe=["children"];function hbe(e,t){if(e==null)return{};var r,n,o=ybe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=Wm(),n=Hm(),o=pS();if(!La(r)||!La(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),Pp.createElement(Uy,sC({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:vbe,ref:t}),a)}),bbe=e=>{var t=e.children,r=$e(Wd);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return Pp.createElement(Uy,{width:n,height:o,x:i,y:a},t)},cM=(0,uM.forwardRef)((e,t)=>{var r=e.children,n=hbe(e,gbe),o=Cr();return o?Pp.createElement(bbe,null,Pp.createElement(lM,{isPanorama:!0},r)):Pp.createElement(xbe,sC({ref:t},n),Pp.createElement(lM,{isPanorama:!1},r))});var Cn=Z(J()),pr=Z(J());var lC=Z(J());function wbe(e,t){return Cbe(e)||_be(e,t)||kbe(e,t)||Sbe()}function Sbe(){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 kbe(e,t){if(e){if(typeof e=="string")return cV(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)?cV(e,t):void 0}}function cV(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;Tt(s)&&s!==a&&e(yB(s))}},[n,e,a]),o}function pV(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 Abe(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(CW(),null);function cC(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var jbe=(0,pr.forwardRef)((e,t)=>{var r,n,o=(0,pr.useRef)(null),a=(0,pr.useState)({containerWidth:cC((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:cC((n=e.style)===null||n===void 0?void 0:n.height)}),i=uC(a,2),s=i[0],l=i[1],u=(0,pr.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,pr.useCallback)(d=>{if(typeof t=="function"&&t(d),o.current!=null&&(o.current.disconnect(),o.current=null),d!=null&&typeof ResizeObserver<"u"){var p=d.getBoundingClientRect(),f=p.width,m=p.height;u(f,m);var y=h=>{var g=h[0];if(g!=null){var v=g.contentRect,x=v.width,S=v.height;u(x,S)}},b=new ResizeObserver(y);b.observe(d),o.current=b}},[t,u]);return(0,pr.useEffect)(()=>()=>{var d=o.current;d?.disconnect()},[u]),Cn.createElement(Cn.Fragment,null,Cn.createElement(Kd,{width:s.containerWidth,height:s.containerHeight}),Cn.createElement("div",Vc({ref:c},e)))}),$be=(0,pr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,pr.useState)({containerWidth:cC(r),containerHeight:cC(n)}),a=uC(o,2),i=a[0],s=a[1],l=(0,pr.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,pr.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 Cn.createElement(Cn.Fragment,null,Cn.createElement(Kd,{width:i.containerWidth,height:i.containerHeight}),Cn.createElement("div",Vc({ref:u},e)))}),Lbe=(0,pr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return Cn.createElement(Cn.Fragment,null,Cn.createElement(Kd,{width:r,height:n}),Cn.createElement("div",Vc({ref:t},e)))}),zbe=(0,pr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?Cn.createElement($be,Vc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?Cn.createElement(Lbe,Vc({},e,{width:r,height:n,ref:t})):Cn.createElement(Cn.Fragment,null,Cn.createElement(Kd,{width:r,height:n}),Cn.createElement("div",Vc({ref:t},e)))});function Bbe(e){return e?jbe:zbe}var mV=(0,pr.forwardRef)((e,t)=>{var r=e.children,n=e.className,o=e.height,a=e.onClick,i=e.onContextMenu,s=e.onDoubleClick,l=e.onMouseDown,u=e.onMouseEnter,c=e.onMouseLeave,d=e.onMouseMove,p=e.onMouseUp,f=e.onTouchEnd,m=e.onTouchMove,y=e.onTouchStart,b=e.style,h=e.width,g=e.responsive,v=e.dispatchTouchEvents,x=v===void 0?!0:v,S=(0,pr.useRef)(null),w=Dt(),A=(0,pr.useState)(null),k=uC(A,2),_=k[0],C=k[1],E=(0,pr.useState)(null),j=uC(E,2),X=j[0],z=j[1],U=dV(),N=av(),O=N?.width>0?N.width:h,D=N?.height>0?N.height:o,T=(0,pr.useCallback)(K=>{U(K),typeof t=="function"&&t(K),C(K),z(K),K!=null&&(S.current=K)},[U,t,C,z]),I=(0,pr.useCallback)(K=>{w(Q5(K)),w(_i({handler:a,reactEvent:K}))},[w,a]),P=(0,pr.useCallback)(K=>{w(Z_(K)),w(_i({handler:u,reactEvent:K}))},[w,u]),H=(0,pr.useCallback)(K=>{w(zk()),w(_i({handler:c,reactEvent:K}))},[w,c]),G=(0,pr.useCallback)(K=>{w(Z_(K)),w(_i({handler:d,reactEvent:K}))},[w,d]),L=(0,pr.useCallback)(()=>{w(rM())},[w]),Y=(0,pr.useCallback)(()=>{w(nM())},[w]),W=(0,pr.useCallback)(K=>{w(tM(K.key))},[w]),ie=(0,pr.useCallback)(K=>{w(_i({handler:i,reactEvent:K}))},[w,i]),Me=(0,pr.useCallback)(K=>{w(_i({handler:s,reactEvent:K}))},[w,s]),pe=(0,pr.useCallback)(K=>{w(_i({handler:l,reactEvent:K}))},[w,l]),ce=(0,pr.useCallback)(K=>{w(_i({handler:p,reactEvent:K}))},[w,p]),Q=(0,pr.useCallback)(K=>{w(_i({handler:y,reactEvent:K}))},[w,y]),ee=(0,pr.useCallback)(K=>{x&&w(iM(K)),w(_i({handler:m,reactEvent:K}))},[w,x,m]),$=(0,pr.useCallback)(K=>{w(_i({handler:f,reactEvent:K}))},[w,f]),B=Bbe(g);return Cn.createElement(p5.Provider,{value:_},Cn.createElement(RN.Provider,{value:X},Cn.createElement(B,{width:O??b?.width,height:D??b?.height,className:xt("recharts-wrapper",n),style:Abe({position:"relative",cursor:"default",width:O,height:D},b),onClick:I,onContextMenu:ie,onDoubleClick:Me,onFocus:L,onBlur:Y,onKeyDown:W,onMouseDown:pe,onMouseEnter:P,onMouseLeave:H,onMouseMove:G,onMouseUp:ce,onTouchEnd:$,onTouchMove:ee,onTouchStart:Q,ref:T},Cn.createElement(Dbe,null),r)))});var Fbe=["width","height","responsive","children","className","style","compact","title","desc"];function Ube(e,t){if(e==null)return{};var r,n,o=Wbe(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=Ube(e,Fbe),p=dn(d);return l?_u.createElement(_u.Fragment,null,_u.createElement(Kd,{width:r,height:n}),_u.createElement(cM,{otherAttributes:p,title:u,desc:c},a)):_u.createElement(mV,{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},_u.createElement(cM,{otherAttributes:p,title:u,desc:c,ref:t},_u.createElement(Pq,null,a)))});function dM(){return dM=Object.assign?Object.assign.bind():function(e){for(var t=1;tvV.createElement(Ug,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Xbe,tooltipPayloadSearcher:Ic,categoricalChartProps:e,ref:t}));var bV=Z(J()),wV=Z(J());var Zbe=["axis","item"],fM=(0,wV.forwardRef)((e,t)=>bV.createElement(Ug,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Zbe,tooltipPayloadSearcher:Ic,categoricalChartProps:e,ref:t}));var TV=Z(J()),OV=Z(J());var CV=Z(J()),Gc=Z(J());var SV=Z(J());function kV(e){var t=Dt();return(0,SV.useEffect)(()=>{t(QK(e))},[t,e]),null}var Jbe=["layout"];function mM(){return mM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=rr(e,u1e);return TV.createElement(AV,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:l1e,tooltipPayloadSearcher:Ic,categoricalChartProps:r,ref:t})});var PV=Z(J()),MV=Z(J());var c1e=["axis"],Yc=(0,MV.forwardRef)((e,t)=>PV.createElement(Ug,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:c1e,tooltipPayloadSearcher:Ic,categoricalChartProps:e,ref:t}));var ss=Z(J()),Wg=[{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}],IV="30m",DV="activeagents.timeWindow",jV=(0,ss.createContext)(null),yM=e=>Wg.find(t=>t.id===e);function $V({children:e}){let[t,r]=(0,ss.useState)(()=>{try{let a=localStorage.getItem(DV);if(a&&yM(a))return a}catch{}return IV}),n=(0,ss.useCallback)(a=>{if(yM(a)){r(a);try{localStorage.setItem(DV,a)}catch{}}},[]),o=(0,ss.useMemo)(()=>{let a=Wg.findIndex(s=>s.id===t),i=Wg[a]||yM(IV);return{timeWindow:i,windowIndex:a,windows:Wg,setWindow:n,zoomTo:s=>{let l=Wg[Math.min(Math.max(s,0),Wg.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return ss.default.createElement(jV.Provider,{value:o},e)}function pl(){let e=(0,ss.useContext)(jV);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Hg=Z(J());function fl({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=pl(),{darkMode:i}=ut(),s=Ui(i),l={color:s.textSecondary};return Hg.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Hg.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"),Hg.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=>Hg.default.createElement("option",{key:u.id,value:u.id},u.label))),Hg.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 Mn=Z(J());var Xr=Z(J());var E0=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},Xc=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||{},b=(y.input||0)+(y.output||0);b>0&&(!r||b>r.total)&&(r={input:y.input||0,output:y.output||0,thinking:y.thinking||0,cached:y.cached||0,total:b})}if(!r)return null;let n=m=>{for(let y of t){let b=(y.attributes||{})[m];if(b)return b}return null},o=(m,...y)=>{let b=Number(n(m));if(Number.isFinite(b)&&b>0)return b;for(let h of y){let g=n(h);if(g)return Xc(g)}return 0},a=o("prompt.input.instructions.tokens","prompt.input.instructions","llm.instructions"),i=o("prompt.input.tools.tokens","prompt.input.tools","llm.tools"),s=o("prompt.input.mcp_tools.tokens","prompt.input.mcp_tools"),l=o("prompt.input.messages.tokens","prompt.input.messages","llm.messages"),u=0;for(let m of t){let y=m.attributes||{},b=y["tool.output.result"]||y["tool.result"],h=y["tool.input.args"]||y["tool.arguments"];b&&(u+=Xc(b)),h&&(u+=Xc(h))}u=Math.min(u,r.input);let c=["messages","toolResults","instructions","toolSchemas","mcpSchemas"],d={messages:l,toolResults:u,instructions:a,toolSchemas:i,mcpSchemas:s},p=c.reduce((m,y)=>m+d[y],0),f;if(p>0&&r.input>0){let m=r.input/p;f={};for(let b of c)f[b]=Math.round(d[b]*m);let y=r.input-c.reduce((b,h)=>b+f[h],0);if(y!==0){let b=c.reduce((h,g)=>f[g]>f[h]?g:h);f[b]=Math.max(f[b]+y,0)}}else f={messages:r.input,toolResults:0,instructions:0,toolSchemas:0,mcpSchemas:0};return{used:r.total,limit:E0(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 d1e={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},qg=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 Zc({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,Xr.useState)(i),p=r.filter(A=>A.tokens>0),f=e??p.reduce((A,k)=>A+k.tokens,0),m=t>0?f/t:0,y=m>=.9?"#dc2626":m>=.75?"#eab308":null,b=u?"rgba(255,255,255,0.4)":"#9ca3af",h=u?"rgba(255,255,255,0.6)":"#6b7280",g=u?"rgba(255,255,255,0.75)":"#4b5563",v=u?"rgba(255,255,255,0.1)":"#f3f4f6",x=`${qg(f)} / ${qg(t)} (${Math.round(m*100)}%)`,S=A=>A.key==="messages"&&y?y:A.color||d1e[A.key]||"#2563eb",w=A=>Xr.default.createElement("div",{style:{display:"flex",height:A,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},p.map(k=>Xr.default.createElement("div",{key:k.key,title:`${k.label} \xB7 ${qg(k.tokens)}`,style:{width:`${Math.min(k.tokens/t*100,100)}%`,background:S(k)}})));return a?Xr.default.createElement("span",{title:`${s}: ${x}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},w("6px"),Xr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||b,whiteSpace:"nowrap"}},Math.round(m*100),"%")):Xr.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"}},Xr.default.createElement("div",{onClick:A=>{A.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},Xr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&Xr.default.createElement("span",{style:{color:b,fontWeight:400}}," \xB7 estimated")),Xr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},Xr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},x),Xr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:b,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),Xr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},w("9px")),m>=.9&&Xr.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&&Xr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(A=>Xr.default.createElement("div",{key:A.key,style:{display:"flex",alignItems:"center",gap:"8px"}},Xr.default.createElement("span",{style:{width:"9px",height:"9px",borderRadius:"2px",flexShrink:0,background:A.key==="__free"?v:S(A),border:A.key==="__free"?`1px solid ${u?"rgba(255,255,255,0.25)":"#d1d5db"}`:"none"}}),Xr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},A.label),Xr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},qg(A.tokens)),Xr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:b,width:"46px",textAlign:"right"}},t>0?`${(A.tokens/t*100).toFixed(1)}%`:"\u2014"))),(n>0||o>0)&&Xr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:b}},n>0&&Xr.default.createElement("span",null,Xr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",qg(n)),o>0&&Xr.default.createElement("span",null,Xr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",qg(o)))))}var bt=Z(J());var Le=Z(J());var Hn=Z(J());var Se=Z(J());var LV=["ui","json-ui","genui"],Ip="render_ui",Is=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),vM=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Dp(e){let t=typeof e=="string"?vM(e):e;if(Array.isArray(t))return t.every(Is)?t:null;if(Is(t)){if(Array.isArray(t.blocks))return t.blocks.every(Is)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Is)?t.ui:null}return null}function xM(e,t){let r=String(e||"").trim().toLowerCase();if(LV.includes(r))return Dp(t);if(r==="json"){let n=vM(t);return Is(n)&&Array.isArray(n.ui)?Dp(n):null}return null}function bM(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=vM(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Is(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Dp(o);return a?{blocks:a}:{object:o}}var p1e=e=>Is(e)?e.function?.name||e.name:void 0,f1e=e=>Is(e)?e.function?.arguments??e.arguments??e.input:void 0;function Kg(e,{callId:t}={}){if(!Is(e))return null;if(e.tool_name===Ip&&e.tool_arguments!=null){let o=Dp(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Is(a)&&a.id!=null);r.forEach(a=>{if(p1e(a)!==Ip||t!=null&&o&&a.id!==t)return;let i=Dp(f1e(a));i&&n.push(...i)})}else if(Is(r)&&e.tool_name===Ip){let o=Dp(r);o&&n.push(...o)}return n.length>0?n:null}function fC(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function mC(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 zV(e){try{return new URL(String(e).trim()).host}catch{return""}}var qV=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],m1e=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],N0=qV.length,BV=220,Vg=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),Rt=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),KV=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()},_M=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,FV={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"]}},g1e={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},wM=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),CM=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"}),Gg=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Cu({block:e,reason:t,colors:r,darkMode:n}){return Se.default.createElement("div",{className:"text-xs",style:{color:r.textMuted}},Se.default.createElement("div",{className:"mb-1"},"Unsupported block",e&&e.type?` \u201C${Rt(e.type)}\u201D`:"",t?` \u2014 ${t}`:""),Se.default.createElement("pre",{style:{...CM(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function h1e({block:e,colors:t,darkMode:r,onAction:n}){let o=fC(e.image_url)&&mC(e.image_url)?e.image_url.trim():null;return Se.default.createElement("div",{className:"overflow-hidden",style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",background:t.innerBg}},o&&Se.default.createElement("img",{src:o,alt:Rt(e.title),style:{width:"100%",maxHeight:"220px",objectFit:"cover",display:"block"}}),Se.default.createElement("div",{className:"p-3 space-y-1.5"},e.title!=null&&Se.default.createElement("div",{style:Gg(t)},Rt(e.title)),e.body!=null&&Se.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},Se.default.createElement(Ds,{text:Rt(e.body),darkMode:r,onUiAction:n})),e.footer!=null&&Se.default.createElement("div",{className:"text-xs pt-1",style:{color:t.textMuted,borderTop:`1px solid ${t.cardBorder}`}},Rt(e.footer))))}function VV({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=_M(g1e,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?KV(e.value):Rt(e.value);return Se.default.createElement("div",{style:{background:t.innerBg,border:`1px solid ${t.cardBorder}`,borderRadius:"10px",padding:"10px 12px"}},Se.default.createElement("div",{className:"text-xs",style:{color:t.textMuted}},Rt(e.label)),Se.default.createElement("div",{className:"text-lg font-semibold leading-tight mt-0.5",style:{color:t.textPrimary}},s),n&&Se.default.createElement("div",{className:"text-xs mt-0.5 font-medium",style:{color:i}},n))}function y1e({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(Vg):[];return n.length===0?Se.default.createElement(Cu,{block:e,reason:"stats needs an items array",colors:t,darkMode:r}):Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(140px, 1fr))",gap:"8px"}},n.map((o,a)=>Se.default.createElement(VV,{key:a,block:o,colors:t,darkMode:r})))}var kM=(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"}),v1e=e=>({padding:"6px 10px",borderBottom:`1px solid ${e.borderStrong}`,color:e.textSecondary,fontSize:"11px",fontWeight:600,textAlign:"left",fontFamily:Ot.mono,textTransform:"uppercase",letterSpacing:"0.04em",whiteSpace:"nowrap"});function GV({columns:e,rows:t,colors:r,renderCell:n}){return Se.default.createElement("div",{style:{overflowX:"auto"}},Se.default.createElement("table",{className:"text-sm",style:{width:"100%",borderCollapse:"collapse"}},Se.default.createElement("thead",null,Se.default.createElement("tr",null,e.map((o,a)=>Se.default.createElement("th",{key:a,style:v1e(r)},Rt(o))))),Se.default.createElement("tbody",null,t.map((o,a)=>Se.default.createElement("tr",{key:a},e.map((i,s)=>{let l=o[s];return Se.default.createElement("td",{key:s,style:kM(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():Rt(l))}))))))}function x1e({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 Se.default.createElement(Cu,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:Vg(i)?n.map(s=>i[s]):[i]);return Se.default.createElement("div",null,e.title!=null&&Se.default.createElement("div",{className:"mb-1.5",style:Gg(t)},Rt(e.title)),Se.default.createElement(GV,{columns:n,rows:a,colors:t}))}var b1e=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},w1e=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function S1e({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(Vg):[];if(o.length===0)return Se.default.createElement(Cu,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:b1e(o),i=Array.isArray(e.series)?e.series.filter(b=>typeof b=="string"):[],s=(i.length>0?i:w1e(o,a)).slice(0,N0);if(!a||s.length===0)return Se.default.createElement(Cu,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?m1e:qV,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=Se.default.createElement(Dc,{contentStyle:{background:u,border:`1px solid ${t.cardBorder}`,borderRadius:"8px",fontSize:"12px"},labelStyle:{color:t.textPrimary,fontWeight:600,marginBottom:"4px"},itemStyle:{color:t.textCell},formatter:b=>typeof b=="number"?b.toLocaleString():Rt(b)}),p=s.length>1||n==="pie"?Se.default.createElement(uS,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=Se.default.createElement(Se.default.Fragment,null,Se.default.createElement(yu,{stroke:t.cardBorder,vertical:!1}),Se.default.createElement(wu,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),Se.default.createElement(ku,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:KV,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=Se.default.createElement(pM,{data:o,margin:m},f,d,p,s.map((b,h)=>Se.default.createElement(W_,{key:b,type:"monotone",dataKey:b,stroke:l[h],strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:u,fill:l[h]},activeDot:{r:5,strokeWidth:2,stroke:u},isAnimationActive:!1})));else if(n==="area")y=Se.default.createElement(Yc,{data:o,margin:m},f,d,p,s.map((b,h)=>Se.default.createElement(xu,{key:b,type:"monotone",dataKey:b,stroke:l[h],strokeWidth:2,fill:l[h],fillOpacity:.12,dot:{r:3,strokeWidth:2,stroke:u,fill:l[h]},isAnimationActive:!1})));else if(n==="pie"){let b=s[0],h=[...o].sort((x,S)=>(Number(S[b])||0)-(Number(x[b])||0)),g=h.slice(0,N0),v=h.slice(N0);v.length>0&&(g[N0-1]={[a]:"Other",[b]:v.reduce((x,S)=>x+(Number(S[b])||0),Number(g[N0-1][b])||0)}),y=Se.default.createElement(hM,{margin:m},d,p,Se.default.createElement(N_,{data:g,dataKey:b,nameKey:a,innerRadius:44,outerRadius:80,paddingAngle:2,stroke:u,strokeWidth:2,isAnimationActive:!1},g.map((x,S)=>Se.default.createElement(fu,{key:S,fill:l[S]}))))}else y=Se.default.createElement(fM,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((b,h)=>Se.default.createElement(Y_,{key:b,dataKey:b,fill:l[h],radius:[4,4,0,0],maxBarSize:24,isAnimationActive:!1})));return Se.default.createElement("div",null,e.title!=null&&Se.default.createElement("div",{className:"mb-1",style:Gg(t)},Rt(e.title)),Se.default.createElement("div",{style:{width:"100%",height:BV,minWidth:0}},Se.default.createElement(yc,{width:"100%",height:BV},y)))}function k1e({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return Se.default.createElement(Cu,{block:e,reason:"list needs an items array",colors:t,darkMode:r});let a=e.ordered?"ol":"ul";return Se.default.createElement("div",null,e.title!=null&&Se.default.createElement("div",{className:"mb-1",style:Gg(t)},Rt(e.title)),Se.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)=>Se.default.createElement("li",{key:s},typeof i=="string"?Se.default.createElement(Ds,{text:i,darkMode:r,onUiAction:n}):Rt(i)))))}function _1e({block:e,colors:t}){let r=Number(e.value),n=Number.isFinite(r)?Math.max(0,Math.min(100,r)):0;return Se.default.createElement("div",null,Se.default.createElement("div",{className:"flex items-center justify-between text-xs mb-1"},Se.default.createElement("span",{style:{color:t.textCell}},Rt(e.label)),Se.default.createElement("span",{className:"font-mono",style:{color:t.textMuted}},Math.round(n),"%")),Se.default.createElement("div",{style:{height:"8px",borderRadius:"999px",background:t.trackBg,overflow:"hidden"}},Se.default.createElement("div",{style:{width:`${n}%`,height:"100%",background:Vo,borderRadius:"999px",transition:"width 0.3s ease"}})))}var C1e=["text","textarea","number","select","checkbox"],SM=e=>Rt(e.name||e.label),UV=e=>Rt(e.label||e.name),WV=e=>C1e.includes(e.type)?e.type:"text";function A1e({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>Vg(p)&&(p.name||p.label)),[a,i]=(0,Se.useState)(()=>Object.fromEntries(o.map(p=>[SM(p),WV(p)==="checkbox"?!1:""]))),[s,l]=(0,Se.useState)(!1);if(o.length===0)return Se.default.createElement(Cu,{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 Se.default.createElement("form",{onSubmit:p=>{p.preventDefault();let f=o.map(m=>{let y=a[SM(m)];return`${UV(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&&Se.default.createElement("div",{style:Gg(t)},Rt(e.title)),o.map(p=>{let f=SM(p),m=WV(p),y=UV(p),b=`genui-field-${f.replace(/\W+/g,"-")}`;return m==="checkbox"?Se.default.createElement("label",{key:f,className:"flex items-center gap-2 text-sm",style:{color:t.textCell}},Se.default.createElement("input",{type:"checkbox",checked:!!a[f],onChange:h=>c(f,h.target.checked),style:{accentColor:Vo}}),y):Se.default.createElement("div",{key:f},Se.default.createElement("label",{htmlFor:b,className:"block text-xs mb-1",style:{color:t.textSecondary}},y,p.required?" *":""),m==="textarea"?Se.default.createElement("textarea",{id:b,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:{...wM(t),resize:"vertical"}}):m==="select"?Se.default.createElement("select",{id:b,name:f,value:a[f],onChange:h=>c(f,h.target.value),required:!!p.required,className:"aa-field",style:wM(t)},Se.default.createElement("option",{value:""},p.placeholder!=null?Rt(p.placeholder):"Select\u2026"),(Array.isArray(p.options)?p.options:[]).map((h,g)=>Se.default.createElement("option",{key:g,value:Rt(h)},Rt(h)))):Se.default.createElement("input",{id:b,name:f,type:m==="number"?"number":"text",value:a[f],onChange:h=>c(f,m==="number"&&h.target.value!==""?Number(h.target.value):h.target.value),placeholder:p.placeholder!=null?Rt(p.placeholder):void 0,required:!!p.required,className:"aa-field",style:wM(t)}))}),Se.default.createElement("div",{className:"flex items-center gap-3 pt-1"},Se.default.createElement("button",{type:"submit","data-testid":"genui-form-submit",style:{padding:"6px 14px",borderRadius:"8px",fontSize:"13px",fontWeight:500,background:Vo,color:"#ffffff",border:"1px solid transparent",cursor:"pointer"}},u),s&&Se.default.createElement("span",{className:"text-xs",style:{color:t.textMuted}},"Sent to the agent")))}function E1e({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.options)?e.options:null,[a,i]=(0,Se.useState)(null);return!o||o.length===0?Se.default.createElement(Cu,{block:e,reason:"choices needs options",colors:t,darkMode:r}):Se.default.createElement("div",null,e.prompt!=null&&Se.default.createElement("div",{className:"text-sm mb-1.5",style:{color:t.textCell}},Rt(e.prompt)),Se.default.createElement("div",{className:"flex flex-wrap gap-2"},o.map((s,l)=>{let u=Rt(s),c=a===l;return Se.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?Vo:t.inputBorder}`,background:c?Vo:"transparent",color:c?"#ffffff":t.textCell}},u)})))}function N1e({url:e,alt:t,colors:r,darkMode:n}){let[o,a]=(0,Se.useState)(!1);if(o)return Se.default.createElement("img",{src:e,alt:t,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}});let i=zV(e);return Se.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 T1e({block:e,colors:t,darkMode:r}){if(!fC(e.url))return Se.default.createElement(Cu,{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 Se.default.createElement("figure",{style:{margin:0}},mC(n)?Se.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):Se.default.createElement(N1e,{url:n,alt:o,colors:t,darkMode:r}),e.caption!=null&&Se.default.createElement("figcaption",{className:"text-xs mt-1",style:{color:t.textMuted}},Rt(e.caption)))}function O1e({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(_M(FV,e.tone)||FV.info)[r?"dark":"light"];return Se.default.createElement("div",{style:{background:o,borderLeft:`3px solid ${a}`,borderRadius:"8px",padding:"10px 12px"}},e.title!=null&&Se.default.createElement("div",{className:"text-sm font-semibold mb-0.5",style:{color:a}},Rt(e.title)),Se.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},Se.default.createElement(Ds,{text:Rt(e.body),darkMode:r,onUiAction:n})))}function P1e({block:e,colors:t,darkMode:r}){return Se.default.createElement("div",null,e.language!=null&&Se.default.createElement("div",{className:"text-xs font-mono mb-1",style:{color:t.textMuted}},Rt(e.language)),Se.default.createElement("pre",{style:CM(r)},Rt(e.code)))}function HV({block:e,colors:t,darkMode:r,onAction:n}){let o=e.text??e.body??e.content??e.markdown;return Se.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},Se.default.createElement(Ds,{text:Rt(o),darkMode:r,onUiAction:n}))}var M1e=3;function gC({value:e,colors:t,darkMode:r,depth:n}){if(e==null||typeof e!="object")return typeof e=="boolean"?Se.default.createElement("span",{className:"font-mono"},String(e)):typeof e=="number"?Se.default.createElement("span",{style:{fontVariantNumeric:"tabular-nums"}},e.toLocaleString()):Se.default.createElement("span",null,Rt(e));if(n>=M1e)return Se.default.createElement("pre",{style:{...CM(r),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2));if(Array.isArray(e)){if(e.length===0)return Se.default.createElement("span",{style:{color:t.textMuted}},"\u2014");if(e.every(Vg)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return Se.default.createElement(GV,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>Se.default.createElement(gC,{value:i,colors:t,darkMode:r,depth:n+1})})}return e.every(a=>a==null||typeof a!="object")?Se.default.createElement("span",null,e.map(Rt).join(", ")):Se.default.createElement("ul",{className:"list-disc pl-5 space-y-0.5"},e.map((a,i)=>Se.default.createElement("li",{key:i},Se.default.createElement(gC,{value:a,colors:t,darkMode:r,depth:n+1}))))}let o=Object.entries(e);return o.length===0?Se.default.createElement("span",{style:{color:t.textMuted}},"{}"):Se.default.createElement("table",{className:"text-sm",style:{borderCollapse:"collapse",width:n===0?"100%":"auto"}},Se.default.createElement("tbody",null,o.map(([a,i])=>Se.default.createElement("tr",{key:a},Se.default.createElement("th",{scope:"row",className:"font-mono text-xs",style:{...kM(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),Se.default.createElement("td",{style:kM(t,!1)},Se.default.createElement(gC,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function I1e({block:e,colors:t,darkMode:r}){let n="value"in e?e.value:e.data;return Se.default.createElement("div",{style:{border:`1px solid ${t.cardBorder}`,borderRadius:"10px",overflow:"hidden"}},e.title!=null&&Se.default.createElement("div",{className:"px-3 pt-2",style:Gg(t)},Rt(e.title)),Se.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},Se.default.createElement(gC,{value:n,colors:t,darkMode:r,depth:0})))}var D1e={card:h1e,stat:VV,stats:y1e,table:x1e,chart:S1e,list:k1e,progress:_1e,form:A1e,choices:E1e,image:T1e,callout:O1e,code:P1e,object:I1e,text:HV,markdown:HV};function ml({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(Vg):[];if(n.length===0)return null;let o=Ui(r);return Se.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=_M(D1e,s);return Se.default.createElement("div",{key:i,"data-testid":"genui-block","data-block-type":s},l?Se.default.createElement(l,{block:a,colors:o,darkMode:r,onAction:t}):Se.default.createElement(Cu,{block:a,colors:o,darkMode:r}))}))}var j1e=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,T0=(e,t)=>e.split(j1e).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return Hn.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return Hn.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return Hn.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?Hn.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),YV=e=>/^\s*\|.*\|\s*$/.test(e),$1e=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),XV=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function Ds({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` -`),a=0,i=0;for(;aHn.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},T0(p,`th${d}-${f}`))))),Hn.default.createElement("tbody",null,c.map((p,f)=>Hn.default.createElement("tr",{key:f},u.map((m,y)=>Hn.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},T0(p[y]??"",`td${d}-${f}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aHn.default.createElement("li",{key:d},T0(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(Hn.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(Hn.default.createElement("div",{key:i++},T0(s,`p${i}`))),a+=1}return Hn.default.createElement("div",{className:"break-words"},n)}var Ka=Z(J()),L1e=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"},z1e=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function AM({tool:e,darkMode:t}){let r=z1e(e);return Ka.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Ka.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Ka.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"}},Ka.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Ka.default.createElement("span",null,"source: ",L1e(e))))}function EM({tools:e,darkMode:t}){let[r,n]=(0,Ka.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 Ka.default.createElement("div",{style:{marginTop:"8px"}},Ka.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Ka.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Ka.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&&Ka.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"}`}},Ka.default.createElement(AM,{tool:a,darkMode:t})))}var B1e=["application/json","application/xml","application/x-yaml","application/csv"],F1e=/\.(csv|md|txt|json|ya?ml)$/i;function ZV(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/")||B1e.includes(t)||F1e.test(r)?"text":"file"}function JV(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 QV(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 RV=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,O0=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}},U1e=["text","output","body","content"],eG=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},W1e=e=>{let t=eG(e.tool_result)??eG(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=U1e.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}},H1e=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||O0(e.content)),nG=280,q1e=["tool","system","developer"],P0=(e,t=nG)=>e.replace(/\s+/g," ").trim().slice(0,t),NM=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)}},oG=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:NM(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:NM(t)}]:[]},aG=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),K1e=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||aG(o.content))return;let i=oG(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))},tG=e=>q1e.includes(e.role)&&typeof e.content=="string"&&P0(e.content).length>=nG,V1e=({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}}))},hC=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}),Pn=(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}}},rG={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function yC({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=Ui(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/"))&&QV(s.url),d=JV(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}},rG[s.kind]||rG.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 iG=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},G1e=(e,t)=>{let r=Kg(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?iG(o).has(e.tool_call_id):Kg(o)));return n?Kg(n,{callId:e.tool_call_id}):null},Y1e=(e,t)=>{let r=iG(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===Ip&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function ls({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,b]=(0,Le.useState)(null),h=_=>l(C=>({...C,[_]:!C[_]})),g={textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af"},v=_=>i?`${i}-${_}`:void 0,x=_=>_.stopPropagation(),S=_=>{c(_.id),p(_.content||""),b(null)},w=()=>{c(null),b(null)},A=async _=>{if(!f){m(!0),b(null);try{await o(_,d),c(null)}catch(C){b(C.message||"Could not save the message")}finally{m(!1)}}},k=K1e(e);return Le.default.createElement("div",{className:"space-y-3"},k.map(_=>{let C=Pn(_.role,t),E=!!s[_.id],j=u===_.id,X=!!((o||a)&&["user","assistant"].includes(_.role)),z=_.role==="tool"&&_.tool_name===Ip?G1e(_,k):null,U=_.role==="assistant"&&!j?bM(_.content):null,N=_.role==="assistant"&&!Y1e(_,k)?Kg(_):null,O=tG(_)&&!E,D=H1e(_)||tG(_),T=O0(_.tool_arguments),I=O0(_.tool_result)||O0(_.content),P=_.tool_calls&&(!Array.isArray(_.tool_calls)||_.tool_calls.length>0)?O0(_.tool_calls):null,H=_.role==="tool"?W1e(_):null,G=_.tool_name?(r||[]).find(Q=>Q&&Q.name===_.tool_name):null,L=_.role==="tool"?NM(_.tool_arguments):null,Y=_.role==="tool"&&!!L,W=Pn("assistant",t),ie=Pn("tool",t),Me=_.role==="tool"&&!_.tool_arguments&&k.some(Q=>Q&&Q.role==="assistant"&&(_.tool_call_id&&Q.tool_call_id===_.tool_call_id||Array.isArray(Q.tool_calls)&&Q.tool_calls.some(ee=>ee.id&&ee.id===_.tool_call_id))),pe=_.role==="assistant"&&!aG(_.content)?oG(_):[],ce=hC(t);return Le.default.createElement("div",{key:_.id,className:"group","data-testid":i,"data-message-id":i?_.id:void 0,"data-role":i?_.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(_.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"}},(Y?[W,ie]:[C]).map(Q=>Le.default.createElement("span",{key:Q.label,className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Q.background,color:Q.color,textAlign:"center"}},Q.label))),Le.default.createElement("div",{className:"min-w-0 flex-1"},Le.default.createElement("div",{className:"text-sm break-words",style:{color:g.textPrimary}},j?Le.default.createElement("div",{className:"space-y-2",onClick:x},Le.default.createElement("textarea",{"data-testid":v("editor"),value:d,onChange:Q=>p(Q.target.value),onKeyDown:Q=>{Q.key==="Escape"&&w(),Q.key==="Enter"&&(Q.metaKey||Q.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))):z?Le.default.createElement("div",null,Le.default.createElement("div",{className:"font-mono text-xs mb-1",style:{color:ie.color}},"\u2699 ",_.tool_name," \xB7 ",z.length," block",z.length===1?"":"s"),Le.default.createElement(ml,{blocks:z,onAction:n,darkMode:t})):_.role==="tool"?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},L&&!Me&&Le.default.createElement("span",{className:"font-mono text-xs break-words"},_.tool_name&&Le.default.createElement("span",{style:{color:ie.color}},"\u2699 ",_.tool_name," "),Le.default.createElement("span",{style:{color:Y?W.color:g.textMuted}},"in:")," ",P0(L,180),L.length>180?"\u2026":""),H?Le.default.createElement("span",null,_.tool_name&&!(L&&!Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",_.tool_name),(L||Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?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"):_.content?Le.default.createElement("span",null,_.tool_name&&!(L&&!Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",_.tool_name),(L||Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:Y?ie.color:g.textMuted}},"out:"),"\u201C",P0(_.content,180),_.content.replace(/\s+/g," ").trim().length>180?"\u2026":"","\u201D"):Le.default.createElement("span",{className:"whitespace-pre-wrap"},_.tool_name?`\u2192 ${_.tool_name}(...)`:"\u2014")):O?Le.default.createElement("span",{style:{color:g.textSecondary}},P0(_.content),"\u2026"):pe.length>0?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},pe.map((Q,ee)=>Le.default.createElement("span",{key:ee,className:"font-mono text-xs break-words"},Q.name&&Le.default.createElement("span",{style:{color:g.textMuted}},Q.name," "),Le.default.createElement("span",{style:{color:g.textMuted}},"in:")," ",Q.args?Le.default.createElement(Le.default.Fragment,null,P0(Q.args,180),Q.args.length>180?"\u2026":""):"\u2014"))):U&&U.blocks?Le.default.createElement(ml,{blocks:U.blocks,onAction:n,darkMode:t}):U&&U.object?Le.default.createElement(ml,{blocks:[{type:"object",value:U.object}],darkMode:t}):Le.default.createElement(Ds,{text:_.content||"\u2014",darkMode:t,onUiAction:n}),N&&!j&&Le.default.createElement("div",{className:"mt-2"},Le.default.createElement(ml,{blocks:N,onAction:n,darkMode:t})),_.role==="user"&&Le.default.createElement(yC,{attachments:_.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}},X&&!j&&Le.default.createElement("span",{className:"flex items-center gap-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",onClick:x},o&&Le.default.createElement("button",{type:"button","data-testid":v("edit"),onClick:()=>S(_),className:"hover:underline",style:{color:g.textSecondary,background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Edit"),a&&Le.default.createElement("button",{type:"button","data-testid":v("delete"),onClick:()=>a(_),className:"hover:underline",style:{color:"#dc2626",background:"none",border:"none",padding:0,cursor:"pointer",font:"inherit"}},"Delete")),_.created_at&&Le.default.createElement("span",null,new Date(_.created_at).toLocaleTimeString()),_.tool_name&&_.role!=="tool"&&Le.default.createElement("span",{className:"px-1.5 py-0.5 rounded",style:{background:C.background,color:C.color}},"\u2699 ",_.tool_name),_.duration_ms!=null&&Le.default.createElement("span",null,RV(_.duration_ms)),(_.tool_calls||[]).length>0&&Le.default.createElement("span",null,_.tool_calls.length," tool call",_.tool_calls.length>1?"s":""),_.content_checksum&&Le.default.createElement("span",{title:"Content fingerprint"},"\u{1F512} ",_.content_checksum.slice(0,8)))),Le.default.createElement(V1e,{message:_,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}},_.created_at&&Le.default.createElement("span",null,new Date(_.created_at).toLocaleString()),_.tool_call_id&&Le.default.createElement("span",null,"call: ",_.tool_call_id),_.duration_ms!=null&&Le.default.createElement("span",null,"took ",RV(_.duration_ms)),_.content_checksum&&Le.default.createElement("span",null,"\u{1F512} ",_.content_checksum)),T&&Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?W.color:g.textMuted}},"Arguments",Y?" \xB7 from the agent":""),Le.default.createElement("pre",{style:ce},T)),H?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?ie.color:g.textMuted}},"Result",Y?" \xB7 from the tool":""),Object.keys(H.rest).length>0&&Le.default.createElement("pre",{style:ce},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:{...ce,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},H.body.slice(0,8e3),H.body.length>8e3?` -\u2026`:"")):I?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:g.textMuted}},_.role==="tool"?"Result":"Content (parsed)"),Le.default.createElement("pre",{style:ce},I)):_.role==="tool"&&_.content?Le.default.createElement("div",null,Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:Y?ie.color:g.textMuted}},"Result",Y?" \xB7 from the tool":""," \xB7 ",_.content.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...ce,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},_.content.slice(0,8e3),_.content.length>8e3?` -\u2026`:"")):null,P&&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},P)),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(AM,{tool:G,darkMode:t}))))}))}var nr=Z(J());var rn=Z(J());var qn=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"}),sG=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function jp({open:e,darkMode:t,size:r=14,style:n}){return rn.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:qn(t).textMuted,...n},"aria-hidden":"true"},rn.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function vC({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=qn(e);return rn.default.createElement("div",{id:t,className:`rounded-xl border overflow-hidden transition-colors ${o}`,style:{backgroundColor:a.cardBg,borderColor:a.cardBorder,...n}},r)}var ka={context:132,duration:76,tokens:104,cost:88,status:68,count:96,age:76};function Jc({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=qn(t),i=(e||[]).filter(Boolean);return i.length===0?null:rn.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 rn.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:rn.default.createElement("span",{style:{color:a.textMuted}},"\u2014"))}))}var lG=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:qn(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),X1e=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 Yg({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=Xg(),c=qn(t),d=(e||[]).filter(p=>p&&(p.text||s));return d.some(p=>p.text)?rn.default.createElement("div",{onClick:r,className:"min-w-0",style:{display:"grid",gap:"2px",paddingLeft:n?`${n}px`:0,fontFamily:Ot.mono,fontSize:o,color:c.textSecondary,cursor:r?"pointer":"default",...a}},d.map((p,f)=>{let m=`${p.label}-${f}`,y=l(m),b=p.max||i,h=!p.text,g=String(p.text??"").replace(/\s+/g," ").trim(),v=X1e(p.text),x=!h&&(v.json||g.length>60||g!==String(p.text).trim());return rn.default.createElement("div",{key:m},rn.default.createElement("div",{onClick:x?S=>{S.stopPropagation(),u(m)}:void 0,title:x?y?"Collapse":"Expand":void 0,style:{cursor:x?"pointer":"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0}},rn.default.createElement("span",{style:{color:p.color||c.textMuted}},x?y?"\u25BE":"\u25B8":"\xA0"," ",p.label,":")," ",!y&&(h?rn.default.createElement("span",{style:{color:c.textMuted}},"\u2014"):sG(g,b))),y&&rn.default.createElement("pre",{onClick:S=>S.stopPropagation(),style:lG(t,{wrap:!v.json})},v.text))})):null}function M0({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=qn(n);return rn.default.createElement("div",{className:"flex items-center gap-1 flex-shrink-0",style:a},o&&rn.default.createElement("span",{className:"text-xs mr-1",style:{color:i.textMuted}},o),e.map(s=>rn.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 uG({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=qn(o);return rn.default.createElement("div",null,rn.default.createElement("div",{onClick:l=>{l.stopPropagation(),n()},title:r?"Collapse":"Expand",style:{cursor:"pointer",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},rn.default.createElement("span",{style:{color:s.textMuted}},r?"\u25BE":"\u25B8"," ",e,":")," ",!r&&rn.default.createElement("span",{style:{color:s.textMuted}},sG(t,i))),r&&rn.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:lG(o,{wrap:a})},t))}function Xg(e={}){let[t,r]=(0,rn.useState)(e),n=(0,rn.useCallback)(a=>{r(i=>({...i,[a]:!i[a]}))},[]);return[(0,rn.useCallback)(a=>!!t[a],[t]),n,r]}var TM={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},dG=[{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"}],Kn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,OM=e=>{switch(e){case"root":return Io.spans.root;case"prompt":return Io.spans.prompt;case"generate":return Io.spans.generate;case"llm":return Io.spans.llm;case"thinking":return Io.spans.thinking;case"tool":return Io.spans.tool;case"response":return Io.spans.response;default:return"-"}},Z1e=(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))},J1e=(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))}},Q1e=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},R1e=(e,t)=>{if(!t.duration_ms)return Kn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Kn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},ewe=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},cG=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,PM=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}},twe=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}},rwe=(e,t)=>{let r=twe(e),n=PM(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},nwe=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}},MM=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 owe({span:e,darkMode:t,tools:r=[]}){let[n,o]=Xg(),a=qn(t),{messages:i,rest:s}=nwe(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)=>cG(f[0])-cG(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 nr.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:Ot.mono,fontSize:"12px",color:a.textBody,cursor:"default"}},nr.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 20px"}},nr.default.createElement("span",null,"duration: ",Kn(e.duration)),nr.default.createElement("span",null,"status: ",e.status||"OK"),Q1e(e)>0&&nr.default.createElement("span",null,"tokens in:",e.tokens.input||0," out:",e.tokens.output||0,e.tokens.thinking>0?` thinking:${e.tokens.thinking}`:""),nr.default.createElement("span",{style:{color:a.textMuted}},"span: ",e.span_id)),d&&nr.default.createElement("div",{style:{marginTop:"8px",display:"grid",gap:"4px"}},nr.default.createElement("div",{style:{fontSize:"12px",wordBreak:"break-all"}},nr.default.createElement("span",{style:{color:Pn("tool",t).color}},"\u2699 ",d.tool_name),p&&nr.default.createElement(nr.default.Fragment,null," ",nr.default.createElement("span",{style:{color:Pn("assistant",t).color}},"in:")," ",nr.default.createElement("span",{style:{color:a.textBody}},p))),d.content&&nr.default.createElement("div",{style:{fontSize:"12px"}},nr.default.createElement("span",{style:{color:Pn("tool",t).color}},"out:")," ",nr.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&&nr.default.createElement("div",{style:{marginTop:"10px",fontFamily:"ui-sans-serif, system-ui, sans-serif"}},nr.default.createElement(ls,{messages:i,darkMode:t,tools:l||r})),l&&nr.default.createElement(EM,{tools:l,darkMode:t}),c.length>0&&nr.default.createElement("div",{style:{marginTop:"6px",display:"grid",gap:"2px"}},c.map(([f,m])=>{let y=f.match(/args|result|input|output/)?ewe(m):null,b=!y&&(f.endsWith(".instructions")||f.match(/input|output|result/))&&typeof m=="string"?m:null,h=y||b;if(!h)return nr.default.createElement("div",{key:f,style:{wordBreak:"break-all"}},nr.default.createElement("span",{style:{color:a.textMuted}},f,":")," ",typeof m=="string"?m:JSON.stringify(m));let g=`${e.span_id}:${f}`;return nr.default.createElement(uG,{key:f,label:f,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function awe({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=qn(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:rwe(e,t);return nr.default.createElement(nr.default.Fragment,null,nr.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},nr.default.createElement("div",{className:"flex items-baseline gap-2 min-w-0"},nr.default.createElement("span",{className:"flex-shrink-0",style:{color:e.type==="thinking"?void 0:l.textMuted}},OM(e.type)),nr.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:e.error?l.bad:l.textPrimary}},e.name),nr.default.createElement("span",{className:"text-xs ml-auto flex-shrink-0",style:{fontFamily:Ot.mono,color:l.textMuted}},R1e(e,t)),u&&nr.default.createElement(jp,{open:a,darkMode:r,size:13,style:{marginLeft:"2px"}})),nr.default.createElement("div",{className:"h-3 relative rounded mt-0.5",style:{background:l.trackBg}},nr.default.createElement("div",{className:"absolute h-3 rounded",style:{background:e.error?"#f87171":TM[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}%`:`${Z1e(e.duration,o)}%`}})),c&&nr.default.createElement(Yg,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:Pn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:Pn(c.outputTone,r).color,max:160}]})),a&&nr.default.createElement(owe,{span:e,darkMode:r,tools:s}))}function IM({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=Xg(),s=qn(t),l=J1e(e?.spans,r),u=n||MM(e);if(l.length===0)return nr.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 nr.default.createElement("div",{className:"space-y-2"},l.map((d,p)=>{let f=`${o}${d.span_id||p}`;return nr.default.createElement(awe,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var iwe=[{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"}],swe=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 lwe({trace:e,darkMode:t}){let r=qn(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=swe(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)=>bt.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return bt.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},bt.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),bt.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")),bt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:Ot.mono,color:r.textBody}},bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Kn(n)," (",l(n),")"),bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Kn(a)," (",l(a),")"),s>0&&bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Kn(s)," (",l(s),")")),o.length>0&&bt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"4px",fontSize:"12px",fontFamily:Ot.mono,color:r.textSecondary}},o.map((c,d)=>bt.default.createElement("span",{key:d},c.name," ",Kn(c.duration)," (",l(c.duration||0),")"))))}function uwe({trace:e,darkMode:t}){let[r,n]=(0,bt.useState)(null),[o,a]=(0,bt.useState)(!1),i=qn(t);if((0,bt.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 bt.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return bt.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?bt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):bt.default.createElement(ls,{messages:s,darkMode:t,tools:MM(e)})}function I0({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,bt.useState)("spans"),[i,s]=(0,bt.useState)("time"),l=qn(t),u=(e?.spans||[]).length,c=pC(e),d=e?.tokens||{},p=(0,bt.useCallback)(f=>a(n?f:"spans"),[n]);return e?bt.default.createElement("div",null,bt.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},bt.default.createElement("div",{className:"flex items-center gap-1"},n&&bt.default.createElement(M0,{options:iwe,value:o,onChange:p,darkMode:t}),bt.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&bt.default.createElement(M0,{options:dG,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?bt.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},bt.default.createElement(uwe,{trace:e,darkMode:t})):bt.default.createElement(bt.default.Fragment,null,i==="time"?bt.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},bt.default.createElement("span",null,"0ms"),bt.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),bt.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),bt.default.createElement("span",null,Kn(e.duration_ms))):bt.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),bt.default.createElement(IM,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&bt.default.createElement("div",{className:"mt-3"},bt.default.createElement(Zc,{...c,label:"Context pressure",darkMode:t})),bt.default.createElement(lwe,{trace:e,darkMode:t}),!r&&bt.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}},bt.default.createElement("span",null,"Tokens:"),d.thinking>0&&bt.default.createElement("span",{className:"text-amber-500",style:{fontFamily:Ot.mono}},"T:",d.thinking.toLocaleString()),bt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:Ot.mono}},"in:",(d.input||0).toLocaleString()),bt.default.createElement("span",{className:"text-green-500",style:{fontFamily:Ot.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&bt.default.createElement("span",{style:{fontFamily:Ot.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&bt.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"}},bt.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var cwe=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},dwe=e=>e==null?null:`$${e.toFixed(4)}`;function xC({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=qn(t),a=PM(e),i=pC(e),s=e.status!=="ERROR",l=cwe(e.tokens);return Mn.default.createElement(vC,{darkMode:t,id:`trace-row-${e.id}`},Mn.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},Mn.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},Mn.default.createElement("span",{className:"px-2 py-1 text-xs rounded flex-shrink-0",style:{fontFamily:Ot.mono,background:o.controlBg,color:o.textSecondary}},"TRACE"),Mn.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:Ot.mono,color:o.textMuted}},e.short_id),Mn.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),Mn.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},Mn.default.createElement(Jc,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&Mn.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{fontFamily:Ot.mono,background:t?"rgba(99,102,241,0.2)":"#eef2ff",color:t?"#a5b4fc":"#4338ca"}},e.model)},{key:"context",width:ka.context,empty:"Context: no generation in this trace reported its token counts",content:i&&Mn.default.createElement(Zc,{compact:!0,...i,label:"Context",darkMode:t})},{key:"duration",width:ka.duration,title:"Wall-clock duration",empty:"No duration recorded for this trace",content:e.duration_ms!=null&&Mn.default.createElement(Mn.default.Fragment,null,Mn.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Kn(e.duration_ms))},{key:"tokens",width:ka.tokens,title:"Tokens in, out and thinking",empty:"No token counts recorded for this trace",content:l&&`${l} tokens`},{key:"cost",width:ka.cost,title:"Estimated cost of this trace",empty:"Nothing to price \u2014 this trace recorded no tokens",content:e.estimated_cost!=null&&Mn.default.createElement(Mn.default.Fragment,null,Mn.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),dwe(e.estimated_cost))},{key:"status",width:ka.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:Mn.default.createElement("span",{style:{color:s?o.good:o.bad}},Mn.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),Mn.default.createElement(jp,{open:r,darkMode:t}))),!r&&Mn.default.createElement(Yg,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:Pn("user",t).color},{label:"output",text:a.output,color:Pn("assistant",t).color}]}),r&&Mn.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},Mn.default.createElement(I0,{trace:e,darkMode:t})))}function pG(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function fG(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function nt(e=""){return pG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function Qc(e="",t={}){window.history.pushState(t,"",nt(e))}function Vn(e=window.location.pathname){return fG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function dt(e,t={}){if(!e)return;let r=Vn(e);Qc(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:nt(r)}}))}var mG=({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 gG=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],pwe=3e4,fwe=e=>{let t={};return e.forEach((r,n)=>{t[r]=gG[n%gG.length]}),t},mwe=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)},gwe=(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 $p({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")),[b,h]=(0,q.useState)(null),[g,v]=(0,q.useState)({status:"all",agent:"all",action:"all"}),[x,S]=(0,q.useState)("time"),[w,A]=(0,q.useState)(null),[k,_]=(0,q.useState)("timeline"),[C,E]=(0,q.useState)("popular"),{timeWindow:j}=pl(),X=(0,q.useCallback)(async()=>{try{let $=await fetch(mG({minutes:j.minutes,agentId:e}));if(!$.ok)throw new Error(`Request failed (${$.status})`);let B=await $.json();o(B.traces||[]),i(B.agents||[]),l(B.agent_ids||{}),p(null)}catch($){p($.message)}finally{c(!1)}},[j.minutes,e]);(0,q.useEffect)(()=>{X();let $=setInterval(X,pwe);return()=>clearInterval($)},[X]);let z=(0,q.useMemo)(()=>fwe(a),[a]);(0,q.useEffect)(()=>{A(null)},[j.id]);let U=(0,q.useMemo)(()=>gwe(n,a,j.minutes,j.bucketSeconds),[n,a,j]),N=Math.max(0,Math.ceil(U.length/6)-1),O=(0,q.useMemo)(()=>{let $=n;if(w!==null){let B=U[w];B&&($=B.traces||[])}if(g.status!=="all"&&($=$.filter(B=>g.status==="success"?B.status!=="ERROR":B.status==="ERROR")),g.agent!=="all"&&($=$.filter(B=>B.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[B,K]=g.action.split("#");$=$.filter(M=>M.agent===B&&M.action===K)}else $=$.filter(B=>B.action===g.action);return x==="latency"&&($=[...$].sort((B,K)=>(K.duration_ms||0)-(B.duration_ms||0))),b&&!$.some(B=>B.id===b.id)&&($=[b,...$]),$},[n,w,U,g,x,b]);(0,q.useEffect)(()=>{let $=y.current;if(!$)return;let B=M=>{y.current=null,m(M.id),setTimeout(()=>{document.getElementById(`trace-row-${M.id}`)?.scrollIntoView({behavior:"smooth",block:"start"})},150)},K=n.find(M=>M.id===$||M.trace_id===$||M.short_id&&String($).startsWith(M.short_id));if(K){B(K);return}n.length!==0&&fetch(`/api/traces/${encodeURIComponent($)}`).then(M=>M.ok?M.json():Promise.reject(new Error("not found"))).then(({trace:M})=>{h(M),B(M)}).catch(()=>{y.current=null})},[n]);let D=(0,q.useMemo)(()=>{let $=w!==null?U[w]?.traces||[]:n,B={};$.forEach(M=>{M.agent&&(B[M.agent]||(B[M.agent]={agent:M.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),B[M.agent].count++,B[M.agent].totalDuration+=M.duration_ms||0,B[M.agent].cost+=M.estimated_cost||0,M.status==="ERROR"&&B[M.agent].errors++,M.tokens&&(B[M.agent].tokens.thinking+=M.tokens.thinking||0,B[M.agent].tokens.input+=M.tokens.input||0,B[M.agent].tokens.output+=M.tokens.output||0),M.action&&(B[M.agent].actions[M.action]=(B[M.agent].actions[M.action]||0)+1))});let K={popular:M=>M.count,longest:M=>M.totalDuration/(M.count||1),cost:M=>M.cost,tokens:M=>(M.tokens.input||0)+(M.tokens.output||0)+(M.tokens.thinking||0),errors:M=>M.errors}[C]||(M=>M.count);return Object.values(B).sort((M,ae)=>K(ae)-K(M)||ae.count-M.count)},[n,U,w,C]),T=(0,q.useMemo)(()=>{let $=w!==null?U[w]?.traces||[]:n,B={};return $.forEach(K=>{if(!K.agent)return;let M=`${K.agent}#${K.action||"unknown"}`;B[M]||(B[M]={key:M,agent:K.agent,action:K.action||"unknown",count:0,totalDuration:0,errors:0,minDuration:1/0,maxDuration:0,tokens:{thinking:0,input:0,output:0}}),B[M].count++,B[M].totalDuration+=K.duration_ms||0,B[M].minDuration=Math.min(B[M].minDuration,K.duration_ms||0),B[M].maxDuration=Math.max(B[M].maxDuration,K.duration_ms||0),K.status==="ERROR"&&B[M].errors++,K.tokens&&(B[M].tokens.thinking+=K.tokens.thinking||0,B[M].tokens.input+=K.tokens.input||0,B[M].tokens.output+=K.tokens.output||0)}),Object.values(B).forEach(K=>{K.minDuration===1/0&&(K.minDuration=0)}),Object.values(B).sort((K,M)=>M.count-K.count)},[n,U,w]),I=(0,q.useMemo)(()=>{let $=w!==null?U[w]?.traces||[]:n,B={};return $.forEach(K=>{(K.spans||[]).forEach(M=>{if(M.type!=="tool")return;let ae=M.attributes?.["tool.name"]||M.name?.replace(/^tool\./,"")||"unknown";B[ae]||(B[ae]={name:ae,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),B[ae].count++,B[ae].totalDuration+=M.duration||0,B[ae].maxDuration=Math.max(B[ae].maxDuration,M.duration||0),M.error&&B[ae].errors++,K.agent&&B[ae].agents.add(`${K.agent}#${K.action||"unknown"}`)})}),Object.values(B).map(K=>({...K,agents:[...K.agents],avgDuration:K.count?K.totalDuration/K.count:0})).sort((K,M)=>M.totalDuration-K.totalDuration)},[n,U,w]),P=(0,q.useMemo)(()=>g.agent==="all"?T.map($=>$.key):T.filter($=>$.agent===g.agent).map($=>$.key),[g.agent,T]),H=(0,q.useMemo)(()=>mwe(O),[O]),G=$=>{if($&&$.activeTooltipIndex!==void 0){let B=$.activeTooltipIndex;A(w===B?null:B),m(null)}},L=$=>($?.input||0)+($?.output||0)+($?.thinking||0),Y=$=>{let B=$.count?$.errors/$.count:0;return[{label:`Calls ${j.label||""}`.trim(),value:$.count.toLocaleString()},{label:"Errors",value:`${(B*100).toFixed(1)}%`,tone:$.errors>0?"bad":"good"},{label:"Avg time",value:`${Math.round($.totalDuration/($.count||1))}ms`},{label:"Tokens",value:L($.tokens).toLocaleString()},{label:"Cost",value:W($.cost),title:"Estimated from token counts at this model's published rates",tone:$.cost?void 0:"muted"},{label:"Actions",value:($.agents?.length||0).toLocaleString()}]},W=$=>$?$<.01?"<$0.01":`$${$.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:$=>E($.target.value),style:{fontSize:"12px",padding:"4px 8px",borderRadius:"6px",border:`1px solid ${r?"rgba(255,255,255,0.15)":"#e5e7eb"}`,background:r?"rgba(255,255,255,0.05)":"#ffffff",color:r?"#f9fafb":"#111827"}},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"))),Me=$=>v(B=>({...B,agent:B.agent===$?"all":$})),pe=$=>{let B=s[$];if(!B)return Me($);let K=nt(`/agents/${B}`);window.history.pushState(window.history.state,"",K),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:K}}))},ce=$=>{let B=H[0]?.total||1,K=$?"rgba(0,0,0,0.3)":"white",M=$?"1px solid rgba(255,255,255,0.1)":"1px solid #e5e7eb",ae=$?"white":"#111827",F=$?"rgba(255,255,255,0.5)":"#6b7280",se={llm:"#ef4444",tool:"#10b981",generate:"#8b5cf6",prompt:"#3b82f6"};return q.default.createElement("div",{style:{padding:$?"0 24px 24px 24px":0}},q.default.createElement("div",{style:{background:K,border:M,borderRadius:"12px",padding:"16px"}},q.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:ae,marginBottom:"4px"}},"Slowest operations"),q.default.createElement("div",{style:{fontSize:"12px",color:F,marginBottom:"14px"}},"Span durations aggregated across ",O.length," trace",O.length===1?"":"s"," \u2014 ranked by total time"),H.length===0?q.default.createElement("div",{style:{fontSize:"13px",color:F,padding:"12px 0"}},"No spans in the current selection"):q.default.createElement("div",{style:{display:"grid",gap:"10px"}},H.map(oe=>q.default.createElement("div",{key:oe.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:F}},OM(oe.type)),q.default.createElement("span",{style:{fontSize:"13px",color:oe.errors>0?"#ef4444":ae,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},oe.name)),q.default.createElement("div",{style:{flex:1,height:"18px",background:$?"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(oe.total/B*100,.5)}%`,background:se[oe.type]||"#6366f1"}})),q.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:F,fontFamily:Ot.mono,textAlign:"right"}},oe.count,"\xD7 \xB7 avg ",Kn(oe.avg)," \xB7 max ",Kn(oe.max)," \xB7 \u03A3 ",Kn(oe.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 Q={requests:U.reduce(($,B)=>$+B.requests,0),errors:U.reduce(($,B)=>$+B.errors,0),avgLatency:(()=>{let $=U.filter(B=>B.requests>0);return $.length===0?0:Math.round($.reduce((B,K)=>B+K.avgLatency,0)/$.length)})(),throughput:(U.reduce(($,B)=>$+B.requests,0)/j.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 ${U[w]?.time} \u2022 ${O.length} requests`:`Last ${j.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($=>q.default.createElement("button",{key:$,onClick:()=>_($),style:{padding:"6px 12px",background:k===$?"#ef4444":"transparent",color:"white",borderRadius:"6px",border:"none",fontSize:"13px",cursor:"pointer",textTransform:"capitalize"}},$))),!e&&q.default.createElement("select",{value:g.agent,onChange:$=>v({...g,agent:$.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($=>q.default.createElement("option",{key:$,value:$},$))),q.default.createElement("select",{value:g.action,onChange:$=>v({...g,action:$.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"),P.map($=>q.default.createElement("option",{key:$,value:$},$))),q.default.createElement("select",{value:g.status,onChange:$=>v({...g,status:$.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:x,onChange:$=>S($.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:()=>A(null),style:{padding:"8px 16px",background:"rgba(255,255,255,0.2)",color:"white",borderRadius:"8px",border:"none",fontSize:"14px",fontWeight:"500",cursor:"pointer"}},"Clear Selection")))),d&&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(z).map(([$,B])=>q.default.createElement("div",{key:$,style:{display:"flex",alignItems:"center",gap:"6px"}},q.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:B}}),q.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},$.replace("Agent","")))))),q.default.createElement("div",{style:{height:"150px"}},q.default.createElement(yc,{width:"100%",height:"100%"},q.default.createElement(Yc,{data:U,onClick:G,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries(z).map(([$,B])=>q.default.createElement("linearGradient",{key:$,id:`gradient-${$}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.8}),q.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.1})))),q.default.createElement(yu,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),q.default.createElement(wu,{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(ku,{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(Dc,{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:($,B)=>[$,B.replace("Agent","")]}),Object.keys(z).map($=>q.default.createElement(xu,{key:$,type:"monotone",dataKey:$,stackId:"1",stroke:z[$],fill:`url(#gradient-${$})`}))))),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"}},Q.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"}},Q.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"}},Q.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"}},Q.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"}},D.map($=>q.default.createElement(pm,{key:$.agent,name:$.agent,accentColor:z[$.agent],subtitle:$.agents?.length?$.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"}},$.count," calls"),onClick:()=>pe($.agent),stats:Y($),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[$.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:B=>{B.stopPropagation(),Me($.agent)},style:{background:"none",border:"none",padding:0,cursor:"pointer",color:g.agent===$.agent?"#ef4444":"inherit",font:"inherit"}},g.agent===$.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($=>{let B=g.action===$.key;return q.default.createElement("div",{key:$.key,onClick:()=>{v({...g,action:B?"all":$.key}),_("timeline")},style:{background:B?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:B?"1px solid #ef4444":`1px solid ${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"}},$.agent),q.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",$.action)),q.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:z[$.agent]+"30",color:z[$.agent],borderRadius:"4px"}},$.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($.totalDuration/$.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($.minDuration),"ms / ",Math.round($.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:$.errors>0?"#ef4444":"#10b981"}},$.errors," (",($.errors/$.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($.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($=>q.default.createElement(xC,{key:$.id,trace:$,darkMode:!0,expanded:f===$.id,onToggle:()=>m(f===$.id?null:$.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 ${U[w]?.time} \u2022 ${O.length} requests`:`Last ${j.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(fl,null),q.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map($=>q.default.createElement("button",{key:$,onClick:()=>_($),className:`px-3 py-1 text-sm rounded-md transition-colors capitalize ${k===$?"bg-white shadow text-gray-900":"text-gray-600"}`},$))),q.default.createElement("select",{value:g.agent,onChange:$=>v({...g,agent:$.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($=>q.default.createElement("option",{key:$,value:$},$))),q.default.createElement("select",{value:g.action,onChange:$=>v({...g,action:$.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"),P.map($=>q.default.createElement("option",{key:$,value:$},$))),q.default.createElement("select",{value:g.status,onChange:$=>v({...g,status:$.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:x,onChange:$=>S($.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:()=>A(null),className:"px-4 py-2 bg-gray-200 text-gray-700 rounded-lg hover:bg-gray-300 transition-colors text-sm font-medium"},"Clear Selection"))),d&&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(z).map(([$,B])=>q.default.createElement("div",{key:$,className:"flex items-center gap-1.5"},q.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:B}}),q.default.createElement("span",{className:"text-xs text-gray-500"},$.replace("Agent","")))))),q.default.createElement("div",{className:"h-36"},q.default.createElement(yc,{width:"100%",height:"100%"},q.default.createElement(Yc,{data:U,onClick:G,style:{cursor:"pointer"}},q.default.createElement("defs",null,Object.entries(z).map(([$,B])=>q.default.createElement("linearGradient",{key:$,id:`gradient-light-${$}`,x1:"0",y1:"0",x2:"0",y2:"1"},q.default.createElement("stop",{offset:"5%",stopColor:B,stopOpacity:.6}),q.default.createElement("stop",{offset:"95%",stopColor:B,stopOpacity:.05})))),q.default.createElement(yu,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),q.default.createElement(wu,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),q.default.createElement(ku,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),q.default.createElement(Dc,{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:($,B)=>[$,B.replace("Agent","")]}),Object.keys(z).map($=>q.default.createElement(xu,{key:$,type:"monotone",dataKey:$,stackId:"1",stroke:z[$],fill:`url(#gradient-light-${$})`}))))),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"},Q.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"},Q.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"},Q.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"},Q.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"},D.map($=>q.default.createElement(pm,{key:$.agent,name:$.agent,accentColor:z[$.agent],subtitle:$.agents?.length?$.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]}},$.count," calls"),onClick:()=>pe($.agent),stats:Y($),footer:q.default.createElement(q.default.Fragment,null,q.default.createElement("span",null,s[$.agent]?"Open agent \u2192":"Not linked to an agent record"),q.default.createElement("button",{onClick:B=>{B.stopPropagation(),Me($.agent)},className:g.agent===$.agent?"text-red-600":"hover:text-gray-700"},g.agent===$.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($=>{let B=g.action===$.key;return q.default.createElement("div",{key:$.key,onClick:()=>{v({...g,action:B?"all":$.key}),_("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${B?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:z[$.agent],borderLeftWidth:B?"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"},$.agent),q.default.createElement("span",{className:"text-gray-500"},"#",$.action)),q.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:z[$.agent]+"20",color:z[$.agent]}},$.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($.totalDuration/$.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($.minDuration),"ms / ",Math.round($.maxDuration),"ms")),q.default.createElement("div",null,q.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),q.default.createElement("div",{className:$.errors>0?"text-red-600":"text-green-600"},$.errors," (",($.errors/$.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($.tokens).toLocaleString()))))})),k==="tools"&&(I.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")),I.map($=>{let B=I[0].totalDuration?$.totalDuration/I[0].totalDuration*100:0;return q.default.createElement("div",{key:$.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:$.name},$.name),$.agents.length>0&&q.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:$.agents.join(", ")},$.agents.join(", "))),q.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:Ot.mono}},$.count.toLocaleString(),$.errors>0&&q.default.createElement("span",{className:"text-red-600 ml-1",title:`${$.errors} failed`},"(",$.errors,")")),q.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:Ot.mono}},Kn($.totalDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Ot.mono}},Kn($.avgDuration)),q.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Ot.mono}},Kn($.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(B,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($=>q.default.createElement(xC,{key:$.id,trace:$,darkMode:!1,expanded:f===$.id,onToggle:()=>m(f===$.id?null:$.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 be=Z(J());var bC=Z(J());function DM({trace:e,darkMode:t,height:r=8}){let n=qn(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 ${Kn(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":TM[s.type]||"#9ca3af"}})))}var js=Z(J());var hr=Z(J());var Hr=Z(J());var V="var(--font-mono)",Au=e=>e>=1?"success":e>=.7?"warning":"error",po={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)"}},D0={object:"=",sample:"~",pass:Io.success,fault:Io.error,info:Io.info,on:"[x]",off:"[ ]",link:Io.arrow,chevron:Io.chevronRight};function Va({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Hr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:V,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},D0.chevron):Hr.default.createElement("span",{title:i,style:{fontFamily:V,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}},D0[e]||e)}function Ee({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=po[e]||po.muted;return Hr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:V,fontSize:t,fontWeight:600,whiteSpace:"nowrap",background:i.soft,color:i.text,...o}},r)}function Ve({children:e,size:t=11,color:r="var(--color-text-secondary)",spacing:n="0.06em",style:o,as:a="span",htmlFor:i}){return Hr.default.createElement(a,{htmlFor:i,style:{fontFamily:V,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function In({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Hr.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?V:"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 us({options:e,value:t,onChange:r,style:n}){return Hr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Hr.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 ge({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 Hr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function Fe({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Hr.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 Zg({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Hr.default.createElement(Fe,{testId:a},Hr.default.createElement(Ve,{size:11,spacing:"0.05em"},e),Hr.default.createElement("div",{style:{marginTop:8,fontFamily:V,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Hr.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function Zr({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return Hr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Hr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Hr.default.createElement(Ve,null,e),t&&Hr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},t)),Hr.default.createElement("div",{style:a},r))}function Lp({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||po[Au(u)].strong;return Hr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Hr.default.createElement("span",{style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Hr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Hr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Hr.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function wC({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Hr.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)=>Hr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(po[l.tone]||po.muted).strong,transition:"width 300ms"}})))}function gn({children:e,onClick:t,href:r="#",color:n="var(--color-info)",size:o=11,style:a,title:i,testId:s}){return Hr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:V,fontSize:o,color:n,textDecoration:"none",...a}},e," ",D0.link)}function hn({children:e,style:t}){return Hr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:V,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Eu=Z(J());var hwe=/\/agents\/(\d+)/;function Ga(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function ywe(e){return t=>t===e?{}:null}function j0(e){return t=>e.test(t)?{agentId:t.match(hwe)?.[1]}:null}function SC(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var vwe=e=>e.assistantEnabled!==!1,xwe=j0(/\/agents\/\d+\/(interactions|history)/),bwe=["recording","context","run","scenario_result"],wwe=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function Swe(e){let t=e.match(wwe);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var jM=[{view:"assistant",match:ywe("/assistant"),path:"/assistant",enabled:vwe},{view:"traces",match:Ga("/traces"),path:"/traces"},{view:"metrics",match:Ga("/metrics"),path:"/metrics"},{view:"scenarios",match:Ga("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ga("/interactions"),path:"/interactions"},{view:"tools",match:Ga("/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:Ga("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ga("/analytics"),path:"/analytics"},{view:"projects",match:Ga("/projects"),path:"/projects"},{view:"exploration",match:Ga("/explorations"),path:"/explorations"},{view:"builder",match:Ga("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=xwe(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:SC("/interactions")},{view:"agent-analytics",match:j0(/\/agents\/\d+\/analytics/),path:SC("/analytics")},{view:"editor",match:j0(/\/agents\/\d+\/edit/),path:SC("/edit")},{view:"runner",match:j0(/\/agents\/\d+\/run/),path:SC("/run")},{view:"history",match:j0(/\/agents\/\d+\/?$/)},{view:"replay",match:Swe},{view:"sessions",match:Ga("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ga("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ga("/organization"),path:"/organization"},{view:"settings",match:Ga("/settings"),path:"/settings"}],kwe="list",hG=[{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 yG(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function $0(e,t={}){return jM.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function vG(e,t={}){for(let r of jM){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:kwe}}function kC(e,{agent:t=null,features:r={}}={}){if(!$0(e,r))return null;let n=jM.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function xG(e){for(let t of hG){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function Jg(e,t){return!bwe.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function bG(e={}){return hG.map(t=>({...t,items:t.items.filter(r=>$0(r.view,e))}))}var _we=["agent_defined","dashboard","mcp"],LM={agent_defined:"Agent-defined",dashboard:"Dashboard",mcp:"MCP"},Cwe={agent_defined:"the host's schema tools, and what the agent class declares",dashboard:"built into the dashboard",mcp:"offered by the services above"},CC=[{value:"24h",label:"24h",hours:24},{value:"7d",label:"7d",hours:168},{value:"30d",label:"30d",hours:720}],zM=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`},L0=(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`},Awe="sandbox:",zp=e=>!!(e&&(e.runtime===!0||String(e.key||"").startsWith(Awe))),z0=e=>zp(e)&&!e.known,AC=e=>!!e&&!e.known&&!zp(e);function wG(e){return z0(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":zp(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 _C(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 SG=e=>{let t=String(e||"").trim().toLowerCase();return(...r)=>!t||r.some(n=>String(n||"").toLowerCase().includes(t))};function kG(e,t,{query:r="",filter:n=null}={}){let o=SG(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 _G(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(Ewe(e,t).map(o=>({...o,on:!0})))}function CG(e,t,r,{query:n="",source:o=null,enabledOnly:a=!1}={}){let i=SG(n),s=_G(e,t,r),l=s.filter(u=>!o||u.source===o).filter(u=>!a||u.on).filter(u=>i(u.name,u.description));return _we.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:LM[u],meta:`${Cwe[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 AG(e,t,r,{range:n="7d"}={}){let o=_G(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 EG(e){return e?.on&&Array.isArray(e.approval_names)?e.approval_names.map(String):[]}function BM(e,t=[]){let r=EG(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 Nwe(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 NG(e=[],t,r=[]){let n=(e||[]).map(String),o=BM(t,n);if(!o)return n;let a=new Set(Nwe(n,EG(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 TG(e,t,r){let n=_C(e,t.mcpServers),o=_C(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 OG(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 FM(e,t=[]){let r=new Set((e.tools||[]).filter(a=>a.editable).map(a=>a.key)),n=(t||[]).map(String).filter(a=>!r.has(a)),o=(e.tools||[]).filter(a=>a.editable&&t.includes(a.key)).map(a=>a.key);return n.concat(o)}var UM="/api/input_requests",EC="action-agent:input-requests-changed",MG=3e4,PG=100,Twe=["text","choice","confirm","secret"];function IG({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?`${UM}?${n}`:UM}function Qg(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function DG(e){let t=Qg(e).length;if(t!==0)return t>=PG?`${PG-1}+`:t}function WM(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?Qg(e.input_requests).length>0?"awaiting":"poll":"finished"}function HM(e){return Twe.includes(e?.kind)?e.kind:null}function jG(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 $G(e){return e?.id==null?"answer":`answer-${e.id}`}function LG(e){switch(HM(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:$G(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:jG(e).map(t=>t.label)}];default:return[]}}function zG(e,t){if(t?.kind==="form"){let r=t.values?.[$G(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return jG(e).find(r=>r.label===t.text)?.value}var Owe={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function Pwe(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:Owe[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 qM(e){return["answered","declined","closed"].includes(e?.state)}async function BG(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${UM}/${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 Pwe(a.status,i)}function FG(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 UG(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function WG(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 HG(e,t=Date.now()){return e?`asked ${L0(e,t)}`:null}function qG(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 KG(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=kC("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function VG(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function NC(){window.dispatchEvent(new CustomEvent(EC))}function TC({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=MG}={}){let[o,a]=(0,Eu.useState)(null),[i,s]=(0,Eu.useState)(null),l=(0,Eu.useRef)(0),u=(0,Eu.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(IG({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,Eu.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(EC,u),()=>{clearInterval(c),window.removeEventListener(EC,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var Mwe={text:"question",choice:"choice",confirm:"approval",secret:"secret"},Iwe={answered:"success",declined:"muted",closed:"warning"},KM={fontFamily:V,fontSize:11,color:"var(--color-text-muted)"},Dwe={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:V,fontSize:13};function jwe({request:e,busy:t,onSubmit:r}){let[n,o]=(0,hr.useState)("");return hr.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"}},hr.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:Dwe}),hr.default.createElement(ge,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function $we({request:e,busy:t,onApprove:r,onDecline:n}){let o=qG(e);return hr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},o&&hr.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:V,fontSize:12}},o),hr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},hr.default.createElement(ge,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),hr.default.createElement(ge,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Bp({request:e,onSettled:t,initialOutcome:r=null,showRunLink:n=!0}){let{darkMode:o}=ut(),[a,i]=(0,hr.useState)(!1),[s,l]=(0,hr.useState)(r),u=HM(e),c=qM(s),d=async g=>{if(a||c)return;i(!0);let v=await BG(e,g);i(!1),l(v),qM(v)&&(NC(),t&&t(e,v))},p=g=>{g!==void 0&&d({answer:g})},f=()=>d({decline:!0}),m=n?KG(e):null,y=UG(e.actor),b=WG(e.expires_at),h=HG(e.created_at);return hr.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}},hr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},hr.default.createElement(Ee,{tone:e.kind==="confirm"?"warning":"info",size:10},Mwe[e.kind]||e.kind),hr.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e.agent?.name||"An agent"," is asking"),m&&hr.default.createElement(gn,{href:nt(m),onClick:()=>dt(m),title:"Open the run this request paused"},hr.default.createElement("span",{"data-testid":"input-request-run-link"},"run #",e.run_id)),b&&hr.default.createElement("span",{style:{...KM,marginLeft:"auto",color:b==="expired"?"var(--color-error-text)":KM.color}},b)),hr.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},e.prompt),hr.default.createElement("div",{style:{...KM,display:"flex",gap:10,flexWrap:"wrap"}},y&&hr.default.createElement("span",{"data-testid":"input-request-actor"},"for ",y),e.tool_name&&hr.default.createElement("span",{"data-testid":"input-request-tool"},"via ",e.tool_name),h&&hr.default.createElement("span",null,h)),c?hr.default.createElement("div",{"data-testid":"input-request-outcome"},hr.default.createElement(Ee,{tone:Iwe[s.state]||"muted"},FG(e,s))):hr.default.createElement(hr.default.Fragment,null,(u==="text"||u==="choice")&&hr.default.createElement(ml,{blocks:LG(e),darkMode:o,onAction:g=>p(zG(e,g))}),u==="confirm"&&hr.default.createElement($we,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&hr.default.createElement(jwe,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&hr.default.createElement("div",null,hr.default.createElement(ge,{variant:"ghost",size:"sm",onClick:f,disabled:a,testId:"input-request-decline",style:{padding:"2px 0"}},"Decline")),s?.message&&hr.default.createElement("div",{"data-testid":"input-request-error",role:"alert",style:{fontSize:12,color:"var(--color-error-text)"}},s.message)))}function Lwe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:js.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}},js.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},js.default.createElement(Ve,{color:"var(--color-warning-text)"},"Needs input"),js.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:V,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),js.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=>js.default.createElement(Bp,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>js.default.createElement(Bp,{key:n.id,request:n,initialOutcome:o})))}function VM({agentId:e=null}){let{requests:t}=TC({agentId:e}),[r,n]=(0,js.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=Qg(t).filter(s=>!o.has(s.id));return js.default.createElement(Lwe,{pending:a,settled:r,onSettled:(s,l)=>{n(u=>[...u.filter(c=>c.request.id!==s.id),{request:s,outcome:l}])}})}var Ge=Z(J());var PC=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var $s=(e,t)=>`${e} ${t}${e===1?"":"s"}`,B0=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},MC=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),GG=e=>String(e??"").replace(/\s+/g," ").trim(),Fp=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Rg=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},IC=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)}`},GM=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`},ZG=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:$s(Number(t),"turn"),IC(r),GM(n)].filter(Boolean).join(" \xB7 "),JG=(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=Fp(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},zwe={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"}},QG=e=>zwe[e]||{label:MC(e)||"Unknown",tone:"neutral"},DC=e=>["pending","provisioning"].includes(e?.status),RG=e=>e?.status==="ready",Bwe={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"}},cs=e=>Bwe[e]||{label:MC(e)||"Unknown",tone:"neutral"},Ls=e=>["queued","running"].includes(e?.status),H0=e=>["succeeded","failed","cancelled"].includes(e?.status),YM=e=>H0(e)&&e?.diff_pending===!0,XM=e=>H0(e)&&!YM(e),eY=e=>e?.status==="cancelled"&&XM(e)&&e?.diff==null&&!(Number(e?.event_count)>0),ZM=e=>{if(!H0(e)){let t=Number(e?.event_count)||0;return t>0?$s(t,"event"):""}return ZG(null,e)},tY=e=>[cs(e?.status).label,ZM(e)].filter(Boolean).join(" \xB7 "),rY=(e,t=80)=>{let r=String(e||"").split(` -`).map(n=>n.trim()).find(Boolean)||"";return B0(r,t)||"(empty prompt)"},Rc=(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},nY=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?Rc(e,t,r):e,oY=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},aY=(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}},iY=(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]},gl=(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},Fwe={Bash:e=>e.command,Read:(e,t)=>gl(e.file_path,t),Write:(e,t)=>gl(e.file_path,t),Edit:(e,t)=>gl(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${$s(e.edits.length,"edit")})`:"";return`${gl(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>gl(e.notebook_path,t),NotebookRead:(e,t)=>gl(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${gl(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${gl(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>gl(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)?$s(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},Uwe=["command","file_path","path","url","query","pattern","description","name","prompt"],Wwe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!Fp(t))return B0(GG(typeof t=="string"?t:Rg(t)),120);let n=Fwe[e],o=n?n(t,r):null;if(o==null||o===""){let a=Uwe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?gl(t[a],r):t[a]:o=Object.keys(t).length?Rg(t):""}return B0(GG(o),120)},Hwe=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]":Rg(t)).join(` -`):Rg(e),qwe=(e,{chars:t=600,lines:r=12}={})=>{let n=String(e??"").replace(/\s+$/,""),o=n.split(` + `).concat(b.x,",").concat(b.y),w=ar(e.id)?Zl("recharts-radial-line-"):e.id;return Ya.createElement("text",gu({},n,{dominantBaseline:"central",className:xt("recharts-radial-bar-label",i)}),Ya.createElement("defs",null,Ya.createElement("path",{id:w,d:S})),Ya.createElement("textPath",{xlinkHref:"#".concat(w)},r))},ahe=(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"}},Ig=e=>e!=null&&"cx"in e&&De(e.cx),ihe={angle:0,offset:5,zIndex:ir.label,position:"middle",textBreakAll:!1};function she(e){if(!Ig(e))return e;var t=e.cx,r=e.cy,n=e.outerRadius,o=n*2;return{x:t-n,y:r-n,width:o,upperWidth:o,lowerWidth:o,height:o}}function mu(e){var t,r,n=nr(e,ihe),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=the(),y=jH(),x=i==="center"?y:m??y,h,g,v;o==null?h=x:Ig(o)?h=o:h=rv(o);var b=she(h);if(!h||ar(s)&&ar(l)&&!(0,Ao.isValidElement)(u)&&typeof u!="function")return null;var S=Ig(h)&&(i==="insideStart"||i==="insideEnd"||i==="end");if(Ig(h))S||(v=ahe(h,n.offset,n.position));else if(b){var w=rw({viewBox:b,position:i,offset:n.offset,parentViewBox:Ig(a)?void 0:a,clamp:!0});v=_p(_p({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 _=_p(_p(_p(_p({},((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=PH(_,Xge);return(0,Ao.cloneElement)(u,A)}if(typeof u=="function"){var C=_.content,E=PH(_,Zge);if(g=(0,Ao.createElement)(u,E),(0,Ao.isValidElement)(g))return g}else g=rhe(n);var I=gn(n);return S&&Ig(h)?ohe(n,i,g,I,h):v==null?null:Ya.createElement(on,{zIndex:n.zIndex},Ya.createElement(kp,gu({ref:f,className:xt("recharts-label",d)},I,v,{textAnchor:k_(I.textAnchor)?I.textAnchor:v.textAnchor,breakAll:p}),g))}mu.displayName="Label";var lhe=(e,t,r)=>{if(!e)return null;var n={viewBox:t,labelRef:r};return e===!0?Ya.createElement(mu,gu({key:"label-implicit"},n)):wa(e)?Ya.createElement(mu,gu({key:"label-implicit",value:e},n)):(0,Ao.isValidElement)(e)?e.type===mu?(0,Ao.cloneElement)(e,_p({key:"label-implicit"},n)):Ya.createElement(mu,gu({key:"label-implicit",content:e},n)):Cp(e)?Ya.createElement(mu,gu({key:"label-implicit",content:e},n)):e&&typeof e=="object"?Ya.createElement(mu,gu({},e,{key:"label-implicit"},n)):null};function zH(e){var t=e.label,r=e.labelRef,n=jH();return lhe(t,n,r)||null}var hu=Z(J()),Dg=Z(J());var uhe=["valueAccessor"],che=["dataKey","clockWise","id","textBreakAll","zIndex"];function C_(){return C_=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(EH(t))return t},FH=(0,Dg.createContext)(void 0),jg=FH.Provider,UH=(0,Dg.createContext)(void 0),WH=UH.Provider;function fhe(){return(0,Dg.useContext)(FH)}function mhe(){return(0,Dg.useContext)(UH)}function __(e){var t=e.valueAccessor,r=t===void 0?phe:t,n=BH(e,uhe),o=n.dataKey,a=n.clockWise,i=n.id,s=n.textBreakAll,l=n.zIndex,u=BH(n,che),c=fhe(),d=mhe(),p=c||d;return!p||!p.length?null:hu.createElement(on,{zIndex:l??ir.label},hu.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 hu.createElement(mu,C_({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}))})))}__.displayName="LabelList";function jc(e){var t=e.label;return t?t===!0?hu.createElement(__,{key:"labelList-implicit"}):hu.isValidElement(t)||Cp(t)?hu.createElement(__,{key:"labelList-implicit",content:t}):typeof t=="object"?hu.createElement(__,C_({key:"labelList-implicit"},t,{type:String(t.type)})):null:null}var HH=Z(J());function U5(){return U5=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=xt("recharts-dot",o);return De(t)&&De(r)&&De(n)?HH.createElement("circle",U5({},mn(e),Dm(e),{className:a,cx:t,cy:r,r:n})):null};var W5=e=>e.graphicalItems.polarItems,ghe=ae([hn,op],Rv),E_=ae([W5,Cn,ghe],ex),hhe=ae([E_],tx),N_=ae([hhe,ep],rx),yhe=ae([N_,Cn,E_],GP),C7e=ae([N_,Cn,E_],(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=()=>{},vhe=ae([N_,Cn,E_,kg,hn,q9],ox),xhe=ae([Cn,Gk,Yk,qH,vhe,qH,Lt,hn],ax),KH=ae([Cn,Lt,N_,yhe,vc,hn,xhe],ix),bhe=ae([KH,bp,uu],sx),whe=ae([Cn,KH,bhe,hn],lx),A7e=ae([uu,whe],ik);var She={radiusAxis:{},angleAxis:{}},VH=Cr({name:"polarAxis",initialState:She,reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Jt(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Jt(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),T_=VH.actions,O7e=T_.addRadiusAxis,P7e=T_.removeRadiusAxis,M7e=T_.addAngleAxis,I7e=T_.removeAngleAxis;var GH=VH.reducer;function O_(e){return e&&typeof e=="object"&&"className"in e&&typeof e.className=="string"?e.className:""}var Gt=Z(J()),Wg=Z(J());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 XH(e){for(var t=1;tt,H5=ae([W5,Ahe],(e,t)=>e.filter(r=>r.type==="pie").find(r=>r.id===t)),Ehe=[],q5=(e,t,r)=>r?.length===0?Ehe:r,ZH=ae([ep,H5,q5],(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=>XH(XH({},t.presentationProps),a.props))),o!=null)return o}}),JH=ae([ZH,H5,q5],(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:yi(i,t.dataKey),dataKey:t.dataKey,color:s,payload:n,type:t.legendType}})}),QH=ae([ZH,H5,q5,Fr],(e,t,r,n)=>{if(!(t==null||e==null))return RH({offset:n,pieSettings:t,displayedData:e,cells:r})});var aq=Z(J()),iq=Z(rq());var nq=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",oq=null,G5=null,sq=e=>{if(e===oq&&Array.isArray(G5))return G5;var t=[];return aq.Children.forEach(e,r=>{ar(r)||((0,iq.isFragment)(r)?t=t.concat(sq(r.props.children)):t.push(r))}),G5=t,oq=e,t};function mx(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(o=>nq(o)):n=[nq(t)],sq(e).forEach(o=>{var a=Uo(o,"type.displayName")||Uo(o,"type.name");a&&n.indexOf(a)!==-1&&r.push(o)}),r}var $g=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0;var Lg=Z(J()),gx=Z(J());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;t{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(e_({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}},yx=e=>{var t=Dt();return(r,n)=>o=>{e?.(r,n,o),t(eW())}},vx=(e,t,r)=>{var n=Dt();return(o,a)=>i=>{e?.(o,a,i),n(tW({activeIndex:String(a),activeDataKey:t,activeCoordinate:o.tooltipPosition,activeGraphicalItemId:r}))}};var xx=Z(J());function Lc(e){var t=e.tooltipEntrySettings,r=Dt(),n=Ar(),o=(0,xx.useRef)(null);return(0,xx.useLayoutEffect)(()=>{n||(o.current===null?r(ZU(t)):o.current!==t&&r(JU({prev:o.current,next:t})),o.current=t)},[t,r,n]),(0,xx.useLayoutEffect)(()=>()=>{o.current&&(r(QU(o.current)),o.current=null)},[r]),null}var zc=Z(J());function zg(e){var t=e.legendPayload,r=Dt(),n=Ar(),o=(0,zc.useRef)(null);return(0,zc.useLayoutEffect)(()=>{n||(o.current===null?r(LO(t)):o.current!==t&&r(zO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,zc.useLayoutEffect)(()=>()=>{o.current&&(r(BO(o.current)),o.current=null)},[r]),null}function dq(e){var t=e.legendPayload,r=Dt(),n=$e(Lt),o=(0,zc.useRef)(null);return(0,zc.useLayoutEffect)(()=>{n!=="centric"&&n!=="radial"||(o.current===null?r(LO(t)):o.current!==t&&r(zO({prev:o.current,next:t})),o.current=t)},[r,n,t]),(0,zc.useLayoutEffect)(()=>()=>{o.current&&(r(BO(o.current)),o.current=null)},[r]),null}var mq=Z(J()),Sx=Z(J());function Lhe(e,t){return Uhe(e)||Fhe(e,t)||Bhe(e,t)||zhe()}function zhe(){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 Bhe(e,t){if(e){if(typeof e=="string")return pq(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)?pq(e,t):void 0}}function pq(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 Y5(n,t)}function Hhe(e,t){var r=t.map((n,o)=>e[o]);return Y5(r,t)}function qhe(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=Lhe(s,2),u=l[0],c=l[1];o.has(u)||i.push(c)}return Y5(a,t,i)}function wx(e,t,r){return t==null?null:e==null?t.map(n=>({status:"added",next:n})):r===Ap?Whe(e,t):r===bx?Hhe(e,t):Khe(e,t,r)}var Bg=Z(J());function U_(e,t){var r=(0,Bg.useRef)(e),n=(0,Bg.useRef)(t.current),o=(0,Bg.useRef)(!0);r.current!==e&&(r.current=e,n.current=t.current,o.current=!1);var a=(0,Bg.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 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 fq(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)?fq(e,t):void 0}}function fq(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,Sx.useCallback)(()=>{typeof t=="function"&&t(),a(!1)},[t]);return{isAnimating:o,handleAnimationStart:i,handleAnimationEnd:s}}function Fc(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=jS(r,n),g=U_(h,a),v=(t=g.startValue)!==null&&t!==void 0?t:null,b=wx(v,o,f??Ap);return mq.createElement(DS,{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 yq=Z(J()),Z5=Z(J());var W_=Z(J());var X5;function Jhe(e,t){return tye(e)||eye(e,t)||Rhe(e,t)||Qhe()}function Qhe(){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 Rhe(e,t){if(e){if(typeof e=="string")return gq(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)?gq(e,t):void 0}}function gq(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var e=W_.useState(()=>Zl("uid-")),t=Jhe(e,1),r=t[0];return r},H_=(X5=W_.useId)!==null&&X5!==void 0?X5:rye;function hq(e,t){var r=H_();return t||(e?"".concat(e,"-").concat(r):r)}var nye=(0,Z5.createContext)(void 0),Uc=e=>{var t=e.id,r=e.type,n=e.children,o=hq("recharts-".concat(r),t);return yq.createElement(nye.Provider,{value:o},n(o))};var Ps=Z(J());var oye={cartesianItems:[],polarItems:[]},vq=Cr({name:"graphicalItems",initialState:oye,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Jt(t.payload))},prepare:Ir()},replaceCartesianGraphicalItem:{reducer(e,t){var r=t.payload,n=r.prev,o=r.next,a=ea(e).cartesianItems.indexOf(Jt(n));a>-1&&(e.cartesianItems[a]=Jt(o))},prepare:Ir()},removeCartesianGraphicalItem:{reducer(e,t){var r=ea(e).cartesianItems.indexOf(Jt(t.payload));r>-1&&e.cartesianItems.splice(r,1)},prepare:Ir()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Jt(t.payload))},prepare:Ir()},removePolarGraphicalItem:{reducer(e,t){var r=ea(e).polarItems.indexOf(Jt(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(Jt(n));a>-1&&(e.polarItems[a]=Jt(o))},prepare:Ir()}}}),Fg=vq.actions,xq=Fg.addCartesianGraphicalItem,bq=Fg.replaceCartesianGraphicalItem,wq=Fg.removeCartesianGraphicalItem,Sq=Fg.addPolarGraphicalItem,kq=Fg.removePolarGraphicalItem,_q=Fg.replacePolarGraphicalItem;var Cq=vq.reducer;var aye=e=>{var t=Dt(),r=(0,Ps.useRef)(null);return(0,Ps.useLayoutEffect)(()=>{r.current===null?t(xq(e)):r.current!==e&&t(bq({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ps.useLayoutEffect)(()=>()=>{r.current&&(t(wq(r.current)),r.current=null)},[t]),null},Ug=(0,Ps.memo)(aye),iye=e=>{var t=Dt(),r=(0,Ps.useRef)(null);return(0,Ps.useLayoutEffect)(()=>{r.current===null?t(Sq(e)):r.current!==e&&t(_q({prev:r.current,next:e})),r.current=e},[t,e]),(0,Ps.useLayoutEffect)(()=>()=>{r.current&&(t(kq(r.current)),r.current=null)},[t]),null},Aq=(0,Ps.memo)(iye);var sye=["key"],lye=["onMouseEnter","onClick","onMouseLeave"],uye=["id"],cye=["id"];function Ep(){return Ep=Object.assign?Object.assign.bind():function(e){for(var t=1;tmx(e.children,fu),[e.children]),r=$e(n=>JH(n,e.id,t));return r==null?null:Gt.createElement(dq,{legendPayload:r})}function hye(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 yye=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=hye(p),m=n.map(x=>{var h=x.tooltipPayload;return f==null||h==null?h:h.map(g=>An(An({},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:yi(s,t),hide:l,type:u,color:i,unit:"",formatter:c,graphicalItemId:d}};return Gt.createElement(Lc,{tooltipEntrySettings:y})}),vye=(e,t)=>e>t?"start":etypeof t=="function"?Pn(t(e),r,r*.8):Pn(t,r,r*.8),bye=(e,t,r)=>{var n=t.top,o=t.left,a=t.width,i=t.height,s=BS(a,i),l=o+Pn(e.cx,a,a/2),u=n+Pn(e.cy,i,i/2),c=Pn(e.innerRadius,s,0),d=xye(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}},wye=(e,t)=>{var r=Yr(t-e),n=Math.min(Math.abs(t-e),360);return r*n},Sye=(e,t)=>{if(Gt.isValidElement(e))return Gt.cloneElement(e,t);if(typeof e=="function")return e(t);var r=xt("recharts-pie-label-line",typeof e!="boolean"?e.className:""),n=t.key,o=q_(t,sye);return Gt.createElement(rl,Ep({},o,{type:"linear",className:r}))},kye=(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=xt("recharts-pie-label-text",O_(e));return Gt.createElement(kp,Ep({},t,{alignmentBaseline:"middle",className:o}),n)};function _ye(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=pi(o),u=pi(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=An(An(An(An({},s),p),{},{stroke:"none"},l),{},{index:f,textAnchor:vye(y.x,p.cx)},y),h=An(An(An(An({},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&&Sye(a,h),kye(o,x,Wt(p,i))))});return Gt.createElement(br,{className:"recharts-pie-labels"},d)}function Cye(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(jc,{label:o}):Gt.createElement(_ye,{sectors:t,props:r,showLabels:n})}function Aye(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(es),d=$e(Ag),p=$e(c_),f=o.onMouseEnter,m=o.onClick,y=o.onMouseLeave,x=q_(o,lye),h=hx(f,o.dataKey,i),g=yx(y),v=vx(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=An(An({},b),{},{stroke:b.stroke,tabIndex:-1,index:S,isActive:_,animationElapsedTime:s,isAnimating:l,isEntrance:u,[yS]:S,[vS]:i});return Gt.createElement(br,Ep({key:"sector-".concat(b?.startAngle,"-").concat(b?.endAngle,"-").concat(b.midAngle,"-").concat(S),tabIndex:-1,className:"recharts-pie-sector"},Ql(x,b,S),{onMouseEnter:h(b,S),onMouseLeave:g(b,S),onClick:v(b,S)}),Gt.createElement($c,{option:A??a,DefaultShape:Nq,shapeProps:C}))}))}function RH(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=wye(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+(De(C)?C:0)},0),v=p>0&&g>0&&n.some(k=>{var A=Wt(k,u,0),C=(De(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=bye(r,a,k),Q=(De(C)?C:0)/g,$,F=An(An({},k),o&&o[A]&&o[A].props),N=F!=null&&"fill"in F&&typeof F.fill=="string"?F.fill:r.fill;A?$=_.endAngle+Yr(f)*y*(C!==0?1:0):$=s;var O=$+Yr(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 _=An(An(An(An({},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?Yr(f)*y:0}),_})}return w}function Eye(e){var t=e.showLabels,r=e.sectors,n=e.children,o=(0,Wg.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(WH,{value:t?o:void 0},n)}var Nye=(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=An(An({},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=An(An({},a.next),{},{startAngle:o+s,endAngle:o+c+s});r.push(d),o=d.endAngle}}}),r};function Tye(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=Bc(a.onAnimationStart,a.onAnimationEnd),f=p.isAnimating,m=p.handleAnimationStart,y=p.handleAnimationEnd,x=h7();if(x==null)return null;var h=l[0];return Gt.createElement(Eye,{showLabels:!f,sectors:l},Gt.createElement(Fc,{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(Aye,{sectors:g,activeShape:u,inactiveShape:c,allOtherPieProps:a,shape:a.shape,id:s,animationElapsedTime:v,isAnimating:f||v<1,isEntrance:b}))),Gt.createElement(Cye,{showLabels:!f,sectors:l,props:a}),Gt.createElement(LH,{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 Oye={animationBegin:400,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Nye,animationMatchBy:bx,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:Nq,startAngle:0,stroke:"#fff",zIndex:ir.area};function Pye(e){var t=e.id,r=q_(e,uye),n=e.hide,o=e.className,a=e.rootTabIndex,i=(0,Wg.useMemo)(()=>mx(e.children,fu),[e.children]),s=$e(c=>QH(c,t,i)),l=(0,Wg.useRef)(null),u=xt("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(yye,{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(Tye,{props:An(An({},r),{},{sectors:s}),previousSectorsRef:l,id:t})))}function Mye(e){var t=nr(e,Oye),r=t.id,n=q_(t,cye),o=mn(n);return Gt.createElement(Uc,{id:r,type:"pie"},a=>Gt.createElement(Gt.Fragment,null,Gt.createElement(Aq,{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(gye,Ep({},n,{id:a})),Gt.createElement(Pye,Ep({},n,{id:a}))))}var K_=Mye;K_.displayName="Pie";var kx=Z(J()),G_=Z(J());var Iye=["points"];function Tq(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function J5(e){for(var t=1;t{var h,g,v=J5(J5(J5({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 kx.createElement(Bye,{key:"dot-".concat(x),option:r,dotProps:v,className:o})}),m={};return s&&l!=null&&(m.clipPath="url(#clipPath-".concat(d?"":"dots-").concat(l,")")),kx.createElement(on,{zIndex:c},kx.createElement(br,V_({className:n},m),f))}var _x=Z(J()),Z_=Z(J());function Oq(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function X_(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right}));var Wq=ae([Uq,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 Wc=()=>$e(Wq),Hq=()=>$e(mW);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 R5(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=R5(R5(R5({},s),pi(o)),Dm(o)),u;return(0,Z_.isValidElement)(o)?u=(0,Z_.cloneElement)(o,l):typeof o=="function"?u=o(l):u=_x.createElement(A_,l),_x.createElement(br,{className:"recharts-active-dot",clipPath:i},u)};function Cx(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(es),u=Hq();if(t==null||u==null)return null;var c=t.find(d=>u.includes(d.payload));return ar(c)?null:_x.createElement(on,{zIndex:s},_x.createElement(Yye,{point:c,childIndex:Number(l),mainColor:r,dataKey:o,activeDot:n,clipPath:a}))}function Xye(e,t){return Rye(e)||Qye(e,t)||Jye(e,t)||Zye()}function Zye(){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 Jye(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 n=r??e;if(!ar(n))return Pn(n,t,0)},Gq=(e,t,r)=>{var n={},o=e.filter(ap),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=Xye(u,2),p=d[0],f=d[1],m=f.map(x=>x.dataKey),y=Vq(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=Vq(t,r,u.barSize);return{stackId:void 0,dataKeys:c,barSize:d}});return[...s,...l]};function Yq(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;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=Pn(t,r,0,!0);r-2*y-(i-1)*s<=0&&(s=0);var x=(r-2*y-(i-1)*s)/i;x>1&&(x=Math.round(x));var h=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 Xq=(e,t,r,n,o,a,i)=>{var s=ar(i)?t:i,l=nve(r,n,o!==a?o:a,e,s);return o!==a&&l!=null&&(l=l.map(u=>J_(J_({},u),{},{position:J_(J_({},u.position),{},{offset:u.position.offset-o/2})}))),l};var Zq=(e,t)=>{var r=bc(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 Jq=(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 Qq(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&Ot(e.zIndex)?e.zIndex:t}var Rq=Z(J());var Q_=e=>{var t=e.chartData,r=Dt(),n=Ar();return(0,Rq.useEffect)(()=>n?()=>{}:(r(z5(t)),()=>{r(z5(void 0))}),[t,r,n]),null};var eK={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},tK=Cr({name:"brush",initialState:eK,reducers:{setBrushSettings(e,t){return t.payload==null?eK:t.payload}}}),oUe=tK.actions.setBrushSettings;var rK=tK.reducer;function ove(e){return(e%180+180)%180}var nK=function(t){var r=t.width,n=t.height,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=ove(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(Jt(t.payload))},removeLine:(e,t)=>{var r=ea(e).lines.findIndex(n=>n===t.payload);r!==-1&&e.lines.splice(r,1)}}}),Hg=oK.actions,uUe=Hg.addDot,cUe=Hg.removeDot,dUe=Hg.addArea,pUe=Hg.removeArea,fUe=Hg.addLine,mUe=Hg.removeLine;var aK=oK.reducer;var Ax=Z(J()),Ex=Z(J());function ive(e,t){return cve(e)||uve(e,t)||lve(e,t)||sve()}function sve(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lve(e,t){if(e){if(typeof e=="string")return iK(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?iK(e,t):void 0}}function iK(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{var t=e.children,r=(0,Ex.useState)("".concat(Zl("recharts"),"-clip")),n=ive(r,1),o=n[0],a=Wc();if(a==null)return null;var i=a.x,s=a.y,l=a.width,u=a.height;return Ax.createElement(dve.Provider,{value:o},Ax.createElement("defs",null,Ax.createElement("clipPath",{id:o},Ax.createElement("rect",{x:i,y:s,height:u,width:l}))),t)};var yn=Z(J()),ca=Z(J());function lK(){}function eM(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 uK(e,t,r){return Nx(e,t,void 0,void 0,void 0,void 0,r)}function Nx(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 Tx(e,t,a,i)}return Tx(e,t,a,i)}function Tx(e,t,r,n){if(Object.is(e,t))return!0;let o=Rl(e),a=Rl(t);if(o==="[object Arguments]"&&(o=zm),a==="[object Arguments]"&&(a=zm),o!==a)return!1;switch(o){case jm:return e.toString()===t.toString();case $m:return gc(e.valueOf(),t.valueOf());case Lm:case hw:case gw:return Object.is(e.valueOf(),t.valueOf());case fw:return e.source===t.source&&e.flags===t.flags;case dz: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 yw:if(e.size!==t.size)return!1;for(let[l,u]of e.entries())if(!t.has(l)||!Nx(u,t.get(l),l,e,t,r,n))return!1;return!0;case vw:{if(e.size!==t.size)return!1;let l=Array.from(e.values()),u=Array.from(t.values());for(let c=0;cNx(d,f,void 0,e,t,r,n));if(p===-1)return!1;u.splice(p,1)}return!0}case xw:case Sw:case kw:case _w:case Cw:case fz:case Aw:case Ew:case Nw:case mz:case Tw:case Ow:if(lv(e)!==lv(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 pK(e,t){return R_(e,t+1)}function fK(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:R_(n,u)};var y=l,x,h=()=>(x===void 0&&(x=r(m,y)),x),g=m.coordinate,v=l===0||Np(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 mK(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||Np(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=Np(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 hve(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=Np(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=Np(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"?cK(Sp(_,{fontSize:t,letterSpacing:r}),y,d):Sp(_,{fontSize:t,letterSpacing:r})[m]},h=o[0],g=o[1],v=o.length>=2&&h!=null&&g!=null?Yr(g.coordinate-h.coordinate):1,b=dK(a,v,m);return l==="equidistantPreserveStart"?fK(v,b,x,o,i):l==="equidistantPreserveEnd"?mK(v,b,x,o,i):(l==="preserveStart"||l==="preserveStartEnd"?f=hve(v,b,x,o,i,l==="preserveStartEnd"):f=gve(v,b,x,o,i),f.filter(S=>S.isShow))}var hK=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 yK=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 yve={xAxis:{},yAxis:{}},vK=Cr({name:"renderedTicks",initialState:yve,reducers:{setRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId,a=r.ticks;e[n][o]=Jt(a)},removeRenderedTicks:(e,t)=>{var r=t.payload,n=r.axisType,o=r.axisId;delete e[n][o]}}}),xK=vK.actions,bK=xK.setRenderedTicks,wK=xK.removeRenderedTicks;var SK=vK.reducer;var vve=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function kK(e,t){return Sve(e)||wve(e,t)||bve(e,t)||xve()}function xve(){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 bve(e,t){if(e){if(typeof e=="string")return _K(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)?_K(e,t):void 0}}function _K(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&&tM(s.ticks,i)||(a.current={ticks:i,axisId:n,axisType:r},o(bK({ticks:i,axisId:n,axisType:r})))}},[o,t,n,r]),(0,ca.useEffect)(()=>n==null||r==null?Sa:()=>{o(wK({axisId:n,axisType:r}))},[o,n,r]),null}var Dve=(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=Ox(Wn(Wn({},S),{},{ticks:n}),v,b),C=mn(S),E=pi(o),I=k_(C.textAnchor)?C.textAnchor:Ove(d,p),Q=Pve(d,p),$={};typeof a=="object"&&($=a);var F=Wn(Wn({},C),{},{fill:"none"},$),N=A.map(T=>Wn({entry:T},Tve(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",Tp({},F,M,{className:xt("recharts-cartesian-axis-tick-line",Uo(a,"className"))})))}),j=N.map((T,D)=>{var M,q,V=T.entry,L=T.tick,G=Wn(Wn(Wn(Wn({verticalAnchor:Q},C),{},{textAnchor:I,stroke:"none",fill:i},L),{},{index:D,payload:V,visibleTicksCount:A.length,tickFormatter:s,padding:u},c),{},{angle:(M=(q=c?.angle)!==null&&q!==void 0?q:C.angle)!==null&&M!==void 0?M:0}),W=Wn(Wn({},G),E);return yn.createElement(br,Tp({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(V.value,"-").concat(V.coordinate,"-").concat(V.tickCoord)},Ql(w,V,D)),o&&yn.createElement(Mve,{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(Ive,{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))}),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=kve(e,vve),d=(0,ca.useState)(""),p=kK(d,2),f=p[0],m=p[1],y=(0,ca.useState)(""),x=kK(y,2),h=x[0],g=x[1],v=(0,ca.useRef)(null);(0,ca.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>{var S;return hK({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 yK({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:xt("recharts-cartesian-axis",a)},yn.createElement(Nve,{x:e.x,y:e.y,width:n,height:o,orientation:e.orientation,mirror:e.mirror,axisLine:r,otherSvgProps:mn(e)}),yn.createElement(Dve,{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(DH,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},yn.createElement(zH,{label:e.label,labelRef:e.labelRef}),e.children)))}),Px=yn.forwardRef((e,t)=>{var r=nr(e,ns);return yn.createElement(jve,Tp({},r,{ref:t}))});Px.displayName="CartesianAxis";var Hn=Z(J());var eC=Z(J());var AK={grid:{stroke:"#ccc",fill:"none"}};var EK=(0,eC.createContext)(AK),vWe=EK.Provider,NK=()=>(0,eC.useContext)(EK);var $ve=["x1","y1","x2","y2","key"],Lve=["offset"],zve=["xAxisId","yAxisId"],Bve=["xAxisId","yAxisId"];function TK(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 Hn.createElement("rect",{x:n,y:o,ry:s,width:a,height:i,stroke:"none",fill:t,fillOpacity:r,className:"recharts-cartesian-grid-bg"})};function OK(e){var t=e.option,r=e.lineItemProps,n;if(Hn.isValidElement(t))n=Hn.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=tC(r,$ve),d=(o=mn(c))!==null&&o!==void 0?o:{},p=d.offset,f=tC(d,Lve),m=Array.isArray(f.strokeDasharray)?f.strokeDasharray.join(","):f.strokeDasharray;n=Hn.createElement("line",Op({},f,{strokeDasharray:m,x1:a,y1:i,x2:s,y2:l,fill:"none",key:u}))}return n}function Kve(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=tC(e,zve),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 Hn.createElement(OK,{key:"line-".concat(d),option:o,lineItemProps:p})});return Hn.createElement("g",{className:"recharts-cartesian-grid-horizontal"},u)}function Vve(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=tC(e,Bve),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 Hn.createElement(OK,{option:o,lineItemProps:p,key:"line-".concat(d)})});return Hn.createElement("g",{className:"recharts-cartesian-grid-vertical"},u)}function Gve(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 Hn.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 Hn.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function Yve(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 Hn.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 Hn.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var Xve=(e,t)=>{var r=e.xAxis,n=e.width,o=e.height,a=e.offset;return NO(Ox(da(da(da({},ns),r),{},{ticks:TO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.left,a.left+a.width,t)},Zve=(e,t)=>{var r=e.yAxis,n=e.width,o=e.height,a=e.offset;return NO(Ox(da(da(da({},ns),r),{},{ticks:TO(r,!0),viewBox:{x:0,y:0,width:n,height:o}})),a.top,a.top+a.height,t)},Jve={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:ir.grid};function yu(e){var t,r,n,o,a,i,s=Zm(),l=Jm(),u=kS(),c=da(da({},nr(e,Jve)),{},{x:De(e.x)?e.x:u.left,y:De(e.y)?e.y:u.top,width:De(e.width)?e.width:u.width,height:De(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=>g5(O,"xAxis",d,b)),w=$e(O=>g5(O,"yAxis",p,b)),_=NK(),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(!Ua(y)||!Ua(x)||!De(f)||!De(m))return null;var A=c.verticalCoordinatesGenerator||Xve,C=c.horizontalCoordinatesGenerator||Zve,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);Xm(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);Xm(Array.isArray(N),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof N,"]")),Array.isArray(N)&&(I=N)}return Hn.createElement(on,{zIndex:c.zIndex},Hn.createElement("g",{className:"recharts-cartesian-grid"},Hn.createElement(qve,{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}),Hn.createElement(Gve,Op({},c,{horizontalPoints:E})),Hn.createElement(Yve,Op({},c,{verticalPoints:I})),Hn.createElement(Kve,Op({},c,k,{offset:u,horizontalPoints:E,xAxis:S,yAxis:w})),Hn.createElement(Vve,Op({},c,k,{offset:u,verticalPoints:I,xAxis:S,yAxis:w}))))}yu.displayName="CartesianGrid";var Sr=Z(J()),vu=Z(J());var PK=Z(J());var Qve=["animationElapsedTime","isAnimating","isEntrance","visibleLength","strokeDasharray","connectNulls"];function rM(){return rM=Object.assign?Object.assign.bind():function(e){for(var t=1;tf+m,0);if(!o)return MK(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[...nxe(n,a),...s,...p].map(f=>"".concat(f,"px")).join(", ")}function axe(e,t,r){if(e){var n="".concat(e).split(/[,\s]+/gim).map(o=>parseFloat(o));return oxe(r,t,n)}return MK(t,r)}function IK(e){var t=e.animationElapsedTime,r=e.isAnimating,n=e.isEntrance,o=e.visibleLength,a=e.strokeDasharray,i=e.connectNulls,s=Rve(e,Qve),l=i??!1,u;if(o!=null){var c,d=s.pathRef,p=txe((c=d?.current)!==null&&c!==void 0?c:null);u=axe(a,p,o)}else a!=null&&(u=String(a));return PK.createElement(rl,rM({},s,{connectNulls:l,strokeDasharray:u}))}var Pp=Z(J());function DK(e){var t=(0,Pp.useRef)(0),r=(0,Pp.useRef)(0),n=(0,Pp.useRef)(!1),o=(0,Pp.useRef)(e);return o.current!==e&&(t.current=r.current,o.current=e),(0,Pp.useCallback)((a,i)=>{if(n.current)return null;var s=Math.min(Hi(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 LK=Z(J()),Mx=Z(J());var ixe={},jK=Cr({name:"errorBars",initialState:ixe,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))}}}),nM=jK.actions,UWe=nM.addErrorBar,WWe=nM.replaceErrorBar,HWe=nM.removeErrorBar;var $K=jK.reducer;var sxe=["children"];function lxe(e,t){if(e==null)return{};var r,n,o=uxe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n({x:0,y:0,value:0}),errorBarOffset:0},dxe=(0,Mx.createContext)(cxe);function rC(e){var t=e.children,r=lxe(e,sxe);return LK.createElement(dxe.Provider,{value:r},t)}var oM=Z(J());function Mp(e,t){var r,n,o=$e(u=>ul(u,e)),a=$e(u=>cl(u,t)),i=(r=o?.allowDataOverflow)!==null&&r!==void 0?r:Qn.allowDataOverflow,s=(n=a?.allowDataOverflow)!==null&&n!==void 0?n:Rn.allowDataOverflow,l=i||s;return{needClip:l,needClipX:i,needClipY:s}}function qg(e){var t=e.xAxisId,r=e.yAxisId,n=e.clipPathId,o=Wc(),a=Mp(t,r),i=a.needClipX,s=a.needClipY,l=a.needClip,u=$e(v=>a5(v,t,!1)),c=$e(v=>i5(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 oM.createElement("clipPath",{id:"clipPath-".concat(n)},oM.createElement("rect",{x:y,y:x,width:h,height:g}))}var zK=(e,t,r,n)=>_i(e,"xAxis",t,n),BK=(e,t,r,n)=>ki(e,"xAxis",t,n),FK=(e,t,r,n)=>_i(e,"yAxis",r,n),UK=(e,t,r,n)=>ki(e,"yAxis",r,n),pxe=ae([Lt,zK,FK,BK,UK],(e,t,r,n,o)=>sa(e,"xAxis")?Yi(t,n,!1):Yi(r,o,!1)),fxe=(e,t,r,n,o)=>o;function mxe(e){return e.type==="line"}var gxe=ae([Ec,fxe],(e,t)=>e.filter(mxe).find(r=>r.id===t)),WK=ae([Lt,zK,FK,BK,UK,gxe,pxe,tp],(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 HK({layout:e,xAxis:t,yAxis:r,xAxisTicks:n,yAxisTicks:o,dataKey:d,bandSize:i,displayedData:f})}});function nC(e){var t=pi(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 hxe=["id"],yxe=["type","layout","connectNulls","needClip","shape","strokeDasharray"],vxe=["activeDot","animateNewValues","animationBegin","animationDuration","animationEasing","connectNulls","dot","hide","isAnimationActive","label","legendType","xAxisId","yAxisId","id"];function oC(){return oC=Object.assign?Object.assign.bind():function(e){for(var t=1;t0?t/r:0}var Cxe=(e,t)=>{if(e==null)return[];if(t===1)return e.flatMap(s=>s.status==="removed"?[]:[s.next]);var r=_xe(e),n=[];for(var o of e)if(o.status==="matched")n.push(dl(dl({},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(dl(dl({},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(dl(dl({},o.prev),{},{x:_r(o.prev.x,i,t),y:o.prev.y}))}return n},sM={activeDot:!0,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationInterpolateFn:Cxe,animationMatchBy:Ap,connectNulls:!1,dot:!0,fill:"#fff",hide:!1,isAnimationActive:"auto",label:!1,legendType:"line",shape:IK,stroke:"#3182bd",strokeWidth:1,xAxisId:0,yAxisId:0,zIndex:ir.line,type:"linear"},Axe=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:yi(r,t),payload:e}]},Exe=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:yi(i,t),hide:s,type:c,color:n,unit:l,formatter:u,graphicalItemId:d}};return Sr.createElement(Lc,{tooltipEntrySettings:p})});function Nxe(e){var t=e.clipPathId,r=e.points,n=e.props,o=n.dot,a=n.dataKey,i=n.needClip,s=n.id,l=iM(n,hxe),u=mn(l);return Sr.createElement(Y_,{points:r,dot:o,className:"recharts-line-dots",dotClassName:"recharts-line-dot",dataKey:a,baseProps:u,needClip:i,clipPathId:t})}function Txe(e){var t=e.showLabels,r=e.children,n=e.points,o=(0,vu.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 dl(dl({},l),{},{value:a.value,payload:a.payload,viewBox:l,parentViewBox:void 0,fill:void 0})}),[n]);return Sr.createElement(jg,{value:t?o:void 0},r)}function Oxe(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=iM(o,yxe),x=dl(dl({},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($c,{option:f,DefaultShape:sM.shape,shapeProps:x}),Sr.createElement(Nxe,{points:n,clipPathId:t,props:o}))}function Pxe(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=kxe(n.current),m=Bc(r.onAnimationStart,r.onAnimationEnd),y=m.isAnimating,x=m.handleAnimationStart,h=m.handleAnimationEnd,g=!y,v=DK(a),b=(0,vu.useCallback)(S=>S>0&&f>0,[f]);return Sr.createElement(Txe,{points:a,showLabels:g},r.children,Sr.createElement(Fc,{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(Oxe,{props:r,points:S,clipPathId:t,pathRef:n,animationElapsedTime:w,isAnimating:k,isEntrance:_,visibleLength:A})}),Sr.createElement(jc,{label:r.label}))}function Mxe(e){var t=e.clipPathId,r=e.props,n=(0,vu.useRef)(null),o=(0,vu.useRef)(null);return Sr.createElement(Pxe,{props:r,clipPathId:t,previousPointsRef:n,pathRef:o})}var Ixe=(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)}},aM=class extends vu.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=xt("recharts-line",a),x=p,h=nC(n),g=h.r,v=h.strokeWidth,b=$g(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(qg,{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(rC,{xAxisId:i,yAxisId:s,data:o,dataPointFormatter:Ixe,errorBarOffset:0},Sr.createElement(Mxe,{props:this.props,clipPathId:x}))),Sr.createElement(Cx,{activeDot:this.props.activeDot,points:o,mainColor:this.props.stroke,itemDataKey:this.props.dataKey,clipPath:w}))}};function Dxe(e){var t=nr(e,sM),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=iM(t,vxe),h=Mp(f,m),g=h.needClip,v=Wc(),b=Ha(),S=Ar(),w=$e(E=>WK(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(aM,oC({},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 HK(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=Hm({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=Hm({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,sM),r=Ar();return Sr.createElement(Uc,{id:t.id,type:"line"},n=>Sr.createElement(Sr.Fragment,null,Sr.createElement(zg,{legendPayload:Axe(t)}),Sr.createElement(Exe,{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(Ug,{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(Dxe,oC({},t,{id:n}))))}var aC=Sr.memo(jxe,qa);aC.displayName="Line";var hr=Z(J()),Ip=Z(J());function os(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:Q5}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.yAxisId)!==null&&r!==void 0?r:Q5}var KK=(e,t,r)=>_i(e,"xAxis",os(e,t),r),VK=(e,t,r)=>ki(e,"xAxis",os(e,t),r),GK=(e,t,r)=>_i(e,"yAxis",as(e,t),r),YK=(e,t,r)=>ki(e,"yAxis",as(e,t),r),$xe=ae([Lt,KK,GK,VK,YK],(e,t,r,n,o)=>sa(e,"xAxis")?Yi(t,n,!1):Yi(r,o,!1)),Lxe=(e,t)=>t,lM=ae([Ec,Lxe],(e,t)=>e.filter(r=>r.type==="area").find(r=>r.id===t)),XK=e=>{var t=Lt(e),r=sa(t,"xAxis");return r?"yAxis":"xAxis"},zxe=(e,t)=>{var r=XK(e);return r==="yAxis"?as(e,t):os(e,t)},ZK=(e,t,r)=>Sg(e,XK(e),zxe(e,t),r),Bxe=ae([lM,ZK],(e,t)=>{var r;if(!(e==null||t==null)){var n=e.stackId,o=bc(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]])}}}),Fxe=ae([lM,ZK],(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)}}),JK=ae([Lt,KK,GK,VK,YK,Bxe,KS,$xe,lM,rF,Fxe],(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 QK({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 Uxe=["animationElapsedTime","isAnimating","isEntrance","layout","isRange","stroke","connectNulls"],Wxe=["id","baseLine"];function Ix(){return Ix=Object.assign?Object.assign.bind():function(e){for(var t=1;td.y||0));return De(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.y||0),c)),De(c)?pa.createElement("rect",{x:sd.x||0));return De(o)?c=Math.max(o,c):o&&Array.isArray(o)&&o.length&&(c=Math.max(...o.map(d=>d.x||0),c)),De(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"?[Kg(Kg({},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]:[]),nV={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",animationMatchBy:Ap,animationInterpolateFn:Rxe,connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,shape:eV,xAxisId:0,yAxisId:0,zIndex:ir.area};function sC(e,t){return e&&e!=="none"?e:t}var e0e=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:sC(n,o),value:yi(r,t),payload:e}]},t0e=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:yi(i,t),hide:s,type:c,color:sC(n,a),unit:l,formatter:u,graphicalItemId:d}};return hr.createElement(Lc,{tooltipEntrySettings:p})});function r0e(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(Y_,{points:r,dot:a,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:i,baseProps:s,needClip:o,clipPathId:t})}function n0e(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 Kg(Kg({},l),{},{value:a.value,payload:a.payload,parentViewBox:void 0,viewBox:l,fill:void 0})});return hr.createElement(jg,{value:t?o:void 0},r)}function o0e(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=rV(a,Gxe),h=gn(x),g=Kg(Kg({},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($c,{option:m,DefaultShape:nV.shape,shapeProps:g})),hr.createElement(r0e,{points:t,props:x,clipPathId:o}))}function a0e(e,t,r){if(De(e)){var n=De(t)?t:void 0;return _r(n,e,r)}if(ar(e)||Wo(e)){var o=De(t)?t:void 0;return _r(o,0,r)}return e}function i0e(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,Ip.useMemo)(()=>({points:i,baseLine:s}),[i,s]),y=U_(m,a),x=Qm(),h=Bc(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=wx(S,s,p):Array.isArray(s)?w=wx(null,s,p):w=null,hr.createElement(Fc,{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:a0e(s,S,k),y.syncStepValue(C,k),hr.createElement(n0e,{showLabels:!g,points:i},n.children,hr.createElement(o0e,{points:_,baseLine:C,needClip:t,clipPathId:r,props:n,animationElapsedTime:k,isAnimating:g||k<1,isEntrance:A}),hr.createElement(jc,{label:n.label}))})}function s0e(e){var t=e.needClip,r=e.clipPathId,n=e.props,o=(0,Ip.useRef)(null),a=(0,Ip.useRef)();return hr.createElement(i0e,{needClip:t,clipPathId:r,props:n,previousPointsRef:o,previousBaselineRef:a})}var uM=class extends Ip.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=xt("recharts-area",a),h=f,g=nC(n),v=g.r,b=g.strokeWidth,S=$g(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(qg,{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(s0e,{needClip:l,clipPathId:h,props:this.props})),hr.createElement(Cx,{points:o,mainColor:sC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}),this.props.isRange&&Array.isArray(m)&&hr.createElement(Cx,{points:m,mainColor:sC(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:_}))}};function l0e(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=rV(e,Yxe),h=Ha(),g=d_(),v=Mp(m,y),b=v.needClip,S=Ar(),w=(t=$e(F=>JK(F,e.id,S)))!==null&&t!==void 0?t:{},_=w.points,k=w.isRange,A=w.baseLine,C=Wc();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(uM,iC({},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 u0e=(e,t,r,n,o)=>{var a=r??t;if(De(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 QK(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=u0e(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:Hm({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:Hm({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 c0e(e){var t=nr(e,nV),r=Ar();return hr.createElement(Uc,{id:t.id,type:"area"},n=>hr.createElement(hr.Fragment,null,hr.createElement(zg,{legendPayload:e0e(t)}),hr.createElement(t0e,{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(Ug,{type:"area",id:n,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:hS(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:r,connectNulls:t.connectNulls}),hr.createElement(l0e,iC({},t,{id:n}))))}var xu=hr.memo(c0e,qa);xu.displayName="Area";var Rt=Z(J()),Is=Z(J());var aV=Z(J());var d0e=!0,cM="Invariant failed";function oV(e,t){if(!e){if(d0e)throw new Error(cM);var r=typeof t=="function"?t():t,n=r?"".concat(cM,": ").concat(r):cM;throw new Error(n)}}var p0e=["option"];function f0e(e,t){if(e==null)return{};var r,n,o=m0e(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(De(t))return t;var a=De(n)||ar(n);return a?t(n,o):(a||oV(!1,"minPointSize callback function received a value with type of ".concat(typeof n,". Currently only numbers or null/undefined are supported.")),r)}};var g0e=(e,t,r)=>r,h0e=(e,t)=>t,Dx=ae([Ec,h0e],(e,t)=>e.filter(r=>r.type==="bar").find(r=>r.id===t)),y0e=ae([Dx],e=>e?.maxBarSize),v0e=(e,t,r,n)=>n,x0e=ae([Lt,Ec,os,as,g0e],(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")),b0e=(e,t,r)=>{var n=Lt(e),o=os(e,t),a=as(e,t);if(!(o==null||a==null))return n==="horizontal"?Sg(e,"yAxis",a,r):Sg(e,"xAxis",o,r)},w0e=(e,t)=>{var r=Lt(e),n=os(e,t),o=as(e,t);if(!(n==null||o==null))return r==="horizontal"?p5(e,"xAxis",n):p5(e,"yAxis",o)},S0e=ae([x0e,tF,w0e],Gq),k0e=(e,t,r)=>{var n,o,a=Dx(e,t);if(a==null)return 0;var i=os(e,t),s=as(e,t);if(i==null||s==null)return 0;var l=Lt(e),u=tP(e),c=a.maxBarSize,d=ar(c)?u:c,p,f;return l==="horizontal"?(p=_i(e,"xAxis",i,r),f=ki(e,"xAxis",i,r)):(p=_i(e,"yAxis",s,r),f=ki(e,"yAxis",s,r)),(n=(o=Yi(p,f,!0))!==null&&o!==void 0?o:d)!==null&&n!==void 0?n:0},sV=(e,t,r)=>{var n=Lt(e),o=os(e,t),a=as(e,t);if(!(o==null||a==null)){var i,s;return n==="horizontal"?(i=_i(e,"xAxis",o,r),s=ki(e,"xAxis",o,r)):(i=_i(e,"yAxis",a,r),s=ki(e,"yAxis",a,r)),Yi(i,s)}},_0e=ae([S0e,tP,eF,ZS,k0e,sV,y0e],Xq),C0e=(e,t,r)=>{var n=os(e,t);if(n!=null)return _i(e,"xAxis",n,r)},A0e=(e,t,r)=>{var n=as(e,t);if(n!=null)return _i(e,"yAxis",n,r)},E0e=(e,t,r)=>{var n=os(e,t);if(n!=null)return ki(e,"xAxis",n,r)},N0e=(e,t,r)=>{var n=as(e,t);if(n!=null)return ki(e,"yAxis",n,r)},T0e=ae([_0e,Dx],Jq),O0e=ae([b0e,Dx],Zq),lV=ae([Fr,Gm,C0e,A0e,E0e,N0e,T0e,Lt,KS,sV,O0e,Dx,v0e],(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 uV({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 pM=Z(J()),Vg=Z(J());var P0e=["index"];function dM(){return dM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,Vg.useContext)(cV);if(t!=null)return t.stackId;if(e!=null)return hS(e)};var D0e=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),j0e=e=>{var t=(0,Vg.useContext)(cV);if(t!=null){var r=t.stackId;return"url(#".concat(D0e(r,e),")")}},fM=e=>{var t=e.index,r=M0e(e,P0e),n=j0e(t);return pM.createElement(br,dM({className:"recharts-bar-stack-layer",clipPath:n},r))};var $0e=["onMouseEnter","onMouseLeave","onClick"],L0e=["value","background","tooltipPosition"],z0e=["id"],B0e=["onMouseEnter","onClick","onMouseLeave"];function pV(e,t){return H0e(e)||W0e(e,t)||U0e(e,t)||F0e()}function F0e(){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 U0e(e,t){if(e){if(typeof e=="string")return fV(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)?fV(e,t):void 0}}function fV(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:yi(r,t),payload:e}]},X0e=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:yi(a,t),hide:i,type:u,color:o,unit:s,formatter:l,graphicalItemId:c}};return Rt.createElement(Lc,{tooltipEntrySettings:d})});function Z0e(e){var t=$e(es),r=e.data,n=e.dataKey,o=e.background,a=e.allOtherBarProps,i=a.onMouseEnter,s=a.onMouseLeave,l=a.onClick,u=cC(a,$0e),c=hx(i,n,a.id),d=yx(s),p=vx(l,n,a.id);if(!o||r==null)return null;var f=pi(o);return Rt.createElement(on,{zIndex:Qq(o,ir.barBackground)},r.map((m,y)=>{var x=m.value,h=m.background,g=m.tooltipPosition,v=cC(m,L0e);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),Ql(u,m,y)),{},{onMouseEnter:b,onMouseLeave:S,onClick:w,dataKey:n,index:y,className:"recharts-bar-background-rectangle"});return Rt.createElement(uC,Hc({key:"background-bar-".concat(y)},_))}))}function J0e(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 Rt.createElement(jg,{value:t?o:void 0},r)}function Q0e(e){var t=e.shape,r=e.activeBar,n=e.baseProps,o=e.entry,a=e.index,i=e.dataKey,s=$e(es),l=$e(Ag),u=r&&String(o.originalDataIndex)===s&&(l==null||i===l),c=s!=null&&(String(o.originalDataIndex)!==s||l!=null&&i!==l),d=(0,Is.useState)(!1),p=pV(d,2),f=p[0],m=p[1],y=(0,Is.useState)(!1),x=pV(y,2),h=x[0],g=x[1];(0,Is.useEffect)(()=>{var k;return u?(m(!0),k=requestAnimationFrame(()=>{g(!0)})):(g(!1),c&&m(!1)),()=>{cancelAnimationFrame(k)}},[u,c]);var v=(0,Is.useCallback)(()=>{u||m(!1)},[u]),b=u&&h,S=u||f,w;u?r===!0?w=t:w=r:w=t;var _=Rt.createElement(uC,Hc({},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?Rt.createElement(on,{zIndex:ir.activeBar},Rt.createElement(fM,{index:o.originalDataIndex},_)):_}function R0e(e){var t=e.shape,r=e.baseProps,n=e.entry,o=e.index,a=e.dataKey;return Rt.createElement(uC,Hc({},r,{name:String(r.name)},n,{isActive:!1,option:t,index:o,dataKey:a,animationElapsedTime:e.animationElapsedTime,isAnimating:e.isAnimating,isEntrance:e.isEntrance}))}function ebe(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=cC(s,z0e),c=n.shape,d=n.dataKey,p=n.activeBar,f=n.onMouseEnter,m=n.onClick,y=n.onMouseLeave,x=cC(n,B0e),h=hx(f,d,l),g=yx(y),v=vx(m,d,l);return r?Rt.createElement(Rt.Fragment,null,r.map((b,S)=>Rt.createElement(fM,Hc({index:b.originalDataIndex,key:"rectangle-".concat(b?.x,"-").concat(b?.y,"-").concat(b?.value,"-").concat(S),className:"recharts-bar-rectangle"},Ql(x,b,S),{onMouseEnter:h(b,b.originalDataIndex),onMouseLeave:g(b,b.originalDataIndex),onClick:v(b,b.originalDataIndex)}),p?Rt.createElement(Q0e,{shape:c,activeBar:p,baseProps:u,entry:b,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i}):Rt.createElement(R0e,{shape:c,baseProps:u,entry:b,index:S,dataKey:d,animationElapsedTime:o,isAnimating:a,isEntrance:i})))):null}var tbe=(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 rbe(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=Bc(t.onAnimationStart,t.onAnimationEnd),d=c.isAnimating,p=c.handleAnimationStart,f=c.handleAnimationEnd;return Rt.createElement(J0e,{showLabels:!d,rects:n},Rt.createElement(Fc,{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(ebe,{props:t,data:m,animationElapsedTime:y,isAnimating:d||y<1,isEntrance:x}))),Rt.createElement(jc,{label:t.label}),t.children)}function nbe(e){var t=(0,Is.useRef)(null);return Rt.createElement(rbe,{previousRectanglesRef:t,props:e})}var gV=0,obe=(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)}},mM=class extends Is.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=xt("recharts-bar",a),p=c;return Rt.createElement(br,{className:d,id:c},l&&Rt.createElement("defs",null,Rt.createElement(qg,{clipPathId:p,xAxisId:i,yAxisId:s})),Rt.createElement(br,{className:"recharts-bar-rectangles",clipPath:l?"url(#clipPath-".concat(p,")"):void 0},Rt.createElement(Z0e,{data:n,dataKey:o,background:u,allOtherBarProps:this.props}),Rt.createElement(nbe,this.props)))}},abe={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",animationInterpolateFn:tbe,animationMatchBy:bx,background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:gV,shape:lC,xAxisId:0,yAxisId:0,zIndex:ir.bar};function ibe(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=Mp(t,r),p=d.needClip,f=Ha(),m=Ar(),y=mx(e.children,fu),x=$e(v=>lV(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(rC,{xAxisId:t,yAxisId:r,data:x,dataPointFormatter:obe,errorBarOffset:h},Rt.createElement(mM,Hc({},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 uV(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=RB({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=JB($,v)}else k=Wt(w,n),Array.isArray(k)||(k=[b,k]);var F=iV(o,gV)(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=OO({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=Wo(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)Rt.createElement(Rt.Fragment,null,Rt.createElement(zg,{legendPayload:Y0e(t)}),Rt.createElement(X0e,{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(Ug,{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!==lC}),Rt.createElement(on,{zIndex:t.zIndex},Rt.createElement(ibe,Hc({},t,{id:o})))))}var dC=Rt.memo(sbe,qa);dC.displayName="Bar";var bu=Z(J()),is=Z(J());var lbe=["domain","range"],ube=["domain","range"];function hV(e,t){if(e==null)return{};var r,n,o=cbe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{if(i!=null)return xV(xV({},a),{},{type:i})},[a,i]);return(0,is.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(Mq(s)):r.current!==s&&t(Iq({prev:r.current,next:s})),r.current=s)},[s,t]),(0,is.useLayoutEffect)(()=>()=>{r.current&&(t(Dq(r.current)),r.current=null)},[t]),null}var xbe=e=>{var t=e.xAxisId,r=e.className,n=e.height,o=e.label,a=(0,is.useRef)(null),i=(0,is.useRef)(null),s=$e(Gm),l=Ar(),u=Dt(),c="xAxis",d=$e(w=>Qk(w,c,t,l)),p=$e(w=>c5(w,t)),f=$e(w=>qU(w,t)),m=$e(w=>UP(w,t));if((0,is.useLayoutEffect)(()=>{if(!(n!=="auto"||!p||Cp(o)||(0,is.isValidElement)(o)||m==null)){var w=a.current;if(w){var _=w.getCalculatedHeight();Math.round(p.height)!==Math.round(_)&&u(Bq({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=hM(e,pbe),v=m.id,b=m.scale,S=hM(m,fbe);return bu.createElement(Px,gM({},g,S,{ref:a,labelRef:i,x:f.x,y:f.y,width:p.width,height:p.height,className:xt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:d,axisType:c,axisId:t}))},bbe={allowDataOverflow:Qn.allowDataOverflow,allowDecimals:Qn.allowDecimals,allowDuplicatedCategory:Qn.allowDuplicatedCategory,angle:Qn.angle,axisLine:ns.axisLine,height:Qn.height,hide:!1,includeHidden:Qn.includeHidden,interval:Qn.interval,label:!1,minTickGap:Qn.minTickGap,mirror:Qn.mirror,orientation:Qn.orientation,padding:Qn.padding,reversed:Qn.reversed,scale:Qn.scale,tick:Qn.tick,tickCount:Qn.tickCount,tickLine:ns.tickLine,tickSize:ns.tickSize,type:Qn.type,niceTicks:Qn.niceTicks,xAxisId:0},wbe=e=>{var t=nr(e,bbe);return bu.createElement(bu.Fragment,null,bu.createElement(vbe,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),bu.createElement(xbe,t))},wu=bu.memo(wbe,pC);wu.displayName="XAxis";var Su=Z(J()),ss=Z(J());var Sbe=["type"],kbe=["dangerouslySetInnerHTML","ticks","scale"],_be=["id","scale"];function yM(){return yM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(i!=null)return wV(wV({},a),{},{type:i})},[i,a]);return(0,ss.useLayoutEffect)(()=>{s!=null&&(r.current===null?t(jq(s)):r.current!==s&&t($q({prev:r.current,next:s})),r.current=s)},[s,t]),(0,ss.useLayoutEffect)(()=>()=>{r.current&&(t(Lq(r.current)),r.current=null)},[t]),null}function Obe(e){var t=e.yAxisId,r=e.className,n=e.width,o=e.label,a=(0,ss.useRef)(null),i=(0,ss.useRef)(null),s=$e(Gm),l=Ar(),u=Dt(),c="yAxis",d=$e(w=>d5(w,t)),p=$e(w=>KU(w,t)),f=$e(w=>Qk(w,c,t,l)),m=$e(w=>WP(w,t));if((0,ss.useLayoutEffect)(()=>{if(!(n!=="auto"||!d||Cp(o)||(0,ss.isValidElement)(o)||m==null)){var w=a.current;if(w){var _=w.getCalculatedWidth();Math.round(d.width)!==Math.round(_)&&u(zq({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=vM(e,kbe),v=m.id,b=m.scale,S=vM(m,_be);return Su.createElement(Px,yM({},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:xt("recharts-".concat(c," ").concat(c),r),viewBox:s,ticks:f,axisType:c,axisId:t}))}var Pbe={allowDataOverflow:Rn.allowDataOverflow,allowDecimals:Rn.allowDecimals,allowDuplicatedCategory:Rn.allowDuplicatedCategory,angle:Rn.angle,axisLine:ns.axisLine,hide:!1,includeHidden:Rn.includeHidden,interval:Rn.interval,label:!1,minTickGap:Rn.minTickGap,mirror:Rn.mirror,orientation:Rn.orientation,padding:Rn.padding,reversed:Rn.reversed,scale:Rn.scale,tick:Rn.tick,tickCount:Rn.tickCount,tickLine:ns.tickLine,tickSize:ns.tickSize,type:Rn.type,niceTicks:Rn.niceTicks,width:Rn.width,yAxisId:0},Mbe=e=>{var t=nr(e,Pbe);return Su.createElement(Su.Fragment,null,Su.createElement(Tbe,{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}),Su.createElement(Obe,t))},ku=Su.memo(Mbe,pC);ku.displayName="YAxis";var YV=Z(J()),XV=Z(J());var Bp=Z(J()),GV=Z(J());var $V=Z(J()),LV=Z(J());var Ibe=(e,t)=>t,jx=ae([Ibe,Lt,ok,Jn,w5,Ga,kW,Fr],TW);function Dbe(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function $x(e){var t=e.currentTarget.getBoundingClientRect(),r,n;if(Dbe(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 bM=go("mouseClick"),wM=nu();wM.startListening({actionCreator:bM,effect:(e,t)=>{var r=e.payload,n=jx(t.getState(),$x(r));n?.activeIndex!=null&&t.dispatch(rW({activeIndex:n.activeIndex,activeDataKey:void 0,activeCoordinate:n.activeCoordinate}))}});var fC=go("mouseMove"),SM=nu(),Gg=null,Dp=null,xM=null;SM.startListening({actionCreator:fC,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");Gg!==null&&(cancelAnimationFrame(Gg),Gg=null),Dp!==null&&(typeof a!="number"||!s)&&(clearTimeout(Dp),Dp=null),xM=$x(r);var l=()=>{var u=t.getState(),c=Nc(u,u.tooltip.settings.shared);if(!xM){Gg=null,Dp=null;return}if(c==="axis"){var d=jx(u,xM);d?.activeIndex!=null?t.dispatch(r_({activeIndex:d.activeIndex,activeDataKey:void 0,activeCoordinate:d.activeCoordinate})):t.dispatch(t_())}Gg=null,Dp=null};if(!s){l();return}a==="raf"?Gg=requestAnimationFrame(l):typeof a=="number"&&Dp===null&&(Dp=setTimeout(l,a))}});function SV(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 kV={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},_V=Cr({name:"rootProps",initialState:kV,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:kV.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}}}),CV=_V.reducer,AV=_V.actions.updateOptions;var jbe=null,$be={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)},EV=Cr({name:"polarOptions",initialState:jbe,reducers:$be}),NV=EV.actions.updatePolarOptions;var TV=EV.reducer;var kM=go("keyDown"),_M=go("focus"),CM=go("blur"),Lx=nu(),Yg=null,jp=null,mC=null;Lx.startListening({actionCreator:kM,effect:(e,t)=>{mC=e.payload,Yg!==null&&(cancelAnimationFrame(Yg),Yg=null);var r=t.getState(),n=r.eventSettings,o=n.throttleDelay,a=n.throttledEvents,i=a==="all"||a.includes("keydown");jp!==null&&(typeof o!="number"||!i)&&(clearTimeout(jp),jp=null);var s=()=>{try{var l=t.getState(),u=l.rootProps.accessibilityLayer!==!1;if(!u)return;var c=l.tooltip.keyboardInteraction,d=mC;if(d!=="ArrowRight"&&d!=="ArrowLeft"&&d!=="Enter")return;var p=Tc(c,pu(l),lu(l),Pc(l)),f=p==null?-1:Number(p),m=!Number.isFinite(f)||f<0,y=Ga(l),x=pu(l),h=Nc(l,l.tooltip.settings.shared);if(d==="Enter"){if(m)return;var g=dx(l,h,"hover",String(c.index));t.dispatch(ux({active:!c.active,activeIndex:c.index,activeCoordinate:g}));return}var v=VU(l),b=v==="left-to-right"?1:-1,S=d==="ArrowRight"?1:-1,w;if(m){var _=lu(l),k=Pc(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(Tc(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 $=dx(l,h,"hover",String(w));t.dispatch(ux({active:!0,activeIndex:w.toString(),activeCoordinate:$}))}finally{Yg=null,jp=null}};if(!i){s();return}o==="raf"?Yg=requestAnimationFrame(s):typeof o=="number"&&jp===null&&(s(),mC=null,jp=setTimeout(()=>{mC?s():(jp=null,Yg=null)},o))}});Lx.startListening({actionCreator:_M,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=Nc(r,r.tooltip.settings.shared),s=dx(r,i,"hover",String(a));t.dispatch(ux({active:!0,activeIndex:a,activeCoordinate:s}))}}}});Lx.startListening({actionCreator:CM,effect:(e,t)=>{var r=t.getState(),n=r.rootProps.accessibilityLayer!==!1;if(n){var o=r.tooltip.keyboardInteraction;o.active&&t.dispatch(ux({active:!1,activeIndex:o.index,activeCoordinate:o.coordinate}))}}});function gC(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 Ci=go("externalEvent"),EM=nu(),hC=new Map,zx=new Map,AM=new Map;EM.startListening({actionCreator:Ci,effect:(e,t)=>{var r=e.payload,n=r.handler,o=r.reactEvent;if(n!=null){var a=o.type,i=gC(o);AM.set(a,{handler:n,reactEvent:i});var s=hC.get(a);s!==void 0&&(cancelAnimationFrame(s),hC.delete(a));var l=t.getState(),u=l.eventSettings,c=u.throttleDelay,d=u.throttledEvents,p=d,f=p==="all"||p?.includes(a),m=zx.get(a);m!==void 0&&(typeof c!="number"||!f)&&(clearTimeout(m),zx.delete(a));var y=()=>{var g=AM.get(a);try{if(!g)return;var v=g.handler,b=g.reactEvent,S=t.getState(),w={activeCoordinate:C5(S),activeDataKey:Ag(S),activeIndex:es(S),activeLabel:u_(S),activeTooltipIndex:es(S),isTooltipActive:A5(S)};v&&v(w,b)}finally{hC.delete(a),zx.delete(a),AM.delete(a)}};if(!f){y();return}if(c==="raf"){var x=requestAnimationFrame(y);hC.set(a,x)}else if(typeof c=="number"){if(!zx.has(a)){y();var h=setTimeout(y,c);zx.set(a,h)}}else y()}}});var Lbe=ae([du],e=>e.tooltipItemPayloads),OV=ae([Lbe,(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 NM=go("touchMove"),TM=nu(),$p=null,qc=null,PV=null,Bx=null;TM.startListening({actionCreator:NM,effect:(e,t)=>{var r=e.payload;if(!(r.touches==null||r.touches.length===0)){Bx=gC(r);var n=t.getState(),o=n.eventSettings,a=o.throttleDelay,i=o.throttledEvents,s=i==="all"||i.includes("touchmove");$p!==null&&(cancelAnimationFrame($p),$p=null),qc!==null&&(typeof a!="number"||!s)&&(clearTimeout(qc),qc=null),PV=Array.from(r.touches).map(u=>$x({clientX:u.clientX,clientY:u.clientY,currentTarget:r.currentTarget}));var l=()=>{if(Bx!=null){var u=t.getState(),c=Nc(u,u.tooltip.settings.shared);if(c==="axis"){var d,p=(d=PV)===null||d===void 0?void 0:d[0];if(p==null){$p=null,qc=null;return}var f=jx(u,p);f?.activeIndex!=null&&t.dispatch(r_({activeIndex:f.activeIndex,activeDataKey:void 0,activeCoordinate:f.activeCoordinate}))}else if(c==="item"){var m,y=Bx.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(yS),g=(m=x.getAttribute(vS))!==null&&m!==void 0?m:void 0,v=Oc(u).find(w=>w.id===g);if(h==null||v==null||g==null)return;var b=v.dataKey,S=OV(u,h,g);t.dispatch(e_({activeDataKey:b,activeIndex:h,activeCoordinate:S,activeGraphicalItemId:g}))}$p=null,qc=null}};if(!s){l();return}a==="raf"?$p=requestAnimationFrame(l):typeof a=="number"&&qc===null&&(l(),Bx=null,qc=setTimeout(()=>{Bx?l():(qc=null,$p=null)},a))}}});var Fx={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},MV=Cr({name:"eventSettings",initialState:Fx,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Jt(t.payload.throttledEvents))}}}),IV=MV.actions.setEventSettings;var DV=MV.reducer;var zbe=Kw({brush:rK,cartesianAxis:Fq,chartData:RW,errorBars:$K,eventSettings:DV,graphicalItems:Cq,layout:YB,legend:b7,options:YW,polarAxis:GH,polarOptions:TV,referenceElements:aK,renderedTicks:SK,rootProps:CV,tooltip:nW,zIndex:zW}),jV=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return OB({reducer:zbe,preloadedState:t,middleware:n=>{var o;return n({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((o="es6")!==null&&o!==void 0?o:"")}).concat([wM.middleware,SM.middleware,Lx.middleware,EM.middleware,TM.middleware])},enhancers:n=>{var o=n;return typeof n=="function"&&(o=n()),o.concat(_O({type:"raf"}))},devTools:Xi.devToolsEnabled&&{serialize:{replacer:SV},name:"recharts-".concat(r)}})};function yC(e){var t=e.preloadedState,r=e.children,n=e.reduxStoreName,o=Ar(),a=(0,LV.useRef)(null);if(o)return r;a.current==null&&(a.current=jV(t,n));var i=uv;return $V.createElement(N7,{context:i,store:a.current},r)}var vC=Z(J());function Bbe(e){var t=e.layout,r=e.margin,n=Dt(),o=Ar();return(0,vC.useEffect)(()=>{o||(n(KB(t)),n(EO(r)))},[n,o,t,r]),null}var xC=(0,vC.memo)(Bbe,qa);var zV=Z(J());function bC(e){var t=Dt();return(0,zV.useEffect)(()=>{t(AV(e))},[t,e]),null}var wC=Z(J());var Fbe=e=>{var t=Dt();return(0,wC.useEffect)(()=>{t(IV(e))},[t,e]),null},SC=(0,wC.memo)(Fbe,qa);var _u=Z(J()),KV=Z(J());var zp=Z(J()),PM=Z(J());var Lp=Z(J()),kC=Z(J());function BV(e){var t=e.zIndex,r=e.isPanorama,n=(0,kC.useRef)(null),o=Dt();return(0,kC.useLayoutEffect)(()=>(n.current&&o($W({zIndex:t,element:n.current,isPanorama:r})),()=>{o(LW({zIndex:t,isPanorama:r}))}),[o,t,r]),Lp.createElement("g",{tabIndex:-1,ref:n,className:"recharts-zIndex-layer_".concat(t)})}function OM(e){var t=e.children,r=e.isPanorama,n=$e(PW);if(!n||n.length===0)return t;var o=n.filter(i=>i<0),a=n.filter(i=>i>0);return Lp.createElement(Lp.Fragment,null,o.map(i=>Lp.createElement(BV,{key:i,zIndex:i,isPanorama:r})),t,a.map(i=>Lp.createElement(BV,{key:i,zIndex:i,isPanorama:r})))}var Ube=["children"];function Wbe(e,t){if(e==null)return{};var r,n,o=Hbe(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n{var r=Zm(),n=Jm(),o=TS();if(!Ua(r)||!Ua(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),zp.createElement(tv,_C({},i,{title:s,desc:l,role:c,tabIndex:u,width:r,height:n,style:qbe,ref:t}),a)}),Vbe=e=>{var t=e.children,r=$e(Xd);if(!r)return null;var n=r.width,o=r.height,a=r.y,i=r.x;return zp.createElement(tv,{width:n,height:o,x:i,y:a},t)},MM=(0,PM.forwardRef)((e,t)=>{var r=e.children,n=Wbe(e,Ube),o=Ar();return o?zp.createElement(Vbe,null,zp.createElement(OM,{isPanorama:!0},r)):zp.createElement(Kbe,_C({ref:t},n),zp.createElement(OM,{isPanorama:!1},r))});var En=Z(J()),fr=Z(J());var CC=Z(J());function Gbe(e,t){return Jbe(e)||Zbe(e,t)||Xbe(e,t)||Ybe()}function Ybe(){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 Xbe(e,t){if(e){if(typeof e=="string")return FV(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)?FV(e,t):void 0}}function FV(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(GB(s))}},[n,e,a]),o}function WV(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Qbe(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r(tH(),null);function EC(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var s1e=(0,fr.forwardRef)((e,t)=>{var r,n,o=(0,fr.useRef)(null),a=(0,fr.useState)({containerWidth:EC((r=e.style)===null||r===void 0?void 0:r.width),containerHeight:EC((n=e.style)===null||n===void 0?void 0:n.height)}),i=AC(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]),En.createElement(En.Fragment,null,En.createElement(Qd,{width:s.containerWidth,height:s.containerHeight}),En.createElement("div",Kc({ref:c},e)))}),l1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height,o=(0,fr.useState)({containerWidth:EC(r),containerHeight:EC(n)}),a=AC(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 En.createElement(En.Fragment,null,En.createElement(Qd,{width:i.containerWidth,height:i.containerHeight}),En.createElement("div",Kc({ref:u},e)))}),u1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return En.createElement(En.Fragment,null,En.createElement(Qd,{width:r,height:n}),En.createElement("div",Kc({ref:t},e)))}),c1e=(0,fr.forwardRef)((e,t)=>{var r=e.width,n=e.height;return typeof r=="string"||typeof n=="string"?En.createElement(l1e,Kc({},e,{ref:t})):typeof r=="number"&&typeof n=="number"?En.createElement(u1e,Kc({},e,{width:r,height:n,ref:t})):En.createElement(En.Fragment,null,En.createElement(Qd,{width:r,height:n}),En.createElement("div",Kc({ref:t},e)))});function d1e(e){return e?s1e:c1e}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=AC(_,2),A=k[0],C=k[1],E=(0,fr.useState)(null),I=AC(E,2),Q=I[0],$=I[1],F=UV(),N=xv(),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(bM(U)),w(Ci({handler:a,reactEvent:U}))},[w,a]),M=(0,fr.useCallback)(U=>{w(fC(U)),w(Ci({handler:u,reactEvent:U}))},[w,u]),q=(0,fr.useCallback)(U=>{w(t_()),w(Ci({handler:c,reactEvent:U}))},[w,c]),V=(0,fr.useCallback)(U=>{w(fC(U)),w(Ci({handler:d,reactEvent:U}))},[w,d]),L=(0,fr.useCallback)(()=>{w(_M())},[w]),G=(0,fr.useCallback)(()=>{w(CM())},[w]),W=(0,fr.useCallback)(U=>{w(kM(U.key))},[w]),ie=(0,fr.useCallback)(U=>{w(Ci({handler:i,reactEvent:U}))},[w,i]),Me=(0,fr.useCallback)(U=>{w(Ci({handler:s,reactEvent:U}))},[w,s]),he=(0,fr.useCallback)(U=>{w(Ci({handler:l,reactEvent:U}))},[w,l]),ce=(0,fr.useCallback)(U=>{w(Ci({handler:p,reactEvent:U}))},[w,p]),R=(0,fr.useCallback)(U=>{w(Ci({handler:y,reactEvent:U}))},[w,y]),te=(0,fr.useCallback)(U=>{b&&w(NM(U)),w(Ci({handler:m,reactEvent:U}))},[w,b,m]),z=(0,fr.useCallback)(U=>{w(Ci({handler:f,reactEvent:U}))},[w,f]),ee=d1e(g);return En.createElement(D5.Provider,{value:A},En.createElement(wT.Provider,{value:Q},En.createElement(ee,{width:O??x?.width,height:j??x?.height,className:xt("recharts-wrapper",n),style:Qbe({position:"relative",cursor:"default",width:O,height:j},x),onClick:D,onContextMenu:ie,onDoubleClick:Me,onFocus:L,onBlur:G,onKeyDown:W,onMouseDown:he,onMouseEnter:M,onMouseLeave:q,onMouseMove:V,onMouseUp:ce,onTouchEnd:z,onTouchMove:te,onTouchStart:R,ref:T},En.createElement(i1e,null),r)))});var p1e=["width","height","responsive","children","className","style","compact","title","desc"];function f1e(e,t){if(e==null)return{};var r,n,o=m1e(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=f1e(e,p1e),p=mn(d);return l?_u.createElement(_u.Fragment,null,_u.createElement(Qd,{width:r,height:n}),_u.createElement(MM,{otherAttributes:p,title:u,desc:c},a)):_u.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},_u.createElement(MM,{otherAttributes:p,title:u,desc:c,ref:t},_u.createElement(sK,null,a)))});function IM(){return IM=Object.assign?Object.assign.bind():function(e){for(var t=1;tYV.createElement(Xg,{chartName:"LineChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:w1e,tooltipPayloadSearcher:Mc,categoricalChartProps:e,ref:t}));var ZV=Z(J()),JV=Z(J());var S1e=["axis","item"],jM=(0,JV.forwardRef)((e,t)=>ZV.createElement(Xg,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:S1e,tooltipPayloadSearcher:Mc,categoricalChartProps:e,ref:t}));var aG=Z(J()),iG=Z(J());var tG=Z(J()),Vc=Z(J());var QV=Z(J());function RV(e){var t=Dt();return(0,QV.useEffect)(()=>{t(NV(e))},[t,e]),null}var k1e=["layout"];function $M(){return $M=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var r=nr(e,j1e);return aG.createElement(rG,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:D1e,tooltipPayloadSearcher:Mc,categoricalChartProps:r,ref:t})});var sG=Z(J()),lG=Z(J());var $1e=["axis"],Gc=(0,lG.forwardRef)((e,t)=>sG.createElement(Xg,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:$1e,tooltipPayloadSearcher:Mc,categoricalChartProps:e,ref:t}));var ls=Z(J()),Zg=[{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}],uG="30m",cG="activeagents.timeWindow",dG=(0,ls.createContext)(null),BM=e=>Zg.find(t=>t.id===e);function pG({children:e}){let[t,r]=(0,ls.useState)(()=>{try{let a=localStorage.getItem(cG);if(a&&BM(a))return a}catch{}return uG}),n=(0,ls.useCallback)(a=>{if(BM(a)){r(a);try{localStorage.setItem(cG,a)}catch{}}},[]),o=(0,ls.useMemo)(()=>{let a=Zg.findIndex(s=>s.id===t),i=Zg[a]||BM(uG);return{timeWindow:i,windowIndex:a,windows:Zg,setWindow:n,zoomTo:s=>{let l=Zg[Math.min(Math.max(s,0),Zg.length-1)];l&&n(l.id)},days:Math.max(1,Math.ceil(i.minutes/1440))}},[t,n]);return ls.default.createElement(dG.Provider,{value:o},e)}function pl(){let e=(0,ls.useContext)(dG);if(!e)throw new Error("useTimeWindow must be used within a TimeWindowProvider");return e}var Jg=Z(J());function fl({compact:e=!1}){let{windows:t,windowIndex:r,timeWindow:n,setWindow:o,zoomTo:a}=pl(),{darkMode:i}=ut(),s=Wi(i),l={color:s.textSecondary};return Jg.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:s.mutedBg}},Jg.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"),Jg.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=>Jg.default.createElement("option",{key:u.id,value:u.id},u.label))),Jg.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 In=Z(J());var Jr=Z(J());var Ux=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},Yc=e=>{if(e==null)return 0;let t=typeof e=="string"?e:JSON.stringify(e);return Math.round(t.length/4)},TC=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 Yc(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+=Yc(x)),h&&(u+=Yc(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:Ux(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 L1e={messages:"#2563eb",tool_results:"#5b84ec",instructions:"#85a3f0",tool_schemas:"#a6bcf4",mcp_schemas:"#c3d2f8",memory:"#dce4fb",output:"#7c3aed"},Qg=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 Xc({used:e,limit:t=2e5,segments:r=[],cached:n=0,thinking:o=0,compact:a=!1,defaultOpen:i=!1,label:s="Context window",estimated:l=!1,darkMode:u=!1}){let[c,d]=(0,Jr.useState)(i),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=`${Qg(f)} / ${Qg(t)} (${Math.round(m*100)}%)`,S=_=>_.key==="messages"&&y?y:_.color||L1e[_.key]||"#2563eb",w=_=>Jr.default.createElement("div",{style:{display:"flex",height:_,borderRadius:"999px",overflow:"hidden",background:v,flex:1}},p.map(k=>Jr.default.createElement("div",{key:k.key,title:`${k.label} \xB7 ${Qg(k.tokens)}`,style:{width:`${Math.min(k.tokens/t*100,100)}%`,background:S(k)}})));return a?Jr.default.createElement("span",{title:`${s}: ${b}`,style:{display:"inline-flex",alignItems:"center",gap:"6px",width:"132px",verticalAlign:"middle"}},w("6px"),Jr.default.createElement("span",{style:{fontSize:"11px",fontFamily:"'SF Mono', 'Fira Code', monospace",color:y||x,whiteSpace:"nowrap"}},Math.round(m*100),"%")):Jr.default.createElement("div",{style:{background:u?"rgba(255,255,255,0.03)":"#ffffff",border:`1px solid ${y?y+"66":u?"rgba(255,255,255,0.1)":"#e5e7eb"}`,borderRadius:"12px",padding:"12px 14px"}},Jr.default.createElement("div",{onClick:_=>{_.stopPropagation(),d(!c)},style:{display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer"}},Jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:h}},s,l&&Jr.default.createElement("span",{style:{color:x,fontWeight:400}}," \xB7 estimated")),Jr.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:"8px"}},Jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",fontWeight:600,color:y||g}},b),Jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x,display:"inline-block",transform:c?"rotate(90deg)":"none",transition:"transform 0.15s ease"}},">"))),Jr.default.createElement("div",{style:{display:"flex",marginTop:"8px"}},w("9px")),m>=.9&&Jr.default.createElement("div",{style:{marginTop:"6px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:"#dc2626"}},"[!] compaction imminent \u2014 next turn may drop the oldest messages"),c&&Jr.default.createElement("div",{style:{marginTop:"10px",display:"grid",gap:"5px"}},[...p,{key:"__free",label:"Free space",tokens:Math.max(t-f,0)}].map(_=>Jr.default.createElement("div",{key:_.key,style:{display:"flex",alignItems:"center",gap:"8px"}},Jr.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"}}),Jr.default.createElement("span",{style:{fontSize:"13px",color:g,flex:1}},_.label),Jr.default.createElement("span",{style:{fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"12px",color:h,width:"56px",textAlign:"right"}},Qg(_.tokens)),Jr.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)&&Jr.default.createElement("div",{style:{marginTop:"4px",paddingTop:"6px",borderTop:`1px solid ${u?"rgba(255,255,255,0.08)":"#f3f4f6"}`,display:"flex",gap:"16px",fontFamily:"'SF Mono', 'Fira Code', monospace",fontSize:"11px",color:x}},n>0&&Jr.default.createElement("span",null,Jr.default.createElement("span",{style:{color:"#2563eb"}},"[=]")," cached prefix ",Qg(n)),o>0&&Jr.default.createElement("span",null,Jr.default.createElement("span",{style:{color:"#7c3aed"}},"[~]")," thinking ",Qg(o)))))}var bt=Z(J());var Le=Z(J());var qn=Z(J());var ke=Z(J());var fG=["ui","json-ui","genui"],Fp="render_ui",Ds=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),FM=e=>{if(typeof e=="string")try{return JSON.parse(e)}catch{return}};function Up(e){let t=typeof e=="string"?FM(e):e;if(Array.isArray(t))return t.every(Ds)?t:null;if(Ds(t)){if(Array.isArray(t.blocks))return t.blocks.every(Ds)?t.blocks:null;if(Array.isArray(t.ui))return t.ui.every(Ds)?t.ui:null}return null}function UM(e,t){let r=String(e||"").trim().toLowerCase();if(fG.includes(r))return Up(t);if(r==="json"){let n=FM(t);return Ds(n)&&Array.isArray(n.ui)?Up(n):null}return null}function WM(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=FM(t);if(o==null||typeof o!="object")return null;if(Array.isArray(o))return o.length>0&&o.every(s=>Ds(s)&&typeof s.type=="string")?{blocks:o}:{object:o};let a=Up(o);return a?{blocks:a}:{object:o}}var z1e=e=>Ds(e)?e.function?.name||e.name:void 0,B1e=e=>Ds(e)?e.function?.arguments??e.arguments??e.input:void 0;function Rg(e,{callId:t}={}){if(!Ds(e))return null;if(e.tool_name===Fp&&e.tool_arguments!=null){let o=Up(e.tool_arguments);if(o)return o}let r=e.tool_calls,n=[];if(Array.isArray(r)){let o=r.some(a=>Ds(a)&&a.id!=null);r.forEach(a=>{if(z1e(a)!==Fp||t!=null&&o&&a.id!==t)return;let i=Up(B1e(a));i&&n.push(...i)})}else if(Ds(r)&&e.tool_name===Fp){let o=Up(r);o&&n.push(...o)}return n.length>0?n:null}function OC(e){return typeof e=="string"&&/^(https?:\/\/|data:image\/)/i.test(e.trim())}function PC(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 mG(e){try{return new URL(String(e).trim()).host}catch{return""}}var bG=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#4a3aa7","#e34948"],F1e=["#3987e5","#d95926","#199e70","#c98500","#d55181","#008300","#9085e9","#e66767"],Wx=bG.length,gG=220,eh=e=>e!=null&&typeof e=="object"&&!Array.isArray(e),er=e=>e==null?"":typeof e=="object"?JSON.stringify(e):String(e),wG=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()},VM=(e,t)=>typeof t=="string"&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,hG={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"]}},U1e={positive:{light:"#15803d",dark:"#4ade80"},negative:{light:"#b91c1c",dark:"#f87171"}},HM=e=>({width:"100%",padding:"6px 10px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),GM=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"}),th=e=>({fontSize:"13px",fontWeight:600,color:e.textPrimary,margin:0});function Cu({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:{...GM(n),maxHeight:"160px",overflowY:"auto"}},JSON.stringify(e,null,2)))}function W1e({block:e,colors:t,darkMode:r,onAction:n}){let o=OC(e.image_url)&&PC(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:th(t)},er(e.title)),e.body!=null&&ke.default.createElement("div",{className:"text-sm",style:{color:t.textCell}},ke.default.createElement(js,{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 SG({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=VM(U1e,o),i=a?a[r?"dark":"light"]:t.textMuted,s=typeof e.value=="number"?wG(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 H1e({block:e,colors:t,darkMode:r}){let n=Array.isArray(e.items)?e.items.filter(eh):[];return n.length===0?ke.default.createElement(Cu,{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(SG,{key:a,block:o,colors:t,darkMode:r})))}var KM=(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"}),q1e=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 kG({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:q1e(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:KM(r,typeof l=="number")},n?n(l):typeof l=="number"?l.toLocaleString():er(l))}))))))}function K1e({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(Cu,{block:e,reason:"table needs columns and rows arrays",colors:t,darkMode:r});let a=o.map(i=>Array.isArray(i)?i:eh(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:th(t)},er(e.title)),ke.default.createElement(kG,{columns:n,rows:a,colors:t}))}var V1e=e=>{let t=e[0];return Object.keys(t).find(r=>typeof t[r]=="string")||Object.keys(t)[0]},G1e=(e,t)=>Object.keys(e[0]).filter(r=>r!==t&&typeof e[0][r]=="number");function Y1e({block:e,colors:t,darkMode:r}){let n=String(e.chart||e.kind||"bar").toLowerCase(),o=Array.isArray(e.data)?e.data.filter(eh):[];if(o.length===0)return ke.default.createElement(Cu,{block:e,reason:"chart needs a data array of objects",colors:t,darkMode:r});let a=typeof e.x=="string"?e.x:V1e(o),i=Array.isArray(e.series)?e.series.filter(x=>typeof x=="string"):[],s=(i.length>0?i:G1e(o,a)).slice(0,Wx);if(!a||s.length===0)return ke.default.createElement(Cu,{block:e,reason:"chart needs an x key and at least one series",colors:t,darkMode:r});let l=r?F1e:bG,u=t.cardBg,c={fontSize:10,fill:t.textMuted},d=ke.default.createElement(Ic,{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(AS,{wrapperStyle:{fontSize:"11px",color:t.textSecondary},iconSize:10}):null,f=ke.default.createElement(ke.default.Fragment,null,ke.default.createElement(yu,{stroke:t.cardBorder,vertical:!1}),ke.default.createElement(wu,{dataKey:a,stroke:t.borderStrong,tick:c,tickLine:!1}),ke.default.createElement(ku,{stroke:t.borderStrong,tick:c,tickLine:!1,axisLine:!1,tickFormatter:wG,width:44})),m={top:8,right:12,bottom:0,left:0},y;if(n==="line")y=ke.default.createElement(DM,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(aC,{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(Gc,{data:o,margin:m},f,d,p,s.map((x,h)=>ke.default.createElement(xu,{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,Wx),v=h.slice(Wx);v.length>0&&(g[Wx-1]={[a]:"Other",[x]:v.reduce((b,S)=>b+(Number(S[x])||0),Number(g[Wx-1][x])||0)}),y=ke.default.createElement(zM,{margin:m},d,p,ke.default.createElement(K_,{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(fu,{key:S,fill:l[S]}))))}else y=ke.default.createElement(jM,{data:o,margin:m,barCategoryGap:"25%",barGap:2},f,d,p,s.map((x,h)=>ke.default.createElement(dC,{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:th(t)},er(e.title)),ke.default.createElement("div",{style:{width:"100%",height:gG,minWidth:0}},ke.default.createElement(hc,{width:"100%",height:gG},y)))}function X1e({block:e,colors:t,darkMode:r,onAction:n}){let o=Array.isArray(e.items)?e.items:null;if(!o)return ke.default.createElement(Cu,{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:th(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(js,{text:i,darkMode:r,onUiAction:n}):er(i)))))}function Z1e({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 J1e=["text","textarea","number","select","checkbox"],qM=e=>er(e.name||e.label),yG=e=>er(e.label||e.name),vG=e=>J1e.includes(e.type)?e.type:"text";function Q1e({block:e,colors:t,darkMode:r,onAction:n}){let o=(Array.isArray(e.fields)?e.fields:[]).filter(p=>eh(p)&&(p.name||p.label)),[a,i]=(0,ke.useState)(()=>Object.fromEntries(o.map(p=>[qM(p),vG(p)==="checkbox"?!1:""]))),[s,l]=(0,ke.useState)(!1);if(o.length===0)return ke.default.createElement(Cu,{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[qM(m)];return`${yG(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:th(t)},er(e.title)),o.map(p=>{let f=qM(p),m=vG(p),y=yG(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:{...HM(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:HM(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:HM(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 R1e({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(Cu,{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 ewe({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=mG(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 twe({block:e,colors:t,darkMode:r}){if(!OC(e.url))return ke.default.createElement(Cu,{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}},PC(n)?ke.default.createElement("img",{src:n,alt:o,style:{maxWidth:"100%",borderRadius:"8px",display:"block"}}):ke.default.createElement(ewe,{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 rwe({block:e,colors:t,darkMode:r,onAction:n}){let[o,a]=(VM(hG,e.tone)||hG.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(js,{text:er(e.body),darkMode:r,onUiAction:n})))}function nwe({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:GM(r)},er(e.code)))}function xG({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(js,{text:er(o),darkMode:r,onUiAction:n}))}var owe=3;function MC({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>=owe)return ke.default.createElement("pre",{style:{...GM(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(eh)){let a=[...new Set(e.flatMap(i=>Object.keys(i)))];return ke.default.createElement(kG,{columns:a,rows:e.map(i=>a.map(s=>i[s])),colors:t,renderCell:i=>ke.default.createElement(MC,{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(MC,{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:{...KM(t,!1),color:t.textSecondary,fontWeight:500,whiteSpace:"nowrap",width:"1%"}},a),ke.default.createElement("td",{style:KM(t,!1)},ke.default.createElement(MC,{value:i,colors:t,darkMode:r,depth:n+1}))))))}function awe({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:th(t)},er(e.title)),ke.default.createElement("div",{className:"px-1 pb-1",style:{overflowX:"auto"}},ke.default.createElement(MC,{value:n,colors:t,darkMode:r,depth:0})))}var iwe={card:W1e,stat:SG,stats:H1e,table:K1e,chart:Y1e,list:X1e,progress:Z1e,form:Q1e,choices:R1e,image:twe,callout:rwe,code:nwe,object:awe,text:xG,markdown:xG};function ml({blocks:e,onAction:t,darkMode:r=!1}){let n=Array.isArray(e)?e.filter(eh):[];if(n.length===0)return null;let o=Wi(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=VM(iwe,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(Cu,{block:a,colors:o,darkMode:r}))}))}var swe=/(\*\*[^*]+\*\*|\*[^*\n]+\*|`[^`]+`|\[[^\]]+\]\((?:https?:\/\/|\/)[^)\s]+\))/g,Hx=(e,t)=>e.split(swe).filter(Boolean).map((r,n)=>{let o=`${t}-${n}`;if(r.startsWith("**")&&r.endsWith("**"))return qn.default.createElement("strong",{key:o},r.slice(2,-2));if(r.startsWith("*")&&r.endsWith("*")&&r.length>2)return qn.default.createElement("em",{key:o},r.slice(1,-1));if(r.startsWith("`")&&r.endsWith("`"))return qn.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?qn.default.createElement("a",{key:o,href:a[2],target:"_blank",rel:"noopener noreferrer",className:"underline text-blue-500"},a[1]):r}),_G=e=>/^\s*\|.*\|\s*$/.test(e),lwe=e=>/^\s*\|(\s*:?-+:?\s*\|)+\s*$/.test(e),CG=e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split(/(?t.replace(/\\\|/g,"|").trim());function js({text:e,onUiAction:t,darkMode:r}){if(!e)return null;let n=[],o=String(e).split(` +`),a=0,i=0;for(;aqn.default.createElement("th",{key:f,className:"text-left font-semibold px-2 py-1",style:{borderBottom:"1px solid rgba(127,127,127,0.35)"}},Hx(p,`th${d}-${f}`))))),qn.default.createElement("tbody",null,c.map((p,f)=>qn.default.createElement("tr",{key:f},u.map((m,y)=>qn.default.createElement("td",{key:y,className:"px-2 py-1 align-top",style:{borderBottom:"1px solid rgba(127,127,127,0.15)"}},Hx(p[y]??"",`td${d}-${f}-${y}`)))))))));continue}if(/^\s*([-*]|\d+\.)\s+/.test(s)){let u=[];for(;aqn.default.createElement("li",{key:d},Hx(c,`li${i}-${d}`)))));continue}if(s.trim()===""){n.push(qn.default.createElement("div",{key:i++,className:"h-2"})),a+=1;continue}n.push(qn.default.createElement("div",{key:i++},Hx(s,`p${i}`))),a+=1}return qn.default.createElement("div",{className:"break-words"},n)}var Xa=Z(J()),uwe=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"},cwe=e=>Array.isArray(e.parameters)?e.parameters:e.parameters&&typeof e.parameters=="object"?Object.keys(e.parameters.properties||e.parameters):[];function YM({tool:e,darkMode:t}){let r=cwe(e);return Xa.default.createElement("div",{style:{display:"grid",gap:"4px"}},e.description&&Xa.default.createElement("div",{className:"text-sm",style:{color:t?"rgba(255,255,255,0.75)":"#4b5563"}},e.description),Xa.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"}},Xa.default.createElement("span",null,"params: ",r.length>0?r.join(", "):"none"),Xa.default.createElement("span",null,"source: ",uwe(e))))}function XM({tools:e,darkMode:t}){let[r,n]=(0,Xa.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 Xa.default.createElement("div",{style:{marginTop:"8px"}},Xa.default.createElement("div",{className:"flex items-center gap-1.5 flex-wrap font-mono"},Xa.default.createElement("span",{className:"text-xs uppercase",style:{letterSpacing:"0.05em",color:t?"rgba(255,255,255,0.45)":"#9ca3af"}},"tools"),o.map(s=>Xa.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&&Xa.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"}`}},Xa.default.createElement(YM,{tool:a,darkMode:t})))}var dwe=["application/json","application/xml","application/x-yaml","application/csv"],pwe=/\.(csv|md|txt|json|ya?ml)$/i;function AG(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/")||dwe.includes(t)||pwe.test(r)?"text":"file"}function EG(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 NG(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 TG=e=>e==null?null:e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,qx=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}},fwe=["text","output","body","content"],OG=e=>{if(e==null)return null;if(typeof e=="object")return e;try{return JSON.parse(e)}catch{return null}},mwe=e=>{let t=OG(e.tool_result)??OG(e.content);if(!t||typeof t!="object"||Array.isArray(t))return null;let r=fwe.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}},gwe=e=>!!(e.tool_name||e.tool_call_id||e.tool_arguments||e.tool_result||(e.tool_calls||[]).length>0||e.duration_ms!=null||qx(e.content)),IG=280,hwe=["tool","system","developer"],Kx=(e,t=IG)=>e.replace(/\s+/g," ").trim().slice(0,t),ZM=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)}},DG=e=>{let t=e.tool_calls;return t?Array.isArray(t)?t.map(r=>({name:r.function?.name||r.name||e.tool_name,args:ZM(r.function?.arguments??r.arguments??r.input)})):[{name:e.tool_name,args:ZM(t)}]:[]},jG=e=>!!(e&&String(e).trim()&&String(e).trim()!=="\u2014"),ywe=e=>{let t=(e||[]).filter(Boolean),r=new Map,n=new Set;return t.forEach((o,a)=>{if(o.role!=="assistant"||jG(o.content))return;let i=DG(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))},PG=e=>hwe.includes(e.role)&&typeof e.content=="string"&&Kx(e.content).length>=IG,vwe=({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}}))},IC=e=>({background:e?"rgba(0,0,0,0.35)":"#f3f4f6",color:e?"#ffffff":"#111827",borderRadius:"6px",padding:"8px 10px",fontSize:"12px",overflowX:"auto",margin:0}),Mn=(e,t)=>{switch(e){case"user":return t?{background:"rgba(59,130,246,0.15)",color:"#93c5fd",label:"User"}:{background:"#eff6ff",color:"#1d4ed8",label:"User"};case"assistant":return t?{background:"rgba(239,68,68,0.12)",color:"#fca5a5",label:"Assistant"}:{background:"#fef2f2",color:"#b91c1c",label:"Assistant"};case"tool":return t?{background:"rgba(245,158,11,0.12)",color:"#fcd34d",label:"Tool"}:{background:"#fffbeb",color:"#b45309",label:"Tool"};case"system":return t?{background:"rgba(139,92,246,0.15)",color:"#c4b5fd",label:"System"}:{background:"#f5f3ff",color:"#6d28d9",label:"System"};case"developer":return t?{background:"rgba(20,184,166,0.15)",color:"#5eead4",label:"Dev"}:{background:"#f0fdfa",color:"#0f766e",label:"Dev"};default:return t?{background:"rgba(255,255,255,0.08)",color:"rgba(255,255,255,0.7)",label:e}:{background:"#f3f4f6",color:"#374151",label:e}}},MG={image:"IMG",document:"PDF",text:"TXT",file:"FILE"};function DC({attachments:e,darkMode:t,testId:r,onRemove:n,removeTestId:o}){let a=(e||[]).filter(Boolean);if(a.length===0)return null;let i=Wi(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/"))&&NG(s.url),d=EG(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}},MG[s.kind]||MG.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 $G=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},xwe=(e,t)=>{let r=Rg(e);if(r)return r;let n=t.find(o=>o&&o.role==="assistant"&&(e.tool_call_id?$G(o).has(e.tool_call_id):Rg(o)));return n?Rg(n,{callId:e.tool_call_id}):null},bwe=(e,t)=>{let r=$G(e);return t.some(n=>n&&n.role==="tool"&&n.tool_name===Fp&&(!n.tool_call_id||r.size===0||r.has(n.tool_call_id)))};function us({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=ywe(e);return Le.default.createElement("div",{className:"space-y-3"},k.map(A=>{let C=Mn(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===Fp?xwe(A,k):null,F=A.role==="assistant"&&!I?WM(A.content):null,N=A.role==="assistant"&&!bwe(A,k)?Rg(A):null,O=PG(A)&&!E,j=gwe(A)||PG(A),T=qx(A.tool_arguments),D=qx(A.tool_result)||qx(A.content),M=A.tool_calls&&(!Array.isArray(A.tool_calls)||A.tool_calls.length>0)?qx(A.tool_calls):null,q=A.role==="tool"?mwe(A):null,V=A.tool_name?(r||[]).find(R=>R&&R.name===A.tool_name):null,L=A.role==="tool"?ZM(A.tool_arguments):null,G=A.role==="tool"&&!!L,W=Mn("assistant",t),ie=Mn("tool",t),Me=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(te=>te.id&&te.id===A.tool_call_id))),he=A.role==="assistant"&&!jG(A.content)?DG(A):[],ce=IC(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(ml,{blocks:$,onAction:n,darkMode:t})):A.role==="tool"?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},L&&!Me&&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:")," ",Kx(L,180),L.length>180?"\u2026":""),q?Le.default.createElement("span",null,A.tool_name&&!(L&&!Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(L||Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:G?ie.color:g.textMuted}},"out:"),q.meta&&Le.default.createElement("span",{className:"font-mono text-xs mr-2",style:{color:g.textMuted}},q.meta),"\u201C",q.body.replace(/\s+/g," ").trim().slice(0,180),q.body.length>180?"\u2026":"","\u201D"):A.content?Le.default.createElement("span",null,A.tool_name&&!(L&&!Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:ie.color}},"\u2699 ",A.tool_name),(L||Me)&&Le.default.createElement("span",{className:"font-mono text-xs mr-1",style:{color:G?ie.color:g.textMuted}},"out:"),"\u201C",Kx(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}},Kx(A.content),"\u2026"):he.length>0?Le.default.createElement("span",{style:{display:"grid",gap:"2px"}},he.map((R,te)=>Le.default.createElement("span",{key:te,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,Kx(R.args,180),R.args.length>180?"\u2026":""):"\u2014"))):F&&F.blocks?Le.default.createElement(ml,{blocks:F.blocks,onAction:n,darkMode:t}):F&&F.object?Le.default.createElement(ml,{blocks:[{type:"object",value:F.object}],darkMode:t}):Le.default.createElement(js,{text:A.content||"\u2014",darkMode:t,onUiAction:n}),N&&!I&&Le.default.createElement("div",{className:"mt-2"},Le.default.createElement(ml,{blocks:N,onAction:n,darkMode:t})),A.role==="user"&&Le.default.createElement(DC,{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,TG(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(vwe,{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 ",TG(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)),q?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(q.rest).length>0&&Le.default.createElement("pre",{style:ce},JSON.stringify(q.rest,null,2)),Le.default.createElement("div",{className:"text-xs uppercase tracking-wide mt-2 mb-1",style:{color:g.textMuted}},q.field," \xB7 ",q.body.length.toLocaleString()," chars"),Le.default.createElement("pre",{style:{...ce,whiteSpace:"pre-wrap",maxHeight:"320px",overflowY:"auto"}},q.body.slice(0,8e3),q.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(YM,{tool:V,darkMode:t}))))}))}var or=Z(J());var an=Z(J());var Kn=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"}),LG=(e,t=200)=>{let r=String(e??"").replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t)}\u2026`:r};function Wp({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:Kn(t).textMuted,...n},"aria-hidden":"true"},an.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))}function jC({darkMode:e,id:t,children:r,style:n,className:o=""}){let a=Kn(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 Zc({cells:e,darkMode:t,gap:r=16,className:n="",style:o}){let a=Kn(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 zG=(e,{wrap:t=!0,maxHeight:r=320}={})=>({background:Kn(e).preBg,borderRadius:"6px",padding:"6px 8px",margin:"2px 0 4px 0",overflowX:"auto",overflowY:"auto",maxHeight:`${r}px`,whiteSpace:t?"pre-wrap":"pre"}),wwe=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 rh({lines:e,darkMode:t,onClick:r,indent:n=0,size:o="12px",style:a,max:i=200,hold:s=!1}){let[l,u]=nh(),c=Kn(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=wwe(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"):LG(g,x))),y&&an.default.createElement("pre",{onClick:S=>S.stopPropagation(),style:zG(t,{wrap:!v.json})},v.text))})):null}function Vx({options:e,value:t,onChange:r,darkMode:n,label:o,style:a}){let i=Kn(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 BG({label:e,body:t,open:r,onToggle:n,darkMode:o,prose:a=!1,max:i=140}){let s=Kn(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}},LG(t,i))),r&&an.default.createElement("pre",{onClick:l=>l.stopPropagation(),style:zG(o,{wrap:a})},t))}function nh(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 JM={root:"#9ca3af",prompt:"#60a5fa",generate:"#a855f7",llm:"#ef4444",thinking:"#fbbf24",tool:"#22c55e",response:"#2dd4bf",embedding:"#818cf8"},UG=[{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"}],Vn=e=>e==null?"\u2014":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`,QM=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"-"}},Swe=(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))},kwe=(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))}},_we=e=>{let t=e.tokens||{};return(t.input||0)+(t.output||0)+(t.thinking||0)},Cwe=(e,t)=>{if(!t.duration_ms)return Vn(e.duration);let r=(e.duration||0)/t.duration_ms*100;return`${Vn(e.duration)} \xB7 ${r<1?r.toFixed(2):r.toFixed(1)}%`},Awe=e=>{if(typeof e!="string")return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return null}},FG=e=>e.endsWith(".instructions")?0:e.endsWith(".tools")?1:e.endsWith(".messages")?3:2,RM=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}},Ewe=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}},Nwe=(e,t)=>{let r=Ewe(e),n=RM(t);return r.input&&r.input===n.input&&(r.input=null),r.output&&r.output===n.output&&(r.output=null),r},Twe=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}},eI=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 Owe({span:e,darkMode:t,tools:r=[]}){let[n,o]=nh(),a=Kn(t),{messages:i,rest:s}=Twe(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)=>FG(f[0])-FG(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: ",Vn(e.duration)),or.default.createElement("span",null,"status: ",e.status||"OK"),_we(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:Mn("tool",t).color}},"\u2699 ",d.tool_name),p&&or.default.createElement(or.default.Fragment,null," ",or.default.createElement("span",{style:{color:Mn("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:Mn("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(us,{messages:i,darkMode:t,tools:l||r})),l&&or.default.createElement(XM,{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/)?Awe(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(BG,{key:f,label:f,body:h,prose:!y,darkMode:t,open:n(g),onToggle:()=>o(g)})})))}function Pwe({span:e,trace:t,darkMode:r,sort:n,longest:o,expanded:a,onToggle:i,tools:s}){let l=Kn(r),u=Object.keys(e.attributes||{}).length>0,c=a?null:Nwe(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}},QM(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}},Cwe(e,t)),u&&or.default.createElement(Wp,{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":JM[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}%`:`${Swe(e.duration,o)}%`}})),c&&or.default.createElement(rh,{darkMode:r,size:"11px",style:{marginTop:"2px"},lines:[{label:c.inputLabel,text:c.input,color:Mn(c.inputTone,r).color,max:160},{label:c.outputLabel,text:c.output,color:Mn(c.outputTone,r).color,max:160}]})),a&&or.default.createElement(Owe,{span:e,darkMode:r,tools:s}))}function tI({trace:e,darkMode:t,sort:r="time",tools:n,keyPrefix:o=""}){let[a,i]=nh(),s=Kn(t),l=kwe(e?.spans,r),u=n||eI(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(Pwe,{key:f,span:d,trace:e,darkMode:t,sort:r,longest:c,tools:u,expanded:a(f),onToggle:()=>i(f)})}))}var Mwe=[{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"}],Iwe=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 Dwe({trace:e,darkMode:t}){let r=Kn(t),{generation:n,tools:o,toolTotal:a,total:i,overhead:s}=Iwe(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)=>bt.default.createElement("div",{style:{width:`${Math.max(c/i*100,.4)}%`,background:d,height:"100%"}});return bt.default.createElement("div",{style:{marginTop:"14px",paddingTop:"12px",borderTop:`1px solid ${r.cardBorder}`}},bt.default.createElement("div",{style:{fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em",color:r.textSecondary,marginBottom:"6px"}},"Time breakdown \u2014 generation vs tools"),bt.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")),bt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px 18px",marginTop:"8px",fontSize:"12px",fontFamily:Pt.mono,color:r.textBody}},bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:"#ef4444"}},"\u25A0")," generation ",Vn(n)," (",l(n),")"),bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:"#10b981"}},"\u25A0")," tools ",Vn(a)," (",l(a),")"),s>0&&bt.default.createElement("span",null,bt.default.createElement("span",{style:{color:r.textSecondary}},"\u25A0")," overhead ",Vn(s)," (",l(s),")")),o.length>0&&bt.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)=>bt.default.createElement("span",{key:d},c.name," ",Vn(c.duration)," (",l(c.duration||0),")"))))}function jwe({trace:e,darkMode:t}){let[r,n]=(0,bt.useState)(null),[o,a]=(0,bt.useState)(!1),i=Kn(t);if((0,bt.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 bt.default.createElement("div",{className:"text-sm py-4",style:{color:i.bad}},"Couldn't load the conversation for this trace.");if(!r)return bt.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?bt.default.createElement("div",{className:"text-sm py-4",style:{color:i.textMuted}},"This trace predates content capture \u2014 no conversation to show."):bt.default.createElement(us,{messages:s,darkMode:t,tools:eI(e)})}function Gx({trace:e,darkMode:t,compact:r=!1,showConversation:n=!0}){let[o,a]=(0,bt.useState)("spans"),[i,s]=(0,bt.useState)("time"),l=Kn(t),u=(e?.spans||[]).length,c=TC(e),d=e?.tokens||{},p=(0,bt.useCallback)(f=>a(n?f:"spans"),[n]);return e?bt.default.createElement("div",null,bt.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2 mb-2"},bt.default.createElement("div",{className:"flex items-center gap-1"},n&&bt.default.createElement(Vx,{options:Mwe,value:o,onChange:p,darkMode:t}),bt.default.createElement("span",{className:"text-xs ml-2",style:{color:l.textSecondary}},u," ",u===1?"span":"spans")),o==="spans"&&u>0&&bt.default.createElement(Vx,{options:UG,value:i,onChange:s,darkMode:t,label:"Sort"})),o==="conversation"?bt.default.createElement("div",{className:"rounded-lg border p-4",style:{background:l.cardBg,borderColor:l.cardBorder}},bt.default.createElement(jwe,{trace:e,darkMode:t})):bt.default.createElement(bt.default.Fragment,null,i==="time"?bt.default.createElement("div",{className:"flex justify-between text-xs mb-2",style:{color:l.textMuted}},bt.default.createElement("span",null,"0ms"),bt.default.createElement("span",null,Math.round((e.duration_ms||0)*.33),"ms"),bt.default.createElement("span",null,Math.round((e.duration_ms||0)*.66),"ms"),bt.default.createElement("span",null,Vn(e.duration_ms))):bt.default.createElement("div",{className:"text-xs mb-2",style:{color:l.textMuted}},"Bar length compares duration on a log scale"),bt.default.createElement(tI,{trace:e,darkMode:t,sort:i,keyPrefix:`${e.id||e.trace_id}:`})),c&&bt.default.createElement("div",{className:"mt-3"},bt.default.createElement(Xc,{...c,label:"Context pressure",darkMode:t})),bt.default.createElement(Dwe,{trace:e,darkMode:t}),!r&&bt.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}},bt.default.createElement("span",null,"Tokens:"),d.thinking>0&&bt.default.createElement("span",{className:"text-amber-500",style:{fontFamily:Pt.mono}},"T:",d.thinking.toLocaleString()),bt.default.createElement("span",{className:"text-blue-500",style:{fontFamily:Pt.mono}},"in:",(d.input||0).toLocaleString()),bt.default.createElement("span",{className:"text-green-500",style:{fontFamily:Pt.mono}},"out:",(d.output||0).toLocaleString()),e.provider&&bt.default.createElement("span",{style:{fontFamily:Pt.mono}},e.provider,e.model?` \xB7 ${e.model}`:"")),e.error&&bt.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"}},bt.default.createElement("span",{className:"text-sm",style:{color:t?"#fca5a5":"#b91c1c"}},e.error))):null}var $we=e=>{let t=(e?.input||0)+(e?.output||0)+(e?.thinking||0);return t?t>=1e3?`${(t/1e3).toFixed(1)}K`:`${t}`:null},Lwe=e=>e==null?null:`$${e.toFixed(4)}`;function $C({trace:e,darkMode:t,expanded:r,onToggle:n}){let o=Kn(t),a=RM(e),i=TC(e),s=e.status!=="ERROR",l=$we(e.tokens);return In.default.createElement(jC,{darkMode:t,id:`trace-row-${e.id}`},In.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},In.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},In.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"),In.default.createElement("span",{className:"text-sm flex-shrink-0",style:{fontFamily:Pt.mono,color:o.textMuted}},e.short_id),In.default.createElement("span",{className:"text-sm font-medium truncate",style:{color:o.textPrimary}},e.display_name)),In.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},In.default.createElement(Zc,{darkMode:t,cells:[{key:"model",title:"Model that generated this trace",empty:"No model recorded for this trace",content:e.model&&In.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&&In.default.createElement(Xc,{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&&In.default.createElement(In.default.Fragment,null,In.default.createElement("i",{className:"fa-solid fa-clock mr-1"}),Vn(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&&In.default.createElement(In.default.Fragment,null,In.default.createElement("i",{className:"fa-solid fa-coins mr-1"}),Lwe(e.estimated_cost))},{key:"status",width:Ea.status,title:s?"Trace completed":e.error||"Trace ended in an error",content:In.default.createElement("span",{style:{color:s?o.good:o.bad}},In.default.createElement("i",{className:`fa-solid ${s?"fa-check":"fa-xmark"} mr-1`}),s?"OK":"ERROR")}]}),In.default.createElement(Wp,{open:r,darkMode:t}))),!r&&In.default.createElement(rh,{darkMode:t,onClick:n,hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:a.input,color:Mn("user",t).color},{label:"output",text:a.output,color:Mn("assistant",t).color}]}),r&&In.default.createElement("div",{className:"border-t p-4",style:{borderColor:o.cardBorder,background:o.innerBg}},In.default.createElement(Gx,{trace:e,darkMode:t})))}function WG(e,t=""){return`${(e||"").replace(/\/$/,"")}${t}`||"/"}function HG(e,t){let r=(e||"").replace(/\/$/,"");return r&&(t===r||t.startsWith(`${r}/`))?t.slice(r.length)||"/":t}function et(e=""){return WG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function Jc(e="",t={}){window.history.pushState(t,"",et(e))}function Gn(e=window.location.pathname){return HG(window.ACTIVE_AGENT_DASHBOARD?.mountPath,e)}function lt(e,t={}){if(!e)return;let r=Gn(e);Jc(r,t),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:et(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 KG=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],zwe=3e4,Bwe=e=>{let t={};return e.forEach((r,n)=>{t[r]=KG[n%KG.length]}),t},Fwe=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)},Uwe=(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 Hp({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,H.useState)([]),[a,i]=(0,H.useState)([]),[s,l]=(0,H.useState)({}),[u,c]=(0,H.useState)(!0),[d,p]=(0,H.useState)(null),[f,m]=(0,H.useState)(null),y=(0,H.useRef)(new URLSearchParams(window.location.search).get("trace")),[x,h]=(0,H.useState)(null),[g,v]=(0,H.useState)({status:"all",agent:"all",action:"all"}),[b,S]=(0,H.useState)("time"),[w,_]=(0,H.useState)(null),[k,A]=(0,H.useState)("timeline"),[C,E]=(0,H.useState)("popular"),{timeWindow:I}=pl(),Q=(0,H.useCallback)(async()=>{try{let z=await fetch(qG({minutes:I.minutes,agentId:e}));if(!z.ok)throw new Error(`Request failed (${z.status})`);let ee=await z.json();o(ee.traces||[]),i(ee.agents||[]),l(ee.agent_ids||{}),p(null)}catch(z){p(z.message)}finally{c(!1)}},[I.minutes,e]);(0,H.useEffect)(()=>{Q();let z=setInterval(Q,zwe);return()=>clearInterval(z)},[Q]);let $=(0,H.useMemo)(()=>Bwe(a),[a]);(0,H.useEffect)(()=>{_(null)},[I.id]);let F=(0,H.useMemo)(()=>Uwe(n,a,I.minutes,I.bucketSeconds),[n,a,I]),N=Math.max(0,Math.ceil(F.length/6)-1),O=(0,H.useMemo)(()=>{let z=n;if(w!==null){let ee=F[w];ee&&(z=ee.traces||[])}if(g.status!=="all"&&(z=z.filter(ee=>g.status==="success"?ee.status!=="ERROR":ee.status==="ERROR")),g.agent!=="all"&&(z=z.filter(ee=>ee.agent===g.agent)),g.action!=="all")if(g.action.includes("#")){let[ee,U]=g.action.split("#");z=z.filter(P=>P.agent===ee&&P.action===U)}else z=z.filter(ee=>ee.action===g.action);return b==="latency"&&(z=[...z].sort((ee,U)=>(U.duration_ms||0)-(ee.duration_ms||0))),x&&!z.some(ee=>ee.id===x.id)&&(z=[x,...z]),z},[n,w,F,g,b,x]);(0,H.useEffect)(()=>{let z=y.current;if(!z)return;let ee=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){ee(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),ee(P)}).catch(()=>{y.current=null})},[n]);let j=(0,H.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,ee={};z.forEach(P=>{P.agent&&(ee[P.agent]||(ee[P.agent]={agent:P.agent,count:0,totalDuration:0,cost:0,errors:0,actions:{},tokens:{thinking:0,input:0,output:0}}),ee[P.agent].count++,ee[P.agent].totalDuration+=P.duration_ms||0,ee[P.agent].cost+=P.estimated_cost||0,P.status==="ERROR"&&ee[P.agent].errors++,P.tokens&&(ee[P.agent].tokens.thinking+=P.tokens.thinking||0,ee[P.agent].tokens.input+=P.tokens.input||0,ee[P.agent].tokens.output+=P.tokens.output||0),P.action&&(ee[P.agent].actions[P.action]=(ee[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(ee).sort((P,Y)=>U(Y)-U(P)||Y.count-P.count)},[n,F,w,C]),T=(0,H.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,ee={};return z.forEach(U=>{if(!U.agent)return;let P=`${U.agent}#${U.action||"unknown"}`;ee[P]||(ee[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}}),ee[P].count++,ee[P].totalDuration+=U.duration_ms||0,ee[P].minDuration=Math.min(ee[P].minDuration,U.duration_ms||0),ee[P].maxDuration=Math.max(ee[P].maxDuration,U.duration_ms||0),U.status==="ERROR"&&ee[P].errors++,U.tokens&&(ee[P].tokens.thinking+=U.tokens.thinking||0,ee[P].tokens.input+=U.tokens.input||0,ee[P].tokens.output+=U.tokens.output||0)}),Object.values(ee).forEach(U=>{U.minDuration===1/0&&(U.minDuration=0)}),Object.values(ee).sort((U,P)=>P.count-U.count)},[n,F,w]),D=(0,H.useMemo)(()=>{let z=w!==null?F[w]?.traces||[]:n,ee={};return z.forEach(U=>{(U.spans||[]).forEach(P=>{if(P.type!=="tool")return;let Y=P.attributes?.["tool.name"]||P.name?.replace(/^tool\./,"")||"unknown";ee[Y]||(ee[Y]={name:Y,count:0,totalDuration:0,maxDuration:0,errors:0,agents:new Set}),ee[Y].count++,ee[Y].totalDuration+=P.duration||0,ee[Y].maxDuration=Math.max(ee[Y].maxDuration,P.duration||0),P.error&&ee[Y].errors++,U.agent&&ee[Y].agents.add(`${U.agent}#${U.action||"unknown"}`)})}),Object.values(ee).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,H.useMemo)(()=>g.agent==="all"?T.map(z=>z.key):T.filter(z=>z.agent===g.agent).map(z=>z.key),[g.agent,T]),q=(0,H.useMemo)(()=>Fwe(O),[O]),V=z=>{if(z&&z.activeTooltipIndex!==void 0){let ee=z.activeTooltipIndex;_(w===ee?null:ee),m(null)}},L=z=>(z?.input||0)+(z?.output||0)+(z?.thinking||0),G=z=>{let ee=z.count?z.errors/z.count:0;return[{label:`Calls ${I.label||""}`.trim(),value:z.count.toLocaleString()},{label:"Errors",value:`${(ee*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=H.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:"8px",marginBottom:"12px"}},H.default.createElement("span",{style:{fontSize:"12px",color:r?"rgba(255,255,255,0.5)":"#6b7280"}},"Rank by"),H.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"}},H.default.createElement("option",{value:"popular"},"Most calls"),H.default.createElement("option",{value:"longest"},"Longest average"),H.default.createElement("option",{value:"cost"},"Highest cost"),H.default.createElement("option",{value:"tokens"},"Most tokens"),H.default.createElement("option",{value:"errors"},"Most errors"))),Me=z=>v(ee=>({...ee,agent:ee.agent===z?"all":z})),he=z=>{let ee=s[z];if(!ee)return Me(z);let U=et(`/agents/${ee}`);window.history.pushState(window.history.state,"",U),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:U}}))},ce=z=>{let ee=q[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 H.default.createElement("div",{style:{padding:z?"0 24px 24px 24px":0}},H.default.createElement("div",{style:{background:U,border:P,borderRadius:"12px",padding:"16px"}},H.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:Y,marginBottom:"4px"}},"Slowest operations"),H.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"),q.length===0?H.default.createElement("div",{style:{fontSize:"13px",color:B,padding:"12px 0"}},"No spans in the current selection"):H.default.createElement("div",{style:{display:"grid",gap:"10px"}},q.map(ne=>H.default.createElement("div",{key:ne.name,style:{display:"flex",alignItems:"center",gap:"12px"}},H.default.createElement("div",{style:{width:"220px",flexShrink:0,display:"flex",alignItems:"center",gap:"8px"}},H.default.createElement("span",{style:{color:B}},QM(ne.type)),H.default.createElement("span",{style:{fontSize:"13px",color:ne.errors>0?"#ef4444":Y,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},ne.name)),H.default.createElement("div",{style:{flex:1,height:"18px",background:z?"rgba(255,255,255,0.06)":"#f3f4f6",borderRadius:"4px",position:"relative"}},H.default.createElement("div",{style:{position:"absolute",top:"3px",left:0,height:"12px",borderRadius:"3px",width:`${Math.max(ne.total/ee*100,.5)}%`,background:se[ne.type]||"#6366f1"}})),H.default.createElement("div",{style:{width:"260px",flexShrink:0,fontSize:"12px",color:B,fontFamily:Pt.mono,textAlign:"right"}},ne.count,"\xD7 \xB7 avg ",Vn(ne.avg)," \xB7 max ",Vn(ne.max)," \xB7 \u03A3 ",Vn(ne.total)))))))};if(u)return H.default.createElement("div",{className:"flex items-center justify-center h-64"},H.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let R={requests:F.reduce((z,ee)=>z+ee.requests,0),errors:F.reduce((z,ee)=>z+ee.errors,0),avgLatency:(()=>{let z=F.filter(ee=>ee.requests>0);return z.length===0?0:Math.round(z.reduce((ee,U)=>ee+U.avgLatency,0)/z.length)})(),throughput:(F.reduce((z,ee)=>z+ee.requests,0)/I.minutes).toFixed(1)},te=n.length===0;return r?H.default.createElement("div",{className:"preview-content",style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)"}},H.default.createElement("div",{style:{padding:"24px 24px 0 24px",borderBottom:"1px solid rgba(255,255,255,0.1)",marginBottom:"16px",paddingBottom:"16px"}},H.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},H.default.createElement("div",null,!t&&H.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:"white",margin:0}},"Traces"),H.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`)),H.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},H.default.createElement("div",{style:{display:"flex",background:"rgba(255,255,255,0.1)",borderRadius:"8px",padding:"2px"}},["timeline","agents","actions","tools","spans"].map(z=>H.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&&H.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"}},H.default.createElement("option",{value:"all"},"All Agents"),a.map(z=>H.default.createElement("option",{key:z,value:z},z))),H.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"}},H.default.createElement("option",{value:"all"},"All Actions"),M.map(z=>H.default.createElement("option",{key:z,value:z},z))),H.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"}},H.default.createElement("option",{value:"all"},"All Status"),H.default.createElement("option",{value:"success"},"Success"),H.default.createElement("option",{value:"error"},"Error")),H.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"}},H.default.createElement("option",{value:"time"},"Newest first"),H.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&H.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&&H.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),H.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},H.default.createElement("div",{style:{background:"rgba(0,0,0,0.3)",borderRadius:"12px",padding:"16px",border:"1px solid rgba(255,255,255,0.1)"}},H.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"}},H.default.createElement("div",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},"Agent Requests / Minute"),H.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},Object.entries($).map(([z,ee])=>H.default.createElement("div",{key:z,style:{display:"flex",alignItems:"center",gap:"6px"}},H.default.createElement("div",{style:{width:"10px",height:"10px",borderRadius:"2px",background:ee}}),H.default.createElement("span",{style:{fontSize:"11px",color:"rgba(255,255,255,0.7)"}},z.replace("Agent","")))))),H.default.createElement("div",{style:{height:"150px"}},H.default.createElement(hc,{width:"100%",height:"100%"},H.default.createElement(Gc,{data:F,onClick:V,style:{cursor:"pointer"}},H.default.createElement("defs",null,Object.entries($).map(([z,ee])=>H.default.createElement("linearGradient",{key:z,id:`gradient-${z}`,x1:"0",y1:"0",x2:"0",y2:"1"},H.default.createElement("stop",{offset:"5%",stopColor:ee,stopOpacity:.8}),H.default.createElement("stop",{offset:"95%",stopColor:ee,stopOpacity:.1})))),H.default.createElement(yu,{strokeDasharray:"3 3",stroke:"rgba(255,255,255,0.1)"}),H.default.createElement(wu,{dataKey:"time",stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,interval:N}),H.default.createElement(ku,{stroke:"rgba(255,255,255,0.5)",tick:{fontSize:10,fill:"rgba(255,255,255,0.5)"},tickLine:!1,axisLine:!1,allowDecimals:!1}),H.default.createElement(Ic,{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,ee)=>[z,ee.replace("Agent","")]}),Object.keys($).map(z=>H.default.createElement(xu,{key:z,type:"monotone",dataKey:z,stackId:"1",stroke:$[z],fill:`url(#gradient-${z})`}))))),H.default.createElement("div",{style:{display:"flex",gap:"24px",marginTop:"12px",paddingTop:"12px",borderTop:"1px solid rgba(255,255,255,0.1)"}},H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"white"}},R.requests),H.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Total Requests")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#ef4444"}},R.errors),H.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Errors")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#10b981"}},R.avgLatency,"ms"),H.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Avg Latency")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"20px",fontWeight:"700",color:"#f59e0b"}},R.throughput,"/min"),H.default.createElement("div",{style:{fontSize:"11px",color:"rgba(255,255,255,0.5)"}},"Throughput"))))),k==="agents"&&H.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},ie,H.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(280px, 1fr))",gap:"16px"}},j.map(z=>H.default.createElement(vm,{key:z.agent,name:z.agent,accentColor:$[z.agent],subtitle:z.agents?.length?z.agents.join(", "):void 0,badge:H.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[z.agent]+"30",color:$[z.agent],borderRadius:"4px",whiteSpace:"nowrap"}},z.count," calls"),onClick:()=>he(z.agent),stats:G(z),footer:H.default.createElement(H.default.Fragment,null,H.default.createElement("span",null,s[z.agent]?"Open agent \u2192":"Not linked to an agent record"),H.default.createElement("button",{onClick:ee=>{ee.stopPropagation(),Me(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"&&H.default.createElement("div",{style:{padding:"0 24px",marginBottom:"24px"}},H.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:"12px"}},T.map(z=>{let ee=g.action===z.key;return H.default.createElement("div",{key:z.key,onClick:()=>{v({...g,action:ee?"all":z.key}),A("timeline")},style:{background:ee?"rgba(239, 68, 68, 0.15)":"rgba(0,0,0,0.3)",borderRadius:"10px",padding:"14px",border:ee?"1px solid #ef4444":`1px solid ${$[z.agent]}30`,cursor:"pointer",transition:"all 0.15s"}},H.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"10px"}},H.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},H.default.createElement("div",{style:{width:"6px",height:"6px",borderRadius:"50%",background:$[z.agent]}}),H.default.createElement("span",{style:{fontSize:"14px",fontWeight:"600",color:"white"}},z.agent),H.default.createElement("span",{style:{fontSize:"13px",color:"rgba(255,255,255,0.7)"}},"#",z.action)),H.default.createElement("span",{style:{fontSize:"12px",padding:"2px 8px",background:$[z.agent]+"30",color:$[z.agent],borderRadius:"4px"}},z.count," calls")),H.default.createElement("div",{style:{display:"flex",gap:"16px",flexWrap:"wrap"}},H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Avg"),H.default.createElement("div",{style:{fontSize:"13px",color:"white",fontWeight:"500"}},Math.round(z.totalDuration/z.count),"ms")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Min/Max"),H.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},Math.round(z.minDuration),"ms / ",Math.round(z.maxDuration),"ms")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Errors"),H.default.createElement("div",{style:{fontSize:"13px",color:z.errors>0?"#ef4444":"#10b981"}},z.errors," (",(z.errors/z.count*100).toFixed(0),"%)")),H.default.createElement("div",null,H.default.createElement("div",{style:{fontSize:"10px",color:"rgba(255,255,255,0.5)"}},"Tokens"),H.default.createElement("div",{style:{fontSize:"13px",color:"rgba(255,255,255,0.8)"}},L(z.tokens).toLocaleString()))))}))),k==="spans"&&ce(!0),k==="timeline"&&!te&&H.default.createElement("div",{className:"space-y-4"},O.length===0?H.default.createElement("div",{style:{textAlign:"center",padding:"32px",color:"rgba(255,255,255,0.5)",fontSize:"14px"}},"No traces match filters"):O.map(z=>H.default.createElement($C,{key:z.id,trace:z,darkMode:!0,expanded:f===z.id,onToggle:()=>m(f===z.id?null:z.id)}))),te&&k==="timeline"&&H.default.createElement("div",{style:{textAlign:"center",padding:"48px 0"}},H.default.createElement("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:"18px"}},"No traces yet"),H.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"))):H.default.createElement("div",{className:"space-y-6"},H.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},H.default.createElement("div",null,H.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Traces"),H.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`)),H.default.createElement("div",{className:"flex items-center space-x-3 flex-wrap gap-y-2 min-w-0"},H.default.createElement(fl,null),H.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},["timeline","agents","actions","tools","spans"].map(z=>H.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))),H.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"}},H.default.createElement("option",{value:"all"},"All Agents"),a.map(z=>H.default.createElement("option",{key:z,value:z},z))),H.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"}},H.default.createElement("option",{value:"all"},"All Actions"),M.map(z=>H.default.createElement("option",{key:z,value:z},z))),H.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"},H.default.createElement("option",{value:"all"},"All Status"),H.default.createElement("option",{value:"success"},"Success"),H.default.createElement("option",{value:"error"},"Error")),H.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"},H.default.createElement("option",{value:"time"},"Newest first"),H.default.createElement("option",{value:"latency"},"Slowest first")),w!==null&&H.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&&H.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),H.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},H.default.createElement("div",{className:"flex justify-between items-center mb-3"},H.default.createElement("h3",{className:"text-sm font-semibold text-gray-700"},"Agent Requests / Minute"),H.default.createElement("div",{className:"flex gap-4 flex-wrap"},Object.entries($).map(([z,ee])=>H.default.createElement("div",{key:z,className:"flex items-center gap-1.5"},H.default.createElement("div",{className:"w-2.5 h-2.5 rounded-sm",style:{background:ee}}),H.default.createElement("span",{className:"text-xs text-gray-500"},z.replace("Agent","")))))),H.default.createElement("div",{className:"h-36"},H.default.createElement(hc,{width:"100%",height:"100%"},H.default.createElement(Gc,{data:F,onClick:V,style:{cursor:"pointer"}},H.default.createElement("defs",null,Object.entries($).map(([z,ee])=>H.default.createElement("linearGradient",{key:z,id:`gradient-light-${z}`,x1:"0",y1:"0",x2:"0",y2:"1"},H.default.createElement("stop",{offset:"5%",stopColor:ee,stopOpacity:.6}),H.default.createElement("stop",{offset:"95%",stopColor:ee,stopOpacity:.05})))),H.default.createElement(yu,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),H.default.createElement(wu,{dataKey:"time",stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,interval:N}),H.default.createElement(ku,{stroke:"#9ca3af",tick:{fontSize:10,fill:"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),H.default.createElement(Ic,{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,ee)=>[z,ee.replace("Agent","")]}),Object.keys($).map(z=>H.default.createElement(xu,{key:z,type:"monotone",dataKey:z,stackId:"1",stroke:$[z],fill:`url(#gradient-light-${z})`}))))),H.default.createElement("div",{className:"flex gap-6 mt-3 pt-3 border-t border-gray-100"},H.default.createElement("div",null,H.default.createElement("div",{className:"text-lg font-bold text-gray-900"},R.requests),H.default.createElement("div",{className:"text-xs text-gray-500"},"Total Requests")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-lg font-bold text-red-500"},R.errors),H.default.createElement("div",{className:"text-xs text-gray-500"},"Errors")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-lg font-bold text-green-600"},R.avgLatency,"ms"),H.default.createElement("div",{className:"text-xs text-gray-500"},"Avg Latency")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-lg font-bold text-amber-500"},R.throughput,"/min"),H.default.createElement("div",{className:"text-xs text-gray-500"},"Throughput")))),k==="agents"&&H.default.createElement("div",null,ie,H.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},j.map(z=>H.default.createElement(vm,{key:z.agent,name:z.agent,accentColor:$[z.agent],subtitle:z.agents?.length?z.agents.join(", "):void 0,badge:H.default.createElement("span",{className:"text-sm px-2 py-0.5 rounded",style:{background:$[z.agent]+"20",color:$[z.agent]}},z.count," calls"),onClick:()=>he(z.agent),stats:G(z),footer:H.default.createElement(H.default.Fragment,null,H.default.createElement("span",null,s[z.agent]?"Open agent \u2192":"Not linked to an agent record"),H.default.createElement("button",{onClick:ee=>{ee.stopPropagation(),Me(z.agent)},className:g.agent===z.agent?"text-red-600":"hover:text-gray-700"},g.agent===z.agent?"Clear filter":"Filter traces"))})))),k==="actions"&&H.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3"},T.map(z=>{let ee=g.action===z.key;return H.default.createElement("div",{key:z.key,onClick:()=>{v({...g,action:ee?"all":z.key}),A("timeline")},className:`rounded-xl p-4 cursor-pointer transition-all ${ee?"bg-red-50 border-2 border-red-500":"bg-white border border-gray-200 hover:border-gray-300"}`,style:{borderLeftColor:$[z.agent],borderLeftWidth:ee?"2px":"4px"}},H.default.createElement("div",{className:"flex items-center justify-between mb-3"},H.default.createElement("div",{className:"flex items-center gap-2"},H.default.createElement("div",{className:"w-2 h-2 rounded-full",style:{background:$[z.agent]}}),H.default.createElement("span",{className:"font-semibold text-gray-900"},z.agent),H.default.createElement("span",{className:"text-gray-500"},"#",z.action)),H.default.createElement("span",{className:"text-xs px-2 py-0.5 rounded",style:{background:$[z.agent]+"20",color:$[z.agent]}},z.count," calls")),H.default.createElement("div",{className:"flex flex-wrap gap-4 text-sm"},H.default.createElement("div",null,H.default.createElement("div",{className:"text-xs text-gray-500"},"Avg"),H.default.createElement("div",{className:"font-medium"},Math.round(z.totalDuration/z.count),"ms")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-xs text-gray-500"},"Min/Max"),H.default.createElement("div",{className:"text-gray-600"},Math.round(z.minDuration),"ms / ",Math.round(z.maxDuration),"ms")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-xs text-gray-500"},"Errors"),H.default.createElement("div",{className:z.errors>0?"text-red-600":"text-green-600"},z.errors," (",(z.errors/z.count*100).toFixed(0),"%)")),H.default.createElement("div",null,H.default.createElement("div",{className:"text-xs text-gray-500"},"Tokens"),H.default.createElement("div",{className:"text-gray-600"},L(z.tokens).toLocaleString()))))})),k==="tools"&&(D.length===0?H.default.createElement("div",{className:"text-center py-8 text-gray-500 text-sm"},"No tool calls in this window"):H.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},H.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"},H.default.createElement("div",{className:"flex-1"},"Tool"),H.default.createElement("div",{className:"w-20 text-right"},"Calls"),H.default.createElement("div",{className:"w-24 text-right"},"Total time"),H.default.createElement("div",{className:"w-20 text-right"},"Avg"),H.default.createElement("div",{className:"w-20 text-right"},"Slowest")),D.map(z=>{let ee=D[0].totalDuration?z.totalDuration/D[0].totalDuration*100:0;return H.default.createElement("div",{key:z.name,className:"px-4 py-2 border-b border-gray-50 last:border-0"},H.default.createElement("div",{className:"flex items-center gap-4 text-sm"},H.default.createElement("div",{className:"flex-1 min-w-0"},H.default.createElement("div",{className:"font-medium text-gray-900 truncate",title:z.name},z.name),z.agents.length>0&&H.default.createElement("div",{className:"text-xs text-gray-400 truncate",title:z.agents.join(", ")},z.agents.join(", "))),H.default.createElement("div",{className:"w-20 text-right text-gray-700",style:{fontFamily:Pt.mono}},z.count.toLocaleString(),z.errors>0&&H.default.createElement("span",{className:"text-red-600 ml-1",title:`${z.errors} failed`},"(",z.errors,")")),H.default.createElement("div",{className:"w-24 text-right text-gray-900 font-medium",style:{fontFamily:Pt.mono}},Vn(z.totalDuration)),H.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Vn(z.avgDuration)),H.default.createElement("div",{className:"w-20 text-right text-gray-500",style:{fontFamily:Pt.mono}},Vn(z.maxDuration))),H.default.createElement("div",{className:"h-1 bg-gray-100 rounded mt-1.5"},H.default.createElement("div",{className:"h-1 bg-green-500 rounded",style:{width:`${Math.max(ee,1)}%`}})))}))),k==="spans"&&ce(!1),k==="timeline"&&!te&&H.default.createElement("div",{className:"space-y-4"},O.length===0?H.default.createElement("div",{className:"text-center py-8 text-gray-500"},"No traces match filters"):O.map(z=>H.default.createElement($C,{key:z.id,trace:z,darkMode:!1,expanded:f===z.id,onToggle:()=>m(f===z.id?null:z.id)}))),te&&k==="timeline"&&H.default.createElement("div",{className:"text-center py-12"},H.default.createElement("div",{className:"text-gray-400 text-lg"},"No traces yet"),H.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 LC=Z(J());function rI({trace:e,darkMode:t,height:r=8}){let n=Kn(t);if(!e)return LC.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 LC.default.createElement("div",{style:{position:"relative",height:`${r}px`,borderRadius:"999px",background:n.trackBg,overflow:"hidden",flex:1}},i.map((s,l)=>LC.default.createElement("div",{key:s.span_id||l,title:`${s.name} \xB7 ${Vn(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":JM[s.type]||"#9ca3af"}})))}var $s=Z(J());var yr=Z(J());var Kr=Z(J());var K="var(--font-mono)",Au=e=>e>=1?"success":e>=.7?"warning":"error",yo={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)"}},Yx={object:"=",sample:"~",pass:Fo.success,fault:Fo.error,info:Fo.info,on:"[x]",off:"[ ]",link:Fo.arrow,chevron:Fo.chevronRight};function Za({kind:e="pass",open:t=!1,color:r,size:n=12,weight:o=700,style:a,title:i}){return e==="chevron"?Kr.default.createElement("span",{className:"aa-chevron","data-open":t?"true":"false",title:i,style:{fontFamily:K,fontSize:n,color:r||"var(--color-text-muted)",flexShrink:0,...a}},Yx.chevron):Kr.default.createElement("span",{title:i,style:{fontFamily:K,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}},Yx[e]||e)}function Ce({tone:e="muted",size:t=11,children:r,title:n,style:o,testId:a}){let i=yo[e]||yo.muted;return Kr.default.createElement("span",{"data-testid":a,title:n,style:{display:"inline-flex",alignItems:"center",padding:"2px 7px",borderRadius:4,fontFamily:K,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 Kr.default.createElement(a,{htmlFor:i,style:{fontFamily:K,fontSize:t,fontWeight:600,letterSpacing:n,textTransform:"uppercase",color:r,...o}},e)}function Dn({selected:e=!1,onClick:t,children:r,square:n=!1,mono:o=!1,disabled:a=!1,title:i,style:s,testId:l}){return Kr.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?K:"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 cs({options:e,value:t,onChange:r,style:n}){return Kr.default.createElement("div",{style:{display:"flex",gap:4,...n},role:"group"},e.map(o=>{let a=o.value===t;return Kr.default.createElement("button",{key:o.value,type:"button",onClick:()=>r(o.value),"aria-pressed":a,style:{padding:"6px 12px",borderRadius:8,cursor:"pointer",fontSize:13,fontWeight:500,background:"var(--color-card)",border:`1px solid ${a?"var(--color-accent-ui)":"var(--color-border)"}`,color:a?"var(--color-accent-ui)":"var(--color-text-cell)"}},o.label)}))}function fe({variant:e="secondary",size:t="md",children:r,onClick:n,disabled:o=!1,title:a,type:i="button",style:s,testId:l}){let c={padding:t==="sm"?"6px 12px":"8px 14px",borderRadius:8,cursor:o?"not-allowed":"pointer",fontSize:13,fontWeight:500,opacity:o?.5:1,whiteSpace:"nowrap",fontFamily:"inherit"},d={primary:{background:"var(--color-accent-ui)",color:"var(--color-on-accent)",border:"1px solid transparent"},secondary:{background:"transparent",color:"var(--color-text-cell)",border:"1px solid var(--color-border-strong)"},danger:{background:"transparent",color:"var(--color-error)",border:"1px solid transparent"},ghost:{background:"transparent",color:"var(--color-text-secondary)",border:"1px solid transparent"}};return Kr.default.createElement("button",{type:i,"data-testid":l,onClick:n,disabled:o,title:a,style:{...c,...d[e]||d.secondary,...s}},r)}function Be({children:e,padding:t=20,style:r,className:n,testId:o,...a}){return Kr.default.createElement("div",{"data-testid":o,className:n,style:{background:"var(--color-card)",border:"1px solid var(--color-border)",borderRadius:12,padding:t,...r},...a},e)}function oh({label:e,value:t,sub:r,valueColor:n,valueSize:o=32,testId:a}){return Kr.default.createElement(Be,{testId:a},Kr.default.createElement(We,{size:11,spacing:"0.05em"},e),Kr.default.createElement("div",{style:{marginTop:8,fontFamily:K,fontSize:o,fontWeight:700,lineHeight:1.1,color:n||"var(--color-text-primary)"}},t),r!=null&&Kr.default.createElement("div",{style:{marginTop:8,fontSize:13,color:"var(--color-text-secondary)"}},r))}function Qr({title:e,meta:t,children:r,style:n,testId:o,bodyStyle:a}){return Kr.default.createElement("div",{"data-testid":o,style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"hidden",minWidth:0,...n}},(e||t)&&Kr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",background:"var(--color-muted)"}},e&&Kr.default.createElement(We,null,e),t&&Kr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},t)),Kr.default.createElement("div",{style:a},r))}function qp({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||yo[Au(u)].strong;return Kr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,...l}},r!=null&&Kr.default.createElement("span",{style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)",width:n,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:r},r),Kr.default.createElement("span",{style:{flex:o?void 0:1,width:o,height:a,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0}},Kr.default.createElement("span",{style:{display:"block",width:`${Math.round(u*100)}%`,height:"100%",borderRadius:999,background:c}})),Kr.default.createElement("span",{style:{fontFamily:K,fontSize:11,fontWeight:600,width:s,textAlign:"right",color:c}},e,"/",t))}function zC({parts:e=[],total:t=0,height:r=4,radius:n=2,style:o,testId:a,title:i,...s}){return Kr.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)=>Kr.default.createElement("span",{key:u,style:{width:`${t>0?100*(Number(l.value)||0)/t:0}%`,background:(yo[l.tone]||yo.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 Kr.default.createElement("a",{href:r,"data-testid":s,title:i,onClick:l=>{t&&(l.preventDefault(),t(l))},style:{fontFamily:K,fontSize:o,color:n,textDecoration:"none",...a}},e," ",Yx.link)}function Rr({children:e,style:t}){return Kr.default.createElement("div",{style:{padding:"20px 12px",fontFamily:K,fontSize:11,color:"var(--color-text-muted)",textAlign:"center",...t}},e)}var Eu=Z(J());var Wwe=/\/agents\/(\d+)/;function Ja(...e){return t=>e.some(r=>t.startsWith(r))?{}:null}function Hwe(e){return t=>t===e?{}:null}function Xx(e){return t=>e.test(t)?{agentId:t.match(Wwe)?.[1]}:null}function BC(e){return({agent:t})=>t?`/agents/${t.id}${e}`:""}var qwe=e=>e.assistantEnabled!==!1,Kwe=Xx(/\/agents\/\d+\/(interactions|history)/),Vwe=["recording","context","run","scenario_result"],Gwe=/^\/replay\/(?:(context|run|scenario_result)\/)?(\d+)\/?$/;function Ywe(e){let t=e.match(Gwe);return t?{sessionKind:t[1]||"recording",sessionId:t[2]}:null}var nI=[{view:"assistant",match:Hwe("/assistant"),path:"/assistant",enabled:qwe},{view:"traces",match:Ja("/traces"),path:"/traces"},{view:"metrics",match:Ja("/metrics"),path:"/metrics"},{view:"scenarios",match:Ja("/scenarios"),path:"/scenarios"},{view:"scenarios",match:e=>e.startsWith("/catalogs")?{replacePath:e.replace("/catalogs","/scenarios")}:null},{view:"interactions",match:Ja("/interactions"),path:"/interactions"},{view:"tools",match:Ja("/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:Ja("/evaluations"),path:"/evaluations"},{view:"analytics",match:Ja("/analytics"),path:"/analytics"},{view:"projects",match:Ja("/projects"),path:"/projects"},{view:"exploration",match:Ja("/explorations"),path:"/explorations"},{view:"builder",match:Ja("/agents/new"),path:"/agents/new"},{view:"history",match:e=>{let t=Kwe(e);return t&&e.includes("/history")&&(t.replacePath=e.replace("/history","/interactions")),t},path:BC("/interactions")},{view:"agent-analytics",match:Xx(/\/agents\/\d+\/analytics/),path:BC("/analytics")},{view:"editor",match:Xx(/\/agents\/\d+\/edit/),path:BC("/edit")},{view:"runner",match:Xx(/\/agents\/\d+\/run/),path:BC("/run")},{view:"history",match:Xx(/\/agents\/\d+\/?$/)},{view:"replay",match:Ywe},{view:"sessions",match:Ja("/sessions","/replay"),path:"/sessions"},{view:"sandbox",match:Ja("/sandbox","/demo"),path:"/sandbox"},{view:"organization",match:Ja("/organization"),path:"/organization"},{view:"settings",match:Ja("/settings"),path:"/settings"}],Xwe="list",VG=[{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 GG(e={}){return{assistantEnabled:e.assistantEnabled!==!1}}function Zx(e,t={}){return nI.every(r=>r.view!==e||!r.enabled||r.enabled(t))}function YG(e,t={}){for(let r of nI){if(r.enabled&&!r.enabled(t))continue;let n=r.match(e);if(n)return{view:r.view,...n}}return{view:Xwe}}function FC(e,{agent:t=null,features:r={}}={}){if(!Zx(e,r))return null;let n=nI.find(o=>o.view===e&&o.path!==void 0);return n&&(typeof n.path=="function"?n.path({agent:t}):n.path)||""}function XG(e){for(let t of VG){let r=t.items.find(n=>n.also?.includes(e));if(r)return r.view}return e}function ah(e,t){return!Vwe.includes(e)||!/^[1-9]\d*$/.test(String(t))?null:e==="recording"?`/replay/${t}`:`/replay/${e}/${t}`}function ZG(e={}){return VG.map(t=>({...t,items:t.items.filter(r=>Zx(r.view,e))}))}var oI="/api/input_requests",UC="action-agent:input-requests-changed",QG=3e4,JG=100,Zwe=["text","choice","confirm","secret"];function RG({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?`${oI}?${n}`:oI}function ih(e){return(Array.isArray(e)?e:[]).filter(t=>t&&t.status==="pending")}function eY(e){let t=ih(e).length;if(t!==0)return t>=JG?`${JG-1}+`:t}function aI(e){let t=e?.status;return t==="pending"||t==="running"?"poll":t==="awaiting_input"?ih(e.input_requests).length>0?"awaiting":"poll":"finished"}function iI(e){return Zwe.includes(e?.kind)?e.kind:null}function tY(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 rY(e){return e?.id==null?"answer":`answer-${e.id}`}function nY(e){switch(iI(e)){case"text":return[{type:"form",submit:"Answer",fields:[{name:rY(e),label:"Your answer",type:"textarea",required:!0}]}];case"choice":return[{type:"choices",options:tY(e).map(t=>t.label)}];default:return[]}}function oY(e,t){if(t?.kind==="form"){let r=t.values?.[rY(e)];return r==null?void 0:String(r)}if(t?.kind==="choice")return tY(e).find(r=>r.label===t.text)?.value}var Jwe={answered:"Already answered",declined:"Already declined",expired:"Expired before it was answered",cancelled:"Cancelled: the run ended"};function Qwe(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:Jwe[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 sI(e){return["answered","declined","closed"].includes(e?.state)}async function aY(e,{answer:t,decline:r=!1}={},n=globalThis.fetch){let o=`${oI}/${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 Qwe(a.status,i)}function iY(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 sY(e){return e?e.name?String(e.name):e.id!=null?`${e.type||"user"} #${e.id}`:null:null}function lY(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 uY(e,t=Date.now()){return e?`asked ${Jy(e,t)}`:null}function cY(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 dY(e){let t=e?.agent?.id,r=e?.run_id;if(t==null||r==null)return null;let n=FC("runner",{agent:{id:t}});return n?`${n}?run=${encodeURIComponent(r)}`:null}function pY(e=""){let t=new URLSearchParams(e).get("run");return t&&/^\d+$/.test(t)?Number(t):null}function WC(){window.dispatchEvent(new CustomEvent(UC))}function HC({agentId:e=null,refreshKey:t,enabled:r=!0,intervalMs:n=QG}={}){let[o,a]=(0,Eu.useState)(null),[i,s]=(0,Eu.useState)(null),l=(0,Eu.useRef)(0),u=(0,Eu.useCallback)(async()=>{let c=++l.current;try{let d=await fetch(RG({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,Eu.useEffect)(()=>{if(!r)return;u();let c=setInterval(u,n);return window.addEventListener(UC,u),()=>{clearInterval(c),window.removeEventListener(UC,u),l.current+=1}},[r,u,n,t]),{requests:o,error:i,refresh:u}}var Rwe={text:"question",choice:"choice",confirm:"approval",secret:"secret"},eSe={answered:"success",declined:"muted",closed:"warning"},lI={fontFamily:K,fontSize:11,color:"var(--color-text-muted)"},tSe={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:K,fontSize:13};function rSe({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:tSe}),yr.default.createElement(fe,{type:"submit",variant:"primary",size:"sm",disabled:t||!n,testId:"input-request-secret-submit"},t?"Sending\u2026":"Send"))}function nSe({request:e,busy:t,onApprove:r,onDecline:n}){let o=cY(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:K,fontSize:12}},o),yr.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},yr.default.createElement(fe,{variant:"primary",size:"sm",onClick:r,disabled:t,testId:"input-request-approve"},"Approve"),yr.default.createElement(fe,{variant:"secondary",size:"sm",onClick:n,disabled:t,testId:"input-request-decline"},"Decline")))}function Kp({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=iI(e),c=sI(s),d=async g=>{if(a||c)return;i(!0);let v=await aY(e,g);i(!1),l(v),sI(v)&&(WC(),t&&t(e,v))},p=g=>{g!==void 0&&d({answer:g})},f=()=>d({decline:!0}),m=n?dY(e):null,y=sY(e.actor),x=lY(e.expires_at),h=uY(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},Rwe[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:et(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:{...lI,marginLeft:"auto",color:x==="expired"?"var(--color-error-text)":lI.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:{...lI,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:eSe[s.state]||"muted"},iY(e,s))):yr.default.createElement(yr.default.Fragment,null,(u==="text"||u==="choice")&&yr.default.createElement(ml,{blocks:nY(e),darkMode:o,onAction:g=>p(oY(e,g))}),u==="confirm"&&yr.default.createElement(nSe,{request:e,busy:a,onApprove:()=>p(!0),onDecline:f}),u==="secret"&&yr.default.createElement(rSe,{request:e,busy:a,onSubmit:p}),u!=="confirm"&&yr.default.createElement("div",null,yr.default.createElement(fe,{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 oSe({pending:e,settled:t=[],onSettled:r}){return e.length===0&&t.length===0?null:$s.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}},$s.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"}},$s.default.createElement(We,{color:"var(--color-warning-text)"},"Needs input"),$s.default.createElement("span",{"data-testid":"needs-input-count",style:{fontFamily:K,fontSize:11,color:"var(--color-warning-text)"}},e.length," waiting"),$s.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=>$s.default.createElement(Kp,{key:n.id,request:n,onSettled:r})),t.map(({request:n,outcome:o})=>$s.default.createElement(Kp,{key:n.id,request:n,initialOutcome:o})))}function uI({agentId:e=null}){let{requests:t}=HC({agentId:e}),[r,n]=(0,$s.useState)([]),o=new Set(r.map(({request:s})=>s.id)),a=ih(t).filter(s=>!o.has(s.id));return $s.default.createElement(oSe,{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 fY(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 mY=e=>`/agents/${e.id}/run?new=1`;function Jx({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)(()=>fY(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(Rr,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(mY(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:K,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(Be,{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(fe,{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 Ge=Z(J());var KC=(e,t)=>e!=null&&e>=400&&e<500||t>=5;var Ls=(e,t)=>`${e} ${t}${e===1?"":"s"}`,Qx=(e,t)=>{let r=String(e??"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},VC=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),gY=e=>String(e??"").replace(/\s+/g," ").trim(),Vp=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),sh=e=>{try{return JSON.stringify(e)??String(e)}catch{return String(e)}},GC=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)}`},cI=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`},vY=(e,{num_turns:t,total_cost_usd:r,duration_ms:n}={})=>[e,t==null||t===""?null:Ls(Number(t),"turn"),GC(r),cI(n)].filter(Boolean).join(" \xB7 "),xY=(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`:""}`},nt=(e,t)=>{let r=i=>Array.isArray(i)?i.filter(Boolean).join(", "):typeof i=="string"?i:"",n=Vp(e)?e:{},o=r(n.error)||r(n.errors),a=typeof n.message=="string"?n.message:"";return o&&a?`${o}: ${a}`:o||a||t},aSe={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"}},bY=e=>aSe[e]||{label:VC(e)||"Unknown",tone:"neutral"},YC=e=>["pending","provisioning"].includes(e?.status),wY=e=>e?.status==="ready",iSe={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"}},ds=e=>iSe[e]||{label:VC(e)||"Unknown",tone:"neutral"},zs=e=>["queued","running"].includes(e?.status),r0=e=>["succeeded","failed","cancelled"].includes(e?.status),dI=e=>r0(e)&&e?.diff_pending===!0,pI=e=>r0(e)&&!dI(e),SY=e=>e?.status==="cancelled"&&pI(e)&&e?.diff==null&&!(Number(e?.event_count)>0),fI=e=>{if(!r0(e)){let t=Number(e?.event_count)||0;return t>0?Ls(t,"event"):""}return vY(null,e)},kY=e=>[ds(e?.status).label,fI(e)].filter(Boolean).join(" \xB7 "),_Y=(e,t=80)=>{let r=String(e||"").split(` +`).map(n=>n.trim()).find(Boolean)||"";return Qx(r,t)||"(empty prompt)"},Qc=(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},CY=(e,t,r)=>t&&e.some(n=>n[r]===t[r])?Qc(e,t,r):e,AY=e=>{if(!e)return e;let{events:t,events_offset:r,dropped_events_count:n,diff:o,...a}=e;return a},EY=(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}},NY=(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]},gl=(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},sSe={Bash:e=>e.command,Read:(e,t)=>gl(e.file_path,t),Write:(e,t)=>gl(e.file_path,t),Edit:(e,t)=>gl(e.file_path,t),MultiEdit:(e,t)=>{let r=Array.isArray(e.edits)?` (${Ls(e.edits.length,"edit")})`:"";return`${gl(e.file_path,t)}${r}`},NotebookEdit:(e,t)=>gl(e.notebook_path,t),NotebookRead:(e,t)=>gl(e.notebook_path,t),Glob:(e,t)=>e.path?`${e.pattern} in ${gl(e.path,t)}`:e.pattern,Grep:(e,t)=>[`"${e.pattern}"`,e.path&&`in ${gl(e.path,t)}`,e.glob&&`(${e.glob})`].filter(Boolean).join(" "),LS:(e,t)=>gl(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)?Ls(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},lSe=["command","file_path","path","url","query","pattern","description","name","prompt"],uSe=(e,t,{cwd:r}={})=>{if(t==null)return"";if(!Vp(t))return Qx(gY(typeof t=="string"?t:sh(t)),120);let n=sSe[e],o=n?n(t,r):null;if(o==null||o===""){let a=lSe.find(i=>typeof t[i]=="string"&&t[i].trim());a?o=["file_path","path"].includes(a)?gl(t[a],r):t[a]:o=Object.keys(t).length?sh(t):""}return Qx(gY(o),120)},cSe=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]":sh(t)).join(` +`):sh(e),dSe=(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",Kwe=e=>{if(!sY(e))return"Done";if(YG[e.subtype])return YG[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},Vwe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?$s(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: ${MC(e.subtype).toLowerCase()}`:"System event"}},Gwe=/^(hook_|thinking_tokens$)/,Ywe=e=>Gwe.test(String(e?.subtype||"")),Xwe=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: ${MC(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},OC=(e,t)=>({kind:"unknown",label:String(e||"event"),text:B0(Rg(t),300)}),XG=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!Fp(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:Wwe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=qwe(Hwe(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[OC(`${t} ${e.type||"block"}`,e)]}},Zwe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?XG(r,e.type,t):Array.isArray(r)?r.flatMap(n=>XG(n,e.type,t)):[OC(e.type,e)]},Jwe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!Fp(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:Rg(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}]:[OC(o.type||e.type,o)]}case"system":return e.subtype==="init"&&e.cwd&&(t.cwd=e.cwd),Ywe(e)?[]:[Vwe(e)];case"rate_limit_event":return Xwe(e);case"assistant":case"user":return n(Zwe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=ZG(Kwe(e),e);return[{kind:"result",tone:sY(e)?"error":"success",text:o?`${a} \xB7 ${$s(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[OC(e.type,e)]}},jC=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>Jwe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},lY=/^diff (--git|--cc|--combined) /,Qwe="\u2026 diff truncated",q0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` -`).map(n=>{if(lY.test(n))return t=!0,{text:n,kind:"meta"};if(n===Qwe)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"}})},uY=e=>{let t=q0(e),r=t.filter(a=>a.kind==="meta"&&lY.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${$s(r,"file")} changed \xB7 +${n} \u2212${o}`},K0="default",V0="other",cY=["sonnet","opus","haiku"],Rwe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,JM="actionagent.claudeCode.modelChoice",dY=(e="claude_code")=>[{value:K0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:cY.map(t=>({value:t,label:t})),{value:V0,label:"Other\u2026"}],QM=e=>e===K0||e===V0||cY.includes(e),RM=(e,t="")=>{if(!QM(e)||e===K0)return{model:null};if(e!==V0)return{model:e};let r=String(t??"").trim();return r?Rwe.test(r)?{model:r}:{error:`"${B0(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},pY=(e,t,r,n="claude_code")=>{let{model:o}=RM(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},$C=e=>{let t={choice:K0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!Fp(r)||!QM(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},fY=(e,t="")=>JSON.stringify({choice:QM(e)?e:K0,custom:String(t??"").slice(0,100)}),eI=e=>e?.model||"default model",F0="api_key",U0="local_login",mY="claude /login",gY="sk-ant-api03-\u2026",hY="https://platform.claude.com",yY="https://code.claude.com/docs/en/legal-and-compliance.md",LC=e=>{let t=Fp(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===U0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?U0:F0,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}},vY=(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===U0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:U0,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:mY}}return t?t.configured&&t.needs_replacing===!0?{view:F0,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:F0,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===U0?{text:"Claude Code is not logged in on this machine. Run",loginHint:mY,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},W0="local_login",bY="codex login",zC=e=>{let t=Fp(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===W0;return{supported:e?.codex_sessions_supported===!0,mode:r?W0:F0,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}},wY=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===W0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:W0,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:bY}}return t?{view:F0,status:t.configured?`Connected \xB7 ${t.hint}`:"Not connected",tone:t.configured?"success":"neutral",keyForm:!0,loginHint:null}:r},SY=e=>!e||e.supported!==!0?{text:"This sandbox backend does not support Codex.",loginHint:null,after:null}:e.connected===!0?null:e.mode===W0?{text:"Codex is not logged in on this machine. Run",loginHint:bY,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var _Y=1500,tI=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],eSe=new Set(tI.map(e=>e.id)),rI=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),Up=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},CY=(e,t="")=>{let r=new URLSearchParams(t),n=eSe.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=Up(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},ds=e=>`/interactions/code-${e}`,BC=({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}`:""}`},nI=({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()},AY=e=>{let t=(e||[]).filter(rI);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]},EY=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),NY=(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}},TY=e=>(e?.turns||[]).some(Ls),OY=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(IC(e.total_cost_usd)),e.duration_ms!=null&&t.push(GM(e.duration_ms)),e.diff_stat&&t.push(`${$s(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},FC=e=>{let t=[$s(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(IC(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 ")},PY=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||Ls(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},Y0=e=>e?.runner==="codex"?"Codex":"Claude Code",MY=(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?` ${Y0(e)} will be told you drove the browser.`:"";return n?`Your message waits for the turn that runs${r?` (and ${$s(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},IY=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},Wp=50,UC=25,WC=75,kY=5,G0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(WC,Math.max(UC,Math.round(t*10)/10)):Wp},DY=(e,{left:t,width:r})=>r>0?G0((e-t)/r*100):Wp,jY=(e,t)=>{switch(t){case"ArrowLeft":return G0(e-kY);case"ArrowRight":return G0(e+kY);case"Home":return UC;case"End":return WC;case"Enter":return Wp;default:return null}};var Ne=Z(J());var Bt=Z(J());var Z0={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 aI({title:e,onClose:t,children:r}){let n=(0,Bt.useRef)(null);return(0,Bt.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Bt.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)"}},Bt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Bt.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Bt.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")),Bt.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function X0(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 tSe=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 Hp({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Bt.useState)(null),[i,s]=(0,Bt.useState)(!1),[l,u]=(0,Bt.useState)(""),[c,d]=(0,Bt.useState)(!1),[p,f]=(0,Bt.useState)(null),m=(0,Bt.useRef)(null),y=(0,Bt.useRef)(t);y.current=t,(0,Bt.useEffect)(()=>{let v=!1;return X0(n).then(x=>{v||a(x)}).catch(x=>{v||f(x.message)}),()=>{v=!0}},[n]),(0,Bt.useEffect)(()=>{if(!i)return;let v=!1,x,S=async()=>{try{let w=await X0(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(tSe(w.status)),d(!1);return}x=setTimeout(S,1200)}catch(w){v||(f(w.message),d(!1))}};return x=setTimeout(S,300),()=>{v=!0,clearTimeout(x)}},[n,i]);let b=async()=>{f(null),u(""),d(!0),m.current=window.open("about:blank","_blank"),m.current&&(m.current.opener=null);try{a(await X0(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 X0(n,"DELETE")),r?.()}catch(v){f(v.message)}finally{d(!1)}},g=async v=>{if(v.preventDefault(),!l.trim()||c)return;let x=l.trim();u(""),d(!0),f(null);try{a(await X0(`${n}/code`,"POST",{claude_login_code:x}))}catch(S){f(S.message),d(!1)}};return Bt.default.createElement("section",{style:Z0,"data-testid":"sandbox-claude-login"},Bt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Bt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Bt.default.createElement("strong",null,"Claude Code"),Bt.default.createElement(Ee,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Bt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Bt.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&&Bt.default.createElement(ge,{variant:"primary",onClick:b,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Bt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Bt.default.createElement(aI,{title:"Connect your Claude subscription",onClose:h},Bt.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."),Bt.default.createElement("div",{style:{...Z0,fontSize:12}},Bt.default.createElement("strong",null,e.repository||"Checkout sandbox"),Bt.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Bt.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"):Bt.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Bt.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Bt.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Bt.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"}),Bt.default.createElement(ge,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Bt.default.createElement(Bt.default.Fragment,null,Bt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Bt.default.createElement(ge,{onClick:b,disabled:c},"Start sign-in again")),Bt.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 Ir=Z(J());function J0({session:e,evaluationId:t,sandboxId:r,onRetry:n}){let[o,a]=(0,Ir.useState)(null),[i,s]=(0,Ir.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 Ir.default.createElement("section",{"data-testid":"fix-verification",style:{display:"flex",flexDirection:"column",gap:12,minWidth:0}},Ir.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ir.default.createElement("strong",{style:{fontSize:13}},"Before & after"),Ir.default.createElement(Ee,{tone:c?"info":"muted"},l?.status||(e.status==="succeeded"?e.diff?"Preparing verification":"No changes to verify":e.status))),l?.error&&Ir.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",margin:0,fontSize:13}},l.error),Ir.default.createElement("div",{style:{overflowX:"auto"}},Ir.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:12}},Ir.default.createElement("thead",null,Ir.default.createElement("tr",null,["Scenario / model","Before","After","Score \u0394","Fault"].map(f=>Ir.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)))),Ir.default.createElement("tbody",null,u.map(f=>Ir.default.createElement("tr",{key:`${f.scenario_key}/${f.model}`},Ir.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.scenario_key,Ir.default.createElement("div",{style:{color:"var(--color-text-muted)",fontSize:10,marginTop:4}},f.model)),Ir.default.createElement("td",{style:{padding:10}},f.before," \xB7 ",p(f.before_score)),Ir.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)}`,Ir.default.createElement("div",{style:{fontSize:10,marginTop:4}},f.change.replaceAll("_"," "))),Ir.default.createElement("td",{style:{padding:10,fontFamily:"var(--font-mono)"}},f.score_change==null?"\u2014":`${f.score_change>0?"+":""}${p(f.score_change)}`),Ir.default.createElement("td",{style:{padding:10}},f.fault||(f.after?"none":f.before_fault)||"\u2014")))))),Ir.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12}},Ir.default.createElement("a",{href:nt(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Ir.default.createElement("a",{href:nt(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Ir.default.createElement(ge,{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)&&Ir.default.createElement(ge,{size:"sm",onClick:n},"Try again")),o?.run&&Ir.default.createElement("a",{style:{fontSize:12},href:nt(`/evaluations/${t}/runs/${o.run}`)},"Full suite queued \u2014 open run \u2192"),o?.error&&Ir.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},o.error))}var An=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)}`},Q0=e=>e==null?"\u2014":An(e),iI=(e,t)=>e==null&&t==null?"\u2014":`${Q0(e)}\u2192${Q0(t)}`,Dn=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`},R0=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)}`},ex=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var eh=(e,t="%",r=0)=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let n=Number(e);return`${n>0?"+":n<0?"-":""}${Math.abs(n).toFixed(r)}${t}`},fo=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`},mo=(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 rSe=2e4,LY=()=>{try{return $C(window.localStorage.getItem(JM))}catch{return $C(null)}},nSe=(e,t)=>{try{window.localStorage.setItem(JM,fY(e,t))}catch{}},FY=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),zY={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 zs({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=zY[e]||zY.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 tx({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,b]=(0,Ne.useState)(null),[h,g]=(0,Ne.useState)(0),[v,x]=(0,Ne.useState)(0),[S,w]=(0,Ne.useState)(""),[A,k]=(0,Ne.useState)("claude_code"),_=A==="codex"?"Codex":"Claude Code",[C,E]=(0,Ne.useState)(LY),[j,X]=(0,Ne.useState)(!1),[z,U]=(0,Ne.useState)(!1),[N,O]=(0,Ne.useState)(null),D=(0,Ne.useRef)(null),T=(0,Ne.useRef)(!0),I=(0,Ne.useCallback)(async()=>{let F=await fetch(l),se=await F.json().catch(()=>({}));if(!F.ok)throw new Error(ot(se,`Could not load code sessions (HTTP ${F.status}).`));return se.code_sessions||[]},[l]);(0,Ne.useEffect)(()=>{let F=!1;return c(null),p(null),I().then(se=>{if(F)return;c(se);let oe=se.find(ve=>ve.id===a)||se.find(Ls)||se[0];p(ve=>ve??oe?.id??null)}).catch(se=>{F||(c([]),O(se.message))}),()=>{F=!0}},[I]),(0,Ne.useEffect)(()=>{a!=null&&p(a)},[a]),(0,Ne.useEffect)(()=>{if(d==null)return;let F=!1,se=null,oe=[],ve=0;m(null),b(null),T.current=!0;let Re=async()=>{let tt=!0,he=null;try{let le=await fetch(`${l}/${d}?after=${oe.length}`);he=le.status;let Ze=await le.json().catch(()=>({}));if(F)return;if(!le.ok)throw new Error(ot(Ze,`Could not load the session (HTTP ${le.status}).`));let Je=Ze.code_session;oe=iY(oe,Je),ve=0,b(null),m({...Je,events:oe}),c(wt=>Rc(wt||[],oY(Je),"id"));let it=Je.evaluation_run_id&&Je.status==="succeeded"&&Je.diff&&!Je.verification?.error&&!["complete","failed"].includes(Je.verification?.status);XM(Je)&&!it&&(tt=!1)}catch(le){if(F)return;ve+=1,b(le.message),PC(he,ve)&&(tt=!1)}tt&&!F&&(se=setTimeout(Re,1500))};return Re(),()=>{F=!0,clearTimeout(se)}},[l,d,h]);let P=(u||[]).find(Ls)||null,H=P&&P.id!==d?P.id:null,G=A==="codex"?SY(r):xY(t),L=G?"not_connected":P?"busy":null;(0,Ne.useEffect)(()=>{if(H==null)return;let F=!1,se=setTimeout(async()=>{try{let oe=await I();F||c(oe)}catch{}F||x(oe=>oe+1)},1500*2);return()=>{F=!0,clearTimeout(se)}},[H,v,I]);let Y=(0,Ne.useMemo)(()=>jC(f?.events),[f?.events]);(0,Ne.useLayoutEffect)(()=>{let F=D.current;F&&T.current&&(F.scrollTop=F.scrollHeight)},[Y.length]);let W=F=>{let se=F.currentTarget;T.current=se.scrollHeight-se.scrollTop-se.clientHeight<40},ie=RM(C.choice,C.custom).error||null,Me=F=>{E(se=>{let oe={...se,...F};return A==="claude_code"&&nSe(oe.choice,oe.custom),oe})},pe=async()=>{let F=S.trim();if(!(!F||L||j||ie)){X(!0),O(null);try{let se=await fetch(l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(pY(F,C.choice,C.custom,A))}),oe=await se.json().catch(()=>({}));if(!se.ok)throw oe.code_session&&(c(ve=>Rc(ve||[],oe.code_session,"id")),p(oe.code_session.id)),new Error(ot(oe,`Could not start ${_} (HTTP ${se.status}).`));c(ve=>Rc(ve||[],oe.code_session,"id")),p(oe.code_session.id),w("")}catch(se){O(se.message)}finally{X(!1)}}},ce=async F=>{U(!0),O(null);try{let se=await fetch(`${l}/${F.id}/cancel`,{method:"POST"}),oe=await se.json().catch(()=>({}));if(!se.ok)throw new Error(ot(oe,`Could not cancel the session (HTTP ${se.status}).`));c(ve=>Rc(ve||[],oe.code_session,"id")),m(ve=>ve&&ve.id===oe.code_session.id?{...ve,...oe.code_session}:ve)}catch(se){O(se.message)}finally{U(!1)}},Q=s?"text-gray-400":"text-gray-500",ee=s?"text-white":"text-gray-900",$=s?"border-gray-700":"border-gray-200",B=`px-3 py-1 text-sm rounded ${s?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,K=`underline ${s?"text-gray-300 hover:text-white":"text-gray-700 hover:text-gray-900"}`,M=`p-2 rounded text-xs border ${s?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`,ae=f&&f.id===d?f:(u||[]).find(F=>F.id===d)||null;return Ne.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${$}`},!o&&t?.mode==="sandbox_login"&&Ne.default.createElement(Hp,{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 ${Q}`},"A session edits this checkout and never commits or pushes. Publishing is a separate step, below.")),o&&N&&Ne.default.createElement("div",{className:M},N),!o&&Ne.default.createElement("div",{className:"space-y-2"},Ne.default.createElement("label",{className:`flex items-center gap-2 text-xs ${Q}`},"Agent",Ne.default.createElement("select",{"aria-label":"Coding agent",value:A,onChange:F=>{k(F.target.value),E(F.target.value==="claude_code"?LY():$C(null))},disabled:j,className:`px-2 py-1 border rounded ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},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:F=>w(F.target.value),onKeyDown:F=>{F.key==="Enter"&&(F.metaKey||F.ctrlKey)&&pe()},rows:3,maxLength:rSe,disabled:L==="not_connected"||j,placeholder:`What should ${_} do in this checkout?`,className:`w-full px-3 py-2 border rounded-lg text-sm disabled:opacity-60 ${s?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),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 ${Q}`},"Model"),Ne.default.createElement("select",{id:`code-session-model-${e.session_id}`,value:C.choice,onChange:F=>Me({choice:F.target.value}),disabled:j,className:`px-2 py-1 border rounded text-xs ${s?"bg-gray-800 border-gray-700 text-white":"bg-white border-gray-300 text-gray-900"}`},dY(A).map(F=>Ne.default.createElement("option",{key:F.value,value:F.value},F.label))),C.choice===V0&&Ne.default.createElement("input",{type:"text",value:C.custom,onChange:F=>Me({custom:F.target.value}),disabled:j,maxLength:100,placeholder:A==="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 ${Q}`},L==="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:K},"Check again")),L==="busy"&&Ne.default.createElement(Ne.default.Fragment,null,"A session is ",P.status," in this checkout; wait for it to finish or cancel it."," ",P.id!==d&&Ne.default.createElement("button",{type:"button",onClick:()=>p(P.id),className:K},"Show it"))),Ne.default.createElement("button",{type:"button",onClick:pe,disabled:!!L||j||!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"},j?"Starting\u2026":`Run ${_}`)),N&&Ne.default.createElement("div",{className:M},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 ${Q}`},"Sessions"),Ne.default.createElement("div",{className:"max-h-40 overflow-y-auto space-y-1"},u.map(F=>{let{label:se,tone:oe}=cs(F.status),ve=F.id===d;return Ne.default.createElement("button",{key:F.id,type:"button",title:tY(F),onClick:()=>ve?g(Re=>Re+1):p(F.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${ve?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ne.default.createElement(zs,{tone:oe},se),Ne.default.createElement("span",{className:`text-xs ${Q}`},F.runner==="codex"?"Codex":"Claude Code"),Ne.default.createElement("span",{className:`flex-1 truncate ${ee}`},rY(F.prompt)),Ne.default.createElement("span",{className:`shrink-0 text-xs font-mono ${Q}`},eI(F)),Ne.default.createElement("span",{className:`shrink-0 text-xs ${Q}`},fo(F.created_at)))}))),u===null&&Ne.default.createElement("p",{className:`text-xs ${Q}`},"Loading sessions\u2026"),ae&&Ne.default.createElement(oSe,{session:ae,rows:Y,loaded:!!(f&&f.id===ae.id),detailError:y,cancelling:z,onCancel:()=>ce(ae),onReload:()=>g(F=>F+1),transcriptRef:D,onTranscriptScroll:W,classes:{muted:Q,strong:ee,border:$,secondaryButton:B,linkButton:K,errorBox:M}}))}function oSe({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:b}=u,{label:h,tone:g}=cs(e.status),v=Ls(e),x=H0(e),S=eY(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(zs,{tone:g},h),Ne.default.createElement("span",{className:`text-xs truncate ${d}`},[ZM(e),eI(e)].filter(Boolean).join(" \xB7 "))),Ne.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Ne.default.createElement("a",{href:nt(ds(e.conversation_id||e.id)),onClick:A=>{A.preventDefault(),dt(ds(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:b},n),Ne.default.createElement("div",{ref:s,onScroll:l,className:"max-h-96 overflow-y-auto rounded p-2 space-y-1.5",style:FY(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(A=>Ne.default.createElement(sI,{key:A.key,row:A,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:`${b} whitespace-pre-wrap break-words font-mono max-h-48 overflow-y-auto`},e.error_message),e.evaluation_run_id&&Ne.default.createElement(J0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),x&&r&&Ne.default.createElement(lI,{diff:e.diff,pending:YM(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function sI({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 BY={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 lI({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ne.useMemo)(()=>q0(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 ",uY(e)),Ne.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:FY(a)},i.map((s,l)=>{let u=BY[s.kind]||BY.context;return Ne.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var gt=Z(J());function HC(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var UY=["left","middle","right"];function WY(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 qC(e,t,r){let n=WY(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:HC(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:UY[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function HY(e,t,r){let n=qC("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:HC(e),button:UY[e.button]||"left",clickCount:1}}var aSe=16,iSe=800;function qY(e,t){let r=WY(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?aSe:e.deltaMode===2?iSe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:HC(e)}}function uI(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:HC(t)}}function KY(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var sSe=600;function VY(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=sSe}var cI=32*1024;function GY(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 XY(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 ${YY(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function ZY(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${YY(e.total)}\u2026 ${t}%`}function JY(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 rx={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 QY(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...rx.control,...t.control},agent:{...rx.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 rx;default:return e}}function RY(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 eX(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function tX({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 rX(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 nX(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 oX(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 lSe={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 aX(e,{requested:t=!1}={}){return t?null:lSe[e]||"The live view lost its connection to the browser."}var uSe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function iX(e){return e?.status?uSe[e.status]||{label:e.status,tone:"neutral"}:null}function sX(e){return e?.status==="starting"||e?.status==="running"}function lX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function uX(e,t){let r=await fetch(`/api/sandboxes/${encodeURIComponent(e)}/browser/tickets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:t})}),n=await r.json().catch(()=>({}));if(r.status===403&&n.code==="forbidden")throw new Error("You do not have permission to take over this browser.");if(!r.ok)throw new Error(ot(n,`Could not open the live view (HTTP ${r.status}).`));return n}var cX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",cSe=1024*1024,dSe=e=>new Promise(t=>{setTimeout(t,e)});function pSe({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"},ZY(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 nx({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,gt.useReducer)(QY,rx),[l,u]=(0,gt.useState)("idle"),[c,d]=(0,gt.useState)(null),[p,f]=(0,gt.useState)(!1),[m,y]=(0,gt.useState)(null),b=(0,gt.useRef)(null),h=(0,gt.useRef)(!1),g=(0,gt.useRef)(0),v=(0,gt.useRef)(!1),x=(0,gt.useRef)(null),S=(0,gt.useRef)(null),w=(0,gt.useRef)({pending:null,decoding:!1}),A=(0,gt.useRef)({message:null,scheduled:!1}),k=(0,gt.useRef)(null),_=(0,gt.useRef)(null),C=(0,gt.useRef)(0),E=i.control.mine,j=(0,gt.useRef)(null),X=(0,gt.useRef)(i);X.current=i,(0,gt.useEffect)(()=>{if(E){j.current=i.control.since||Date.now();return}if(j.current===null)return;let oe=j.current;j.current=null,n?.(tX({by:null,takenAt:oe,releasedAt:Date.now(),page:X.current.page}))},[E]);let z=(0,gt.useCallback)(oe=>{let ve=b.current;oe&&ve?.readyState===WebSocket.OPEN&&ve.send(JSON.stringify(oe))},[]),U=(0,gt.useCallback)(oe=>{let ve=w.current;if(ve.pending=oe,ve.decoding)return;let Re=()=>{let tt=ve.pending;if(ve.pending=null,ve.decoding=!!tt,!tt)return;let he=new Image;he.onload=()=>{let le=x.current;le&&((le.width!==he.naturalWidth||le.height!==he.naturalHeight)&&(le.width=he.naturalWidth,le.height=he.naturalHeight),le.getContext("2d")?.drawImage(he,0,0)),Re()},he.onerror=Re,he.src=`data:image/jpeg;base64,${tt.data}`};Re()},[]),N=(0,gt.useCallback)(()=>{g.current+=1;let oe=b.current;if(!oe){u("idle");return}v.current&&oe.readyState===WebSocket.OPEN&&oe.send(JSON.stringify({type:"hand_back"})),h.current=!0,oe.close(1e3)},[]);(0,gt.useEffect)(()=>N,[N]);let O=async()=>{g.current+=1;let oe=g.current;d(null),u("connecting");try{let{ticket:ve,url:Re}=await uX(e,"view");if(g.current!==oe)return;let tt=new WebSocket(Re);b.current=tt,h.current=!1,tt.onopen=()=>tt.send(JSON.stringify({type:"auth",ticket:ve})),tt.onmessage=he=>{let le;try{le=JSON.parse(he.data)}catch{return}le.type==="ready"&&u("open"),le.type==="frame"&&U(le),(le.type==="file_upload"&&le.status!=="progress"||le.type==="file_chooser"&&!le.chooser)&&(C.current+=1,y(null)),s(le)},tt.onclose=he=>{b.current===tt&&(b.current=null,C.current+=1,y(null),u("idle"),s({type:"reset"}),d(aX(he.code,{requested:h.current})))}}catch(ve){if(g.current!==oe)return;u("idle"),d(ve.message)}},D=(0,gt.useRef)(!1);(0,gt.useEffect)(()=>{!r||D.current||(D.current=!0,O())},[r]);let T=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:oe}=await uX(e,"control");z({type:"take_control",ticket:oe})}catch(oe){d(oe.message)}finally{f(!1)}},I=()=>{z({type:"hand_back"}),x.current?.blur()},P=async oe=>{let ve=i.fileChooser,Re=XY(oe,ve);if(Re.error){d(Re.error);return}let tt=b.current;if(!tt||tt.readyState!==WebSocket.OPEN)return;C.current+=1;let he=C.current;d(null),s({type:"clear_error"}),z({type:"file_upload",chooser:ve.id,files:Re.files});let le=0;y({sent:le,total:Re.total});try{for(let Ze of Array.from(oe))for(let Je=0;JecSe&&C.current===he;)await dSe(50);if(C.current!==he||tt.readyState!==WebSocket.OPEN)return;let it=new Uint8Array(await Ze.slice(Je,Je+cI).arrayBuffer());z({type:"file_chunk",chooser:ve.id,data:GY(it)}),le+=it.length,y({sent:le,total:Re.total})}}catch(Ze){d(`Could not read the file: ${Ze.message}`),H()}},H=()=>{C.current+=1,y(null),i.fileChooser&&z({type:"file_cancel",chooser:i.fileChooser.id})},G=E&&!!i.fileChooser,L=G?{onDragOver:oe=>{oe.preventDefault(),oe.dataTransfer.dropEffect="copy"},onDrop:oe=>{oe.preventDefault(),m||P(oe.dataTransfer.files)}}:{};(0,gt.useEffect)(()=>{v.current=E,E?x.current?.focus():x.current?.blur()},[E]),(0,gt.useEffect)(()=>{let oe=x.current;if(!oe||!E)return;let ve=Re=>{Re.preventDefault(),z(qY(Re,oe.getBoundingClientRect()))};return oe.addEventListener("wheel",ve,{passive:!1}),()=>oe.removeEventListener("wheel",ve)},[E,z,l]);let Y=()=>x.current?.getBoundingClientRect(),W=oe=>{oe&&(k.current={x:oe.x,y:oe.y},z(oe))},ie=E?{onMouseDown:oe=>{oe.preventDefault(),x.current?.focus(),W(qC("down",oe,Y())),window.addEventListener("mouseup",ve=>W(HY(ve,Y(),k.current)),{once:!0})},onMouseMove:oe=>{let ve=A.current;ve.message=qC("move",oe,Y()),!ve.scheduled&&(ve.scheduled=!0,requestAnimationFrame(()=>{ve.scheduled=!1,W(ve.message),ve.message=null}))},onContextMenu:oe=>oe.preventDefault(),onKeyDown:oe=>{if(VY(oe,_.current)){oe.preventDefault(),_.current=null,S.current?.focus();return}if(_.current=oe.key==="Escape"&&!oe.repeat?oe.timeStamp:null,cX(oe))return;let ve=uI("down",oe);ve&&(oe.preventDefault(),z(ve))},onKeyUp:oe=>{if(cX(oe))return;let ve=uI("up",oe);ve&&(oe.preventDefault(),z(ve))},onPaste:oe=>{oe.preventDefault(),z(KY(oe.clipboardData?.getData("text/plain")))}}:{},Me=a?"text-gray-400":"text-gray-500",pe=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"}`,Q="px-3 py-1 text-sm rounded text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-50",ee=RY(i),$=eX(i),B=rX(i),K=nX(i,{taking:p}),M=oX(i.page),ae=JY(i),F=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"),F&&(E?gt.default.createElement("button",{ref:S,type:"button",onClick:I,className:Q},o):gt.default.createElement("button",{ref:S,type:"button",onClick:T,disabled:K.disabled,className:Q},K.label)),B&>.default.createElement("span",{className:`text-xs font-medium ${pe}`},B),l==="connecting"&>.default.createElement("span",{className:`text-xs ${Me}`},"Connecting\u2026")),c&>.default.createElement("p",{className:`text-xs ${Me}`,role:"status"},c),i.error&>.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),$&>.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"}`},$,F?" 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"},M&>.default.createElement("p",{className:`text-xs font-mono truncate ${Me}`,title:M},M),ae&>.default.createElement("p",{className:`text-xs ${Me}`,role:"status"},ae),gt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...L},gt.default.createElement("canvas",{ref:x,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}),G&>.default.createElement(pSe,{chooser:i.fileChooser,upload:m,onFiles:oe=>{P(oe)},onCancel:H})),E&>.default.createElement("p",{className:`text-xs ${Me}`},"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 ${Me}`},"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 fSe={settings:"Started from Settings",boot_fix:"Fixing a failed boot",evaluation_fix:"Implementing an evaluation fix",chat:"Chat"};function mSe({turn:e,sandboxId:t,darkMode:r,muted:n,strong:o}){let a=(0,Ge.useMemo)(()=>jC(e.events),[e.events]),[i,s]=(0,Ge.useState)(void 0),l=cs(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 Ge.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ge.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ge.default.createElement(zs,{tone:l.tone},l.label),Ge.default.createElement("span",{className:`text-xs ${n}`},OY(e))),e.context_note&&Ge.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ge.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ge.default.createElement("div",{className:"space-y-1"},a.length===0&&Ge.default.createElement("p",{className:`text-xs ${n}`},Ls(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ge.default.createElement(sI,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ge.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!Ls(e)&&Ge.default.createElement("div",{className:"space-y-1"},Ge.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&&Ge.default.createElement(lI,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function dI({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ge.useState)(null),[a,i]=(0,Ge.useState)(null),[s,l]=(0,Ge.useState)(""),[u,c]=(0,Ge.useState)(!1),[d,p]=(0,Ge.useState)(null),[f,m]=(0,Ge.useState)(hSe),y=(0,Ge.useRef)(null);y.current=n;let b=(0,Ge.useRef)(null),h=(0,Ge.useRef)(null),g=(0,Ge.useRef)(null),v=vSe(h,!!n),x=(0,Ge.useRef)(null),[S,w]=(0,Ge.useState)(gSe),[A,k]=(0,Ge.useState)(!1),_=f&&!!v,C=ve=>{w(ve),dX(ve)},E=(0,Ge.useRef)(null),j=(0,Ge.useRef)(S);j.current=S;let X=ve=>{ve.button!==0||!x.current||(ve.preventDefault(),ve.currentTarget.setPointerCapture?.(ve.pointerId),E.current=x.current.getBoundingClientRect(),k(!0))},z=ve=>{if(!E.current)return;let Re=DY(ve.clientX,E.current);j.current=Re,w(Re)},U=ve=>{E.current&&(ve.currentTarget.releasePointerCapture?.(ve.pointerId),E.current=null,k(!1),dX(j.current))},N=ve=>{let Re=jY(S,ve.key);Re!==null&&(ve.preventDefault(),C(Re))},O=ve=>{m(Re=>{let tt=typeof ve=="function"?ve(Re):ve;return ySe(tt),tt})},D=(0,Ge.useCallback)(async()=>{let ve=EY(y.current?.turns),Re=await fetch(`/api/interactions/code-${e}${ve?`?${ve}`:""}`),tt=await Re.json().catch(()=>({}));if(!Re.ok){i(ot(tt,`Could not load the conversation (HTTP ${Re.status}).`));return}i(null),o(he=>NY(he,tt.interaction))},[e]);(0,Ge.useEffect)(()=>{o(null),y.current=null,D()},[D]);let T=TY(n);(0,Ge.useEffect)(()=>{if(!T)return;let ve=setInterval(()=>{D()},_Y);return()=>clearInterval(ve)},[T,D]);let I=n?.turns?.length||0,P=n?.turns?.reduce((ve,Re)=>ve+(Re.events?.length||0),0)||0,H=(0,Ge.useRef)(!0);(0,Ge.useEffect)(()=>{let ve=g.current;ve&&H.current&&(ve.scrollTop=ve.scrollHeight)},[I,P,v]);let G=()=>{let ve=g.current;ve&&(H.current=ve.scrollHeight-ve.scrollTop-ve.clientHeight<48)},L=n?.sandbox_session_id,Y=n?.turns?.[n.turns.length-1],W=PY(n),ie=n?.browser?.status==="running",Me=async ve=>{ve?.preventDefault();let Re=s.trim();if(!(!Re||!L)){c(!0),i(null);try{let tt=await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:Re,...d?{handoff:d}:{}})}),he=await tt.json().catch(()=>({}));if(!tt.ok)throw new Error(ot(he,`The message was not sent (HTTP ${tt.status}).`));l(""),p(null),await D()}catch(tt){i(tt.message)}finally{c(!1)}}},pe=async()=>{let ve=(n?.turns||[]).filter(Ls);for(let Re of ve)await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${Re.id}/cancel`,{method:"POST"});await D()},ce=ve=>{p(ve),l(Re=>Re||"I've handed the browser back. "),b.current?.focus()},Q=r?"text-gray-400":"text-gray-500",ee=r?"text-white":"text-gray-900",$=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,B=`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"}`,K="px-3 py-1 text-sm rounded text-white bg-red-600 hover:bg-red-700 disabled:opacity-50",M=`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 Ge.default.createElement("div",{className:$,"data-testid":"code-interaction"},a?Ge.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ge.default.createElement("p",{className:`text-sm ${Q}`},"Loading\u2026"));let ae=cs(n.status),F=`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"}`,oe=`px-2 py-0.5 text-xs rounded ${r?"text-gray-300 hover:bg-gray-700":"text-gray-600 hover:bg-gray-100"}`;return Ge.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:v?{height:v}:void 0,"data-testid":"code-interaction"},Ge.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ge.default.createElement("div",{className:"space-y-1"},t&&Ge.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${Q}`},"\u2190 Interactions"),Ge.default.createElement("h2",{className:`text-xl font-bold ${ee}`},n.display_name),Ge.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ge.default.createElement(zs,{tone:ae.tone},ae.label),Ge.default.createElement("span",{className:`text-xs ${Q}`},fSe[n.origin]||n.origin," \xB7 ",FC(n)),n.project&&Ge.default.createElement("a",{href:nt(`/projects/${n.project.id}`),onClick:ve=>{ve.preventDefault(),dt(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ge.default.createElement("div",{className:"flex items-center gap-2"},T&&Ge.default.createElement("button",{type:"button",onClick:pe,className:B},"Stop"),Ge.default.createElement("button",{type:"button",onClick:()=>O(ve=>!ve),className:B,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),W&&!f&&Ge.default.createElement("p",{role:"alert",className:`${M} shrink-0`},"Claude Code needs you: ",W.reason," ",Ge.default.createElement("button",{type:"button",onClick:()=>O(!0),className:"underline"},"Show the browser")),Ge.default.createElement("div",{ref:x,className:`flex-1 min-h-0 flex flex-col gap-4 ${_?"lg:flex-row lg:gap-0":""} ${A?"select-none cursor-col-resize":""}`},Ge.default.createElement("section",{className:`${se} lg:h-full min-w-0`,style:_?{flex:`0 0 ${S}%`}:void 0,"aria-label":"Conversation",id:`code-interaction-${e}-conversation`},Ge.default.createElement("div",{className:F},Ge.default.createElement("span",{className:`text-sm font-medium ${ee}`},"Conversation"),!f&&Ge.default.createElement("button",{type:"button",onClick:()=>O(!0),className:oe},"Show browser \u203A")),Ge.default.createElement("ol",{ref:g,onScroll:G,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(ve=>Ge.default.createElement(mSe,{key:ve.id,turn:ve,sandboxId:L,darkMode:r,muted:Q,strong:ee}))),Ge.default.createElement("form",{onSubmit:Me,className:`space-y-2 p-4 border-t shrink-0 ${r?"border-gray-700":"border-gray-200"}`},Ge.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${ee}`},"Message ",Y0(n)),Ge.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:b,value:s,onChange:ve=>l(ve.target.value),rows:3,className:`w-full text-sm rounded border p-2 ${r?"bg-gray-800 border-gray-600 text-white":"bg-white border-gray-300"}`,placeholder:Y?.result?"Reply, or ask for the next change":"What should happen next?"}),Ge.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ge.default.createElement("span",{className:`text-xs ${Q}`,role:"status"},MY(n,{handoff:d})),Ge.default.createElement("button",{type:"submit",className:K,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ge.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),_&&Ge.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":UC,"aria-valuemax":WC,tabIndex:0,onPointerDown:X,onPointerMove:z,onPointerUp:U,onPointerCancel:U,onKeyDown:N,onDoubleClick:()=>C(Wp),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"},Ge.default.createElement("span",{className:`h-12 w-1 rounded-full transition-colors ${A?"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&&Ge.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"},Ge.default.createElement("div",{className:F},Ge.default.createElement("span",{className:`text-sm font-medium ${ee}`},"The sandbox\u2019s browser"),Ge.default.createElement("button",{type:"button",onClick:()=>O(!1),className:oe,"aria-label":"Hide the browser"},"Hide \xD7")),Ge.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},W&&Ge.default.createElement("p",{role:"alert",className:M},Y0(n)," needs you: ",W.reason),ie?Ge.default.createElement(nx,{sessionId:L,watchOnOpen:!0,onHandBack:ce,handBackLabel:`Hand back to ${Y0(n)}`}):Ge.default.createElement("p",{className:`text-xs ${Q}`},"The browser is not running."," ",n.project?Ge.default.createElement("a",{href:nt(`/projects/${n.project.id}?tab=browser`),onClick:ve=>{ve.preventDefault(),dt(`/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 pX="activeagents.codeInteraction.showBrowser",fX="activeagents.codeInteraction.split";function gSe(){try{let e=window.localStorage.getItem(fX);return e===null?Wp:G0(e)}catch{return Wp}}function dX(e){try{window.localStorage.setItem(fX,String(e))}catch{}}function hSe(){let e=null;try{e=window.localStorage.getItem(pX)}catch{}return IY(window.location.search,e)}function ySe(e){try{window.localStorage.setItem(pX,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 vSe(e,t){let[r,n]=(0,Ge.useState)(null);return(0,Ge.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 mX=Z(J());function ed({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=Jg(e,t);return a?mX.default.createElement("a",{href:nt(a),"data-testid":n,title:r,onClick:i=>{i.stopPropagation(),!(i.metaKey||i.ctrlKey||i.shiftKey||i.button!==0)&&(i.preventDefault(),dt(a))},style:{fontFamily:V,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=Xc(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=Xc(a.content)+Xc(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:E0(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}]}},gX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],bSe=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],wSe=[{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"}],SSe=3e4,Nu=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),hX=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 kSe({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=qn(t),[i,s]=(0,be.useState)(null),[l,u]=(0,be.useState)(!1),c=e.trace_id,d=(e.duration_seconds||0)*1e3;(0,be.useEffect)(()=>{if(!c)return;let m=!0;return fetch(`/api/traces/${encodeURIComponent(c)}`).then(y=>y.ok?y.json():Promise.reject(new Error("not found"))).then(({trace:y})=>m&&s(y)).catch(()=>m&&u(!0)),()=>{m=!1}},[c]);let p=!!i,f=(i?.spans||[]).length;return be.default.createElement("div",{className:`rounded-lg px-2 py-1.5 -mx-2 transition-colors ${p?t?"hover:bg-white/5":"hover:bg-gray-100":""}`,style:n?{background:a.hoverBg}:void 0},be.default.createElement("div",{className:p?"cursor-pointer":void 0,onClick:p?o:void 0,title:p?`${f} spans \u2014 click for the trace`:void 0},be.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs font-mono",style:{color:a.textSecondary}},be.default.createElement("span",{title:e.cache_hit?`${Nu(e.tokens.cached)} cached prompt tokens`:"No prompt cache hit",style:{color:e.cache_hit?a.good:a.textMuted}},e.cache_hit?"\u26A1 cache hit":"\u25CF generated"),e.thinking&&be.default.createElement("span",{className:"text-amber-500",title:`${Nu(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Nu(e.tokens.thinking)),be.default.createElement("span",null,e.model||"unknown-model"),e.provider&&be.default.createElement("span",null,e.provider),be.default.createElement("span",{className:"text-blue-500"},"in:",Nu(e.tokens.input)),be.default.createElement("span",{className:"text-green-500"},"out:",Nu(e.tokens.output)),e.finish_reason&&be.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&be.default.createElement("span",null,Kn(d)),c&&be.default.createElement("a",{href:nt(`/traces?trace=${c}`),title:`${c} \u2014 open in Traces`,style:{color:a.link},className:"hover:underline",onClick:m=>m.stopPropagation()},"trace:",c.slice(0,8)," \u2192"),l&&be.default.createElement("span",{style:{color:a.textMuted}},"trace unavailable")),be.default.createElement("div",{className:"flex items-center gap-2 mt-1"},c&&!l?be.default.createElement(DM,{trace:i,darkMode:t}):d>0?be.default.createElement("div",{className:"rounded flex-1",style:{height:"8px",background:a.trackBg}},be.default.createElement("div",{className:"rounded",style:{height:"8px",width:`${Math.max(d/r*100,2)}%`,background:"#ef4444"}})):null,p&&be.default.createElement(be.default.Fragment,null,be.default.createElement("span",{className:"font-mono flex-shrink-0",style:{fontSize:"10px",color:a.textMuted}},f," ",f===1?"span":"spans"),be.default.createElement(jp,{open:n,darkMode:t,size:12})))),n&&i&&be.default.createElement("div",{className:"mt-2 rounded-lg border p-3",style:{background:a.cardBg,borderColor:a.cardBorder}},be.default.createElement(I0,{trace:i,darkMode:t,compact:!0})))}function Tu({agentId:e=null,embedded:t=!1}){let{darkMode:r}=ut(),[n,o]=(0,be.useState)([]),[a,i]=(0,be.useState)(!0),[s,l]=(0,be.useState)(null),[u,c]=(0,be.useState)(null),[d,p]=(0,be.useState)({}),{timeWindow:f}=pl(),m=!t&&!e,y=()=>m?CY(Vn(),window.location.search):{view:"list",source:"all",project:null,codeId:null},[b,h]=(0,be.useState)(y),[g,v]=(0,be.useState)([]),{source:x,project:S}=b;(0,be.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,be.useEffect)(()=>{m&&fetch("/api/projects").then(L=>L.ok?L.json():{projects:[]}).then(L=>v(L.projects||[])).catch(()=>{})},[m]);let w=L=>{Qc(L),h(y())},A=L=>w(BC({source:x,project:S,...L})),k=L=>w(ds(L));(0,be.useEffect)(()=>{if(b.view!=="latest")return;let L=nI({source:x==="all"?"claude_code":x,project:S});fetch(`/api/interactions?${L}`).then(Y=>Y.json()).then(Y=>{let W=AY(Y.interactions),ie=W?ds(Up(W.id)):BC({source:x,project:S});window.history.replaceState({},"",nt(ie)),h(y())}).catch(()=>{})},[b.view,x,S]);let _=(0,be.useCallback)(async()=>{try{let L=await fetch(`/api/interactions?${nI({minutes:f.minutes,agentId:e,source:x,project:S})}`);if(!L.ok)throw new Error(`Request failed (${L.status})`);let Y=await L.json();o(Y.interactions||[]),l(null)}catch(L){l(L.message)}finally{i(!1)}},[f.minutes,e,x,S]);(0,be.useEffect)(()=>{_();let L=setInterval(_,SSe);return()=>clearInterval(L)},[_]);let[C,E]=(0,be.useState)("recent"),j=(0,be.useMemo)(()=>{let L=[...new Set(n.map(Y=>Y.display_name).filter(Boolean))].sort();return Object.fromEntries(L.map((Y,W)=>[Y,gX[W%gX.length]]))},[n]),X=(0,be.useMemo)(()=>{let L=n.reduce((W,ie)=>W+(ie.tokens?.total||0),0),Y=new Set(n.map(W=>W.display_name).filter(Boolean));return{interactions:n.length,tokens:L,agents:Y.size,avgTokens:n.length?Math.round(L/n.length):0}},[n]),z=(0,be.useMemo)(()=>{if(n.length===0)return[];let L=Date.now(),Y=f.bucketSeconds*1e3,W=Math.max(1,Math.round(f.minutes*60/f.bucketSeconds)),ie=Object.keys(j);return Array.from({length:W},(Me,pe)=>{let ce=L-(W-1-pe)*Y,Q=ce-Y,ee=n.filter($=>{let B=new Date($.last_activity_at).getTime();return B>=Q&&B1440?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($=>[$,ee.filter(B=>B.display_name===$).length]))}})},[n,j,f]),U=Math.max(0,Math.ceil(z.length/6)-1),N=(0,be.useCallback)(L=>{let Y=[...L];switch(C){case"tokens":return Y.sort((W,ie)=>(ie.tokens?.total||0)-(W.tokens?.total||0));case"messages":return Y.sort((W,ie)=>(ie.message_count||0)-(W.message_count||0));default:return Y.sort((W,ie)=>String(ie.last_activity_at).localeCompare(String(W.last_activity_at)))}},[C]),O=(0,be.useMemo)(()=>{let L=new Map;n.forEach(W=>{let ie=W.agent_name||W.agent?.name||"Unattributed",Me=W.action_name,pe=`${ie}#${Me||""}`;L.has(pe)||L.set(pe,{key:pe,title:Me?`${ie} ${Me.charAt(0).toUpperCase()}${Me.slice(1)} Agent Interactions`:`${ie} Interactions`,sessions:[],tokens:0,lastActivity:W.last_activity_at});let ce=L.get(pe);ce.sessions.push(W),ce.tokens+=W.tokens?.total||0,W.last_activity_at>ce.lastActivity&&(ce.lastActivity=W.last_activity_at)});let Y=[...L.values()].map(W=>({...W,sessions:N(W.sessions)}));return C==="tokens"?Y.sort((W,ie)=>ie.tokens-W.tokens):C==="messages"?Y.sort((W,ie)=>ie.sessions.length-W.sessions.length):Y.sort((W,ie)=>String(ie.lastActivity).localeCompare(String(W.lastActivity)))},[n,C,N]),D=async L=>{if(m&&Up(L)){k(Up(L));return}if(u===L){c(null);return}if(c(L),!d[L])try{let Y=await fetch(`/api/interactions/${L}`);if(Y.ok){let W=await Y.json();p(ie=>({...ie,[L]:W.interaction}))}}catch{}},[T,I]=(0,be.useState)({}),[P,H]=Xg(),G=qn(r);return m&&b.view==="conversation"?be.default.createElement(dI,{rootId:b.codeId,onBack:()=>w(BC({source:x,project:S}))}):a?be.default.createElement("div",{className:"flex items-center justify-center h-64"},be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):be.default.createElement("div",{className:"space-y-6"},be.default.createElement("div",{className:"flex items-start justify-between"},!t&&be.default.createElement("div",null,be.default.createElement("h1",{className:"text-2xl font-bold",style:{color:G.textPrimary}},"Interactions"),be.default.createElement("p",{className:"text-sm mt-1",style:{color:G.textSecondary}},"Persisted conversation streams per agent \u2014 messages, generations and provenance")),be.default.createElement("div",{className:"flex items-center gap-3"},be.default.createElement("div",{className:"flex items-center rounded-lg p-1",style:{background:r?"rgba(255,255,255,0.06)":"#f3f4f6"}},be.default.createElement("span",{className:"text-xs px-1",style:{color:G.textMuted}},"Sort"),bSe.map(L=>be.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:G.textPrimary,boxShadow:r?"none":"0 1px 2px rgba(0,0,0,0.08)"}:{color:G.textSecondary}},L.label))),be.default.createElement(fl,null))),m&&be.default.createElement("div",{className:"flex flex-wrap items-center gap-3","data-testid":"interactions-filters"},be.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"}},tI.map(L=>be.default.createElement("button",{key:L.id,type:"button",onClick:()=>A({source:L.id}),"aria-pressed":x===L.id,className:"px-2 py-1 text-xs rounded transition-colors",style:x===L.id?{background:r?"#2a2a2a":"#ffffff",color:G.textPrimary}:{color:G.textSecondary}},L.label))),g.length>0&&be.default.createElement("label",{className:"flex items-center gap-1 text-xs",style:{color:G.textSecondary}},"Project",be.default.createElement("select",{value:S||"",onChange:L=>A({project:L.target.value?Number(L.target.value):null}),className:"text-xs rounded border px-1 py-0.5",style:{background:G.cardBg,borderColor:G.cardBorder,color:G.textPrimary}},be.default.createElement("option",{value:""},"All projects"),g.map(L=>be.default.createElement("option",{key:L.id,value:L.id},L.name)))),be.default.createElement("button",{type:"button",onClick:()=>w(`/interactions/latest${S?`?project=${S}`:""}`),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")),be.default.createElement(VM,{agentId:e}),s&&be.default.createElement("div",{className:"p-3 rounded-lg text-sm",style:{background:r?"rgba(239,68,68,0.1)":"#fef2f2",color:"#ef4444"}},"Failed to load interactions: ",s),n.length>0&&be.default.createElement("div",{className:"rounded-xl border p-4",style:{backgroundColor:G.cardBg,borderColor:G.cardBorder}},be.default.createElement("div",{className:"flex items-center justify-between mb-3"},be.default.createElement("h3",{className:"text-sm font-semibold",style:{color:G.textPrimary}},"Interactions over time"),be.default.createElement("div",{className:"flex items-center gap-3 flex-wrap justify-end"},Object.entries(j).map(([L,Y])=>be.default.createElement("span",{key:L,className:"flex items-center gap-1.5 text-xs",style:{color:G.textSecondary}},be.default.createElement("span",{className:"inline-block w-2 h-2 rounded-full",style:{background:Y}}),L)))),be.default.createElement("div",{className:"h-32"},be.default.createElement(yc,{width:"100%",height:"100%"},be.default.createElement(Yc,{data:z},be.default.createElement("defs",null,Object.entries(j).map(([L,Y])=>be.default.createElement("linearGradient",{key:L,id:`ix-gradient-${L.replace(/\W/g,"-")}`,x1:"0",y1:"0",x2:"0",y2:"1"},be.default.createElement("stop",{offset:"5%",stopColor:Y,stopOpacity:.6}),be.default.createElement("stop",{offset:"95%",stopColor:Y,stopOpacity:.05})))),be.default.createElement(yu,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),be.default.createElement(wu,{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}),be.default.createElement(ku,{stroke:r?"rgba(255,255,255,0.4)":"#9ca3af",tick:{fontSize:10,fill:r?"rgba(255,255,255,0.5)":"#6b7280"},tickLine:!1,axisLine:!1,allowDecimals:!1}),be.default.createElement(Dc,{contentStyle:{background:r?"#1f1f1f":"white",border:`1px solid ${G.cardBorder}`,borderRadius:"8px"},labelStyle:{color:G.textPrimary,fontWeight:"600",marginBottom:"4px"}}),Object.entries(j).map(([L,Y])=>be.default.createElement(xu,{key:L,type:"monotone",dataKey:L,stackId:"1",stroke:Y,strokeWidth:2,fill:`url(#ix-gradient-${L.replace(/\W/g,"-")})`}))))),be.default.createElement("div",{className:"flex items-center gap-8 pt-3 mt-3 border-t",style:{borderColor:G.cardBorder}},[{label:"Interactions",value:X.interactions.toLocaleString()},{label:"Agents",value:X.agents.toLocaleString()},{label:"Total tokens",value:Nu(X.tokens)},{label:"Avg / interaction",value:Nu(X.avgTokens)}].map(L=>be.default.createElement("div",{key:L.label},be.default.createElement("div",{className:"text-lg font-bold",style:{color:G.textPrimary}},L.value),be.default.createElement("div",{className:"text-xs",style:{color:G.textSecondary}},L.label))))),n.length===0?be.default.createElement("div",{className:"text-center py-12"},be.default.createElement("div",{className:"text-lg",style:{color:G.textMuted}},"No interactions in the last ",f.label),be.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")):be.default.createElement("div",{className:"space-y-8"},O.map(L=>be.default.createElement("div",{key:L.key,className:"space-y-4"},be.default.createElement("div",{className:"flex items-baseline justify-between"},be.default.createElement("h2",{className:"text-sm font-semibold",style:{color:G.textPrimary}},L.title),be.default.createElement("span",{className:"text-xs",style:{color:G.textMuted}},L.sessions.length," ",L.sessions.length===1?"interaction":"interactions",L.tokens>0&&` \xB7 ${Nu(L.tokens)} tokens`)),L.sessions.map(Y=>{let W=d[Y.id],ie=u===Y.id,Me=T[Y.id]||"conversation",pe=Y.tokens?.total||0,ce=(Y.tokens?.input||0)+(Y.tokens?.output||0)||pe;return be.default.createElement(vC,{key:Y.id,darkMode:r,className:"shadow-sm"},be.default.createElement("div",{className:`flex items-center justify-between flex-wrap gap-y-2 p-4 cursor-pointer transition-colors ${r?"hover:bg-white/5":"hover:bg-gray-50"}`,onClick:()=>D(Y.id),style:ie?{background:G.hoverBg}:void 0},be.default.createElement("div",{className:"flex items-center gap-3 min-w-0"},rI(Y)?be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(249,115,22,0.15)":"#fff7ed",color:r?"#fdba74":"#c2410c"},title:`${Y.turn_count} ${Y.turn_count===1?"turn":"turns"}${Y.active?", one running now":""}`},Y.runner==="codex"?"CODEX":"CLAUDE CODE",Y.active?" \xB7 LIVE":""):Y.source==="telemetry"?be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium rounded flex-shrink-0",style:{background:r?"rgba(168,85,247,0.15)":"#faf5ff",color:r?"#d8b4fe":"#7e22ce"},title:"Reported by an app running this agent outside the platform"},"REPORTED"):be.default.createElement("span",{className:"px-2 py-1 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),be.default.createElement("span",{className:"font-mono text-sm truncate",style:{color:G.textPrimary}},Y.display_name),Y.agent&&be.default.createElement("span",{className:"text-sm truncate",style:{color:G.textSecondary}},Y.agent.name),Y.service_name&&be.default.createElement("span",{className:"text-sm truncate font-mono",style:{color:G.textMuted}},Y.service_name)),be.default.createElement("div",{className:"flex items-center gap-4 flex-shrink-0"},be.default.createElement(Jc,{darkMode:r,cells:[{key:"activity",width:ka.count,content:Y.message_count>0?`${Y.message_count} messages`:`${Y.tool_count||0} tool ${Y.tool_count===1?"call":"calls"}`},{key:"tokens",width:ka.tokens,title:"Tokens across this interaction",empty:"No token counts recorded for this interaction",content:pe>0&&`${Nu(pe)} tokens`},{key:"context",width:ka.context,empty:"Context: this interaction recorded no token counts",content:pe>0&&be.default.createElement(Zc,{compact:!0,darkMode:r,label:"Context",used:ce,limit:E0(Y.model),segments:[{key:"messages",label:"Context",tokens:ce}]})},{key:"age",width:ka.age,title:Y.last_activity_at||void 0,empty:"No activity recorded",content:hX(Y.last_activity_at)&&be.default.createElement("span",{style:{color:G.textMuted}},hX(Y.last_activity_at))}]}),Y.source!=="telemetry"&&be.default.createElement(ed,{kind:"context",id:Y.id,title:"Replay this conversation"}),be.default.createElement(jp,{open:ie,darkMode:r}))),!ie&&be.default.createElement(Yg,{darkMode:r,onClick:()=>D(Y.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:Y.preview?.input,color:Pn("user",r).color},{label:"output",text:Y.preview?.output,color:Pn("assistant",r).color}]}),ie&&be.default.createElement("div",{className:"border-t p-4 space-y-3",style:{borderColor:G.cardBorder,background:G.innerBg}},W?be.default.createElement(be.default.Fragment,null,be.default.createElement("div",{className:"flex items-center justify-between flex-wrap gap-y-2"},be.default.createElement(M0,{options:wSe,value:Me,onChange:Q=>I(ee=>({...ee,[Y.id]:Q})),darkMode:r}),be.default.createElement("span",{className:"text-xs",style:{color:G.textSecondary}},W.messages.length," ",W.messages.length===1?"message":"messages",W.generations.length>0&&` \xB7 ${W.generations.length} ${W.generations.length===1?"generation":"generations"}`)),Me==="conversation"&&be.default.createElement(be.default.Fragment,null,W.messages.length===0&&be.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."),be.default.createElement(ls,{darkMode:r,messages:W.instructions?[{id:`ctx-${Y.id}-system`,role:"system",content:W.instructions,created_at:Y.created_at},...W.messages]:W.messages}),(()=>{let Q=xSe(W);return Q?be.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:G.cardBorder}},be.default.createElement(Zc,{...Q,label:"Context pressure",estimated:!0,darkMode:r})):null})()),Me==="spans"&&(W.generations.length===0?be.default.createElement("div",{className:"text-sm",style:{color:G.textMuted}},"No generations recorded for this interaction \u2014 nothing to trace."):be.default.createElement("div",{className:"space-y-2"},W.generations.map(Q=>be.default.createElement(kSe,{key:Q.id,generation:Q,darkMode:r,maxMs:Math.max(...W.generations.map(ee=>(ee.duration_seconds||0)*1e3),1),expanded:P(`${Y.id}:${Q.id}`),onToggle:()=>H(`${Y.id}:${Q.id}`)}))))):be.default.createElement("div",{className:"flex justify-center py-6"},be.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"}))))})))))}var je=Z(J());function vX(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 b=m();return r.set(d,{scenario:p,first:f,row:b}),b},l=new Set(e.map(d=>d.key)),u=e.map(d=>{let p=n(d.key);return p?s(d.key,d,p,()=>a(d,p)):d}),c=Object.keys(t).filter(d=>!l.has(d)).map(d=>{let p=n(d);return s(d,null,p,()=>i(d,p))});return[...u,...c]}var yX=e=>/^[1-9]\d*$/.test(e||"")?e:null;function pI(e){let t=new URLSearchParams(e),r=yX(t.get("evaluation"));return r?{evaluationId:r,runId:yX(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 we=Z(J());var _Se=["trace_error_rate","trace_latency"],hI=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],Ct=(e,t)=>`${e} ${t}${e===1?"":"s"}`,ox=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},bX=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),mI=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,CSe=(e,t)=>t>0?`${e}/${t} \xB7 ${mI(e/t)}`:"\u2014",wX=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},hl=e=>e?.type==="llm_judge"?"judge":_Se.includes(e?.type)?"telemetry":"rules",KC=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||bX(e.key);default:return bX(e?.key)}},nh=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 ${wX(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 ${wX(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${ox(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},ax=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},oh=(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"},yI=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,qp=(e,t=null)=>{let r=yI(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${Ct(a,"scenario")} \xD7 ${Ct(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${Ct(r,"model")}`:`${n} ${o} \xB7 ${Ct(e?.sample_size??0,"sample")}`},vI=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),ah=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var ix=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 ah(e).forEach(([,n])=>{vI(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},Kp=(e,t)=>!e||typeof e!="object"?null:vI(e)?t&&e[t]||null:e,kX=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,ASe=e=>!!e&&["pending","running"].includes(e.status),rh=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,Vp=(e,t)=>e!=null&&t?e/t:null,VC=(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=rh(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:rh(i,i.scenarios),reported:i.reported??null,estimated:VC(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:rh(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=ix(e);return o.length?o.map(a=>{let i=ah(e).map(([,s])=>Kp(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"}]},_X=(e,t)=>{let r=ah(e).map(([,o])=>Kp(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}},CX=20,Gp=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,sx=(e=[],t=null)=>{let r=Gp(e,t),n=e.length=CX;return`${Ct(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},AX=3,EX=(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"},sh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:Gp(r,n)-t,lx=(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"}},NX=(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}`:""}`}},TX=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}`:""}`}},Ci=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=rh(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:VC(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??Vp(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}},OX=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"},ux=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},cx=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 ")},ESe=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Ci(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:Vp(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},lh=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},xI=e=>e?e.standing?e.standing:e.archived_at?"archived":lh(e)?"current":"none":"none",NSe=["current","unrecorded"],PX=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(c=>String(c.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=0,u=0;return o.forEach(c=>{let d=lh(c),p=xI(c);if(!(n?!!d:!!d&&NSe.includes(p))){a.total+=1,p==="archived"?a.archived+=1:p==="stale"?a.stale+=1:a.none+=1;return}i.push(d),l+=d.samples_evaluated||0,u+=d.samples_passed||0,(c.per_model&&typeof c.per_model=="object"&&Object.keys(c.per_model).length?Object.entries(c.per_model).map(([y,b])=>({label:y,passed:b?.passed||0,total:b?.total||0})):ih(d).filter(y=>y.label&&y.samples>0).map(y=>({label:y.label,passed:y.passed||0,total:y.samples||0}))).forEach(({label:y,passed:b,total:h})=>{let g=s[y]||={label:y,passed:0,total:0};g.passed+=b,g.total+=h})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:l,samplesPassed:u,passRatio:l?u/l:null,perModel:Object.values(s),spend:ESe(i),focused:n}},MX=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 ")},YC=(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=[];ah(t).forEach(([u,c])=>{let d=ax(e,u);(vI(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[hl(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 ${Ct(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${mI(.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}`:""} ${mI(c.stats.score)} \xB7 expects ${nh(c.criterion)} \xB7 ${CSe(c.stats.passed,c.stats.total)} passed`)})}return r},SX=e=>String(e||"").replace(/_/g," "),IX=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}},XC=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=ih(e),i=new Map(a.map(c=>[c.label,c])),s=o&&o.length?o:a.map(c=>c.label),l=e?.scores?._verdict?.winner||null;return s.map(c=>{let d=i.get(c)||{},p=t.filter(C=>n(C)===c),f=p.filter(C=>C?.status&&C.status!=="pending"),m=d.samples??(r||p.length||null),y=d.passed??f.filter(C=>C.status==="passed").length,b=Object.keys(d.faults||{}).length?d.faults:f.reduce((C,E)=>E.fault?{...C,[E.fault]:(C[E.fault]||0)+1}:C,{}),h=C=>p.find(E=>E.fault===C)||null,g=C=>C==="low_quality"?1:0,v=Object.entries(b).sort((C,E)=>E[1]-C[1]||(h(E[0])?1:0)-(h(C[0])?1:0)||g(C[0])-g(E[0])||C[0].localeCompare(E[0])),[x,S]=v[0]||[],w=x?h(x):null,A=m||null,k=C=>C==null||!A?null:C/A,_=d.avg_score??(f.length&&f.some(C=>C.score!=null)?f.filter(C=>C.score!=null).reduce((C,E)=>C+Number(E.score),0)/f.filter(C=>C.score!=null).length:null);return{label:c,model:d.model||c,provider:d.provider||null,winner:l===c,passed:y,total:m,scored:d.samples??f.length,passRate:m?y/m:null,avgScore:_==null?null:Number(_),avgDurationMs:d.avg_duration_ms??null,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:Vp(d.cost,d.priced),faults:v.map(([C,E])=>({fault:C,name:SX(C),count:E})),typicalFault:x?{fault:x,name:SX(x),count:S,scenarioKey:w?.scenario_key||null,summary:(w?.diagnosis?.summary||w?.recommendation||"").toString().trim()||null}:null}}).sort((c,d)=>(d.passRate??-1)-(c.passRate??-1)||(d.avgScore??-1)-(c.avgScore??-1)||s.indexOf(c.label)-s.indexOf(d.label))},DX=(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 ${ox(s,t)}`},jX=(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}}),bI=(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}),$X=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,bI(e,r).length])),LX=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:zX(t)})),zX=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}`},dx=e=>zX(e?.sandbox),BX=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},FX=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",Yp=e=>e?.selection||e?.scores?._selection||{},UX=e=>(Yp(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function px(e,t=[]){let r=Yp(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):ASe(e)||e.status==="failed"?n.map(o=>o.key):[]}var wI=(e,t=[])=>{let r=Yp(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}},WX=(e=[],t=[])=>Xp((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),HX=(e,t=[])=>{let r=Yp(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:Xp(n,t).keys}:{}},SI=272,kI=16,qX=32,KX=940,_I="clamp(360px, calc(100vh - 240px), 900px)",VX=320,TSe=3,GX=3,YX=720,gI="aa.evaluations.detail",XX=e=>368+138*e,ZX=e=>504+170*e,JX=e=>{try{let t=e?.getItem(gI);return t==="tools"||t==="steps"?t:null}catch{return null}},QX=(e,t)=>{try{t==null?e?.removeItem?.(gI):e?.setItem(gI,t)}catch{}},RX=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,eZ=(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))},CI=(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},AI=(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,ZC=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},rZ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=ZC(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},nZ=(e={},t=[])=>{let r=rZ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},oZ=(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")}},EI=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,rZ(r.map(o=>e[o]?.[n]))])),aZ=(e=[],t={},r=[])=>{let n=e.map(o=>AI(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},iZ=(e,t=Date.now())=>{if(!e)return null;let r=e.usage?.runtime_ms;if(r!=null&&Number.isFinite(Number(r)))return Number(r);if(e.status==="pending"||e.status==="failed"||!e.created_at)return null;let n=Date.parse(e.created_at),o=e.completed_at?Date.parse(e.completed_at):t;return!Number.isFinite(n)||!Number.isFinite(o)?null:Math.max(0,o-n)},th=e=>String(e).padStart(2,"0"),sZ=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}=sZ(e);return t?`${t}:${th(r)}:${th(n)}`:`${th(r)}:${th(n)}`},NI=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=sZ(e);return o<60?`${o}s`:t?`${t}h ${th(r)}m`:`${r}m ${th(n)}s`},JC=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?NI(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},uZ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},OSe=(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,cZ=(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&&OSe(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},dZ=(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},pZ=(e=[],t=TSe)=>{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 ")}]},TI=(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)},fZ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),mZ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var PSe=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],gZ=["openai","anthropic","ollama","openrouter","mock"];function MSe(e,t=gZ){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=PSe.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function ISe(e,t,r=gZ){let n=MSe(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function hZ(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:ISe(r,o)}]:[]}))}function fx(e,{providers:t,qualify:r=!0}){let n=hZ(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function yZ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=hZ(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 td(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function mx(e){return e.join(", ")}function vZ(e,t){return[...new Set([...e,...td(t)])]}function xZ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function bZ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function wZ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var uh=Z(J()),Bs=typeof window>"u"?uh.useEffect:uh.useLayoutEffect;function gx(e){let[t,r]=(0,uh.useState)(0);return Bs(()=>{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 Xo=Z(J());function hx({value:e,onChange:t,models:r=[],placeholder:n,style:o,title:a,describedBy:i,inputId:s,inputLabel:l,testId:u}){let[c,d]=(0,Xo.useState)(""),[p,f]=(0,Xo.useState)(""),m=(0,Xo.useRef)(null),y=(0,Xo.useId)(),b=td(e),h=(0,Xo.useRef)(b);h.current=b;let g=k=>{let _=vZ(h.current,k);_.length!==h.current.length&&(t(mx(_)),f(`Added ${_.slice(h.current.length).join(", ")}`)),d("")},v=k=>{t(mx(h.current.filter(_=>_!==k))),f(`Removed ${k}`),m.current?.focus()},x=(k,_)=>{if(k.includes(",")){let{complete:C,rest:E}=xZ(k);g(C),d(E)}else bZ(_.nativeEvent?.inputType,k,r)?g(k):d(k.trimStart())},S=k=>{let _=wZ(k,c,h.current.length);_==="commit"?(k.preventDefault(),setTimeout(()=>g(m.current?.value||""),0)):_==="removeLast"&&(k.preventDefault(),v(h.current[h.current.length-1]))},w=r.filter(k=>!b.includes(k)),A=[i,a&&`${y}-title`,`${y}-selected`].filter(Boolean).join(" ");return Xo.default.createElement("div",{"data-testid":u,onClick:k=>{k.target===k.currentTarget&&m.current?.focus()},style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,cursor:"text",...o}},b.map(k=>Xo.default.createElement("span",{key:k,style:DSe},Xo.default.createElement("span",{style:{overflowWrap:"anywhere"}},k),Xo.default.createElement("button",{type:"button",onClick:()=>v(k),"aria-label":`Remove ${k}`,title:`Remove ${k}`,style:jSe},"\xD7"))),Xo.default.createElement(Yl,{inputRef:m,id:s,"aria-label":l,"aria-describedby":A,title:a,value:c,models:w,onChange:x,onKeyDown:S,onBlur:()=>{c.trim()&&g(c)},placeholder:b.length?"Add a model":n,style:{flex:"1 1 80px",minWidth:80,padding:0,border:"none",background:"transparent",font:"inherit",color:"inherit"}}),a&&Xo.default.createElement("span",{id:`${y}-title`,style:OI},a),Xo.default.createElement("span",{id:`${y}-selected`,style:OI},b.length?`Chosen: ${b.join(", ")}`:"No models chosen"),Xo.default.createElement("span",{role:"status","aria-live":"polite",style:OI},p))}var DSe={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:V,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},jSe={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},OI={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Xe=Z(J());var Ai=Z(J());var $Se="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",LSe="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",Zp="var(--color-text-muted)",QC=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Ou=(e,t=!1)=>Or(e,{estimated:t}),SZ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${Or(e.agent.cost,{estimated:e.agent.estimated})}`,Ct(e.agent.count,QC(e))];e.agent.perInteraction!=null&&n.push(`${Ou(e.agent.perInteraction,e.agent.estimated)} each`),r.push(n.join(" \xB7 "))}return e.judge&&r.push(`judge ${Or(e.judge.cost,{estimated:e.judge.estimated})} \xB7 ${Ct(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${Or(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function Jp({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 Ai.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}},Ai.default.createElement(Ve,{size:10,color:Zp},e),Ai.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:V,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Ai.default.createElement("div",{style:{marginTop:4,fontFamily:V,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var kZ={value:"\u2026",valueColor:Zp,sub:"priced when the run completes"};function PI({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${An(n.inputTokens)} \xB7 out ${An(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:Zp,sub:"nothing replayed"}:t?kZ:{value:n?Or(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:Zp,sub:n?`${Ct(n.count,QC(e))}${n.perInteraction!=null?` \xB7 ${Ou(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Ai.default.createElement(Jp,{label:"Agent cost",title:$Se,testId:"run-spend-agent",...a})}function MI({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[Ct(o.calls,"call"),cx(o),o.model,ux(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:Zp,sub:i}:r?kZ:{value:o?Or(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:Zp,sub:i};return Ai.default.createElement(Jp,{label:"Judge cost",title:LSe,testId:"run-spend-judge",...s})}function II({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Ai.default.createElement(Fe,{padding:0,testId:r,style:{overflow:"hidden"}},Ai.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Ai.default.createElement(PI,{spend:e}),Ai.default.createElement(MI,{spend:e,judgedBy:t}),Ai.default.createElement(Jp,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?Or(n,{estimated:o}):"\u2014",sub:OX(e),testId:"run-spend-total"})),o&&Ai.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:V,fontSize:11,color:Zp}},Rs))}function Rp({run:e,testId:t,short:r=!1}){if(!e)return Xe.default.createElement(Ee,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Xe.default.createElement(Ee,{tone:"error",testId:t},"failed");if(e.status==="pending")return Xe.default.createElement(Ee,{tone:"warning",testId:t},"queued");if(e.status==="running")return Xe.default.createElement(Ee,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=lo(e.samples_passed||0,e.samples_evaluated);return Xe.default.createElement(Ee,{tone:Au(kX(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 Xe.default.createElement(Ee,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${ea(n)}`)}return Xe.default.createElement(Ee,{tone:"muted",testId:t},"no samples")}function e2({run:e,testId:t="run-version"}){let r=TX(e);return r?Xe.default.createElement(Ee,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var Qp={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},yx={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},_Z=ka.cost+32,zSe=e=>ih(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:mo(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),AZ=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,qp(t,e),oh(t,e),dx(e)&&`against ${dx(e)}`].filter(Boolean).join(" \xB7 ");function t2({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=sh(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):lx(l,d,{olderNumber:p}),m=f&&d?NX(l,d):null,y=Ci(l);return{run:l,number:c,latest:u===0,when:fo(l.completed_at||l.created_at),meta:AZ(l,r,n),bars:i?i(l):zSe(l),delta:f,version:m,spend:y,selected:l.id===o}})}function LI({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=t2({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Xe.default.createElement(Zr,{title:u,meta:sx(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Xe.default.createElement(hn,null,"[ ] no runs yet"),Xe.default.createElement("div",{style:{minWidth:920}},p.map(f=>Xe.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"}`}},Xe.default.createElement("div",{style:{minWidth:0}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Xe.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Xe.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Xe.default.createElement(Ee,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Xe.default.createElement(Ee,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Xe.default.createElement(e2,{run:f.run})),Xe.default.createElement("div",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Xe.default.createElement("div",{style:{fontFamily:V,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Xe.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Xe.default.createElement("span",{style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Xe.default.createElement(Lp,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Xe.default.createElement(Jc,{darkMode:d,cells:[{key:"agent",width:_Z,title:f.spend?.agent?`Agent: ${Ct(f.spend.agent.count,QC(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${Ou(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&&Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11}},Xe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Or(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:_Z,title:f.spend?.judge?`Judge: ${Ct(f.spend.judge.calls,"call")}${cx(f.spend.judge)?` \xB7 ${cx(f.spend.judge)}`:""}${ux(f.spend.judge)?` \xB7 ${ux(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11}},Xe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"judge "),Or(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&&Xe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:600,color:Qp[f.delta.tone]||Qp.muted}},f.delta.text),f.version&&Xe.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:V,fontSize:10,color:yx[f.version.kind]||yx.same}},f.version.text))},{key:"badge",width:132,content:Xe.default.createElement(Rp,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Xe.default.createElement(Va,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var CZ='[data-testid="evaluation-run"]',BSe=150,DI=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,jI=(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))},FSe=(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},USe=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:fo(e.completed_at||e.created_at),meta:AZ(e,t,r),bars:n||[],delta:null,version:null,spend:Ci(e),selected:e.id===o}),$I={fontFamily:V,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function WSe({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Xe.default.createElement("span",{style:{...$I,width:96,flexShrink:0},title:e.label||void 0},e.short),Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Xe.default.createElement("div",{title:t},Xe.default.createElement(Lp,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function RC({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"?FSe(e.bars):null,c=pZ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Xe.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}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Xe.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Xe.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Xe.default.createElement(e2,{run:s}),Xe.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Xe.default.createElement(Rp,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Xe.default.createElement(WSe,{key:p.label||"all",bar:p})),u&&Xe.default.createElement(wC,{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&&Xe.default.createElement("div",{style:{...$I,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Xe.default.createElement("div",{"data-testid":"evaluation-run-note",style:$I,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Xe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:V,fontSize:10,minWidth:0}},e.delta&&Xe.default.createElement("span",{style:{fontWeight:600,color:Qp[e.delta.tone]||Qp.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Xe.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Or(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function zI({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:b=VX,testId:h="suite-runs-panel",style:g}){let v=e??t2({runs:t,runCount:r,evaluation:n,agentName:o,selectedId:a,previousRun:s,barsFor:l,deltaFor:u}),x=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,A=d&&!v.some(W=>W.run.id===d.id)?USe(d,{evaluation:n,agentName:o,bars:p,selectedId:S}):null,k=f==="strip",_=k?EX(v.map(W=>W.run),{limit:m,selectedId:S}).map(W=>v[W]):v,C=A?[A,..._]:_,E=v.length-_.length,j=k&&Number.isFinite(m)&&E>0,X=Gp(x,r)-x.length,z=(C.find(w)||C[0])?.run.id??null,U=(v.find(w)||v[0])?.run.id??null,[N,O]=(0,Xe.useState)(!1),D=(0,Xe.useRef)(null),T=(0,Xe.useRef)(null),I=(0,Xe.useRef)(null),P=(0,Xe.useRef)(null);(0,Xe.useEffect)(()=>()=>clearTimeout(P.current),[]),(0,Xe.useEffect)(()=>{j||O(!1)},[j]);let H=new Map(C.concat(v).map(W=>[String(W.run.id),W.run])),G=W=>{clearTimeout(P.current),P.current=setTimeout(()=>i?.(W),BSe)},L=(W,{next:ie,prev:Me,axis:pe})=>ce=>{let Q=W.current,ee=Q?Array.from(Q.querySelectorAll(CZ)):[];if(ee.length===0)return;let $=ce.target.closest(CZ),B=ee.indexOf($),K;if(ce.key===ie)K=ee[Math.min(B+1,ee.length-1)];else if(ce.key===Me)K=ee[Math.max(B-1,0)];else if(ce.key==="Home")K=ee[0];else if(ce.key==="End")K=ee[ee.length-1];else return;if(ce.preventDefault(),!K||K===$)return;K.focus({preventScroll:!0}),jI(Q,K,pe);let M=H.get(K.dataset.runId);M&&G(M)};Bs(()=>{if(N||I.current==null)return;let W=DI(T.current,I.current);I.current=null,W?.focus({preventScroll:!0})},[N]),Bs(()=>{S!=null&&(jI(T.current,DI(T.current,S),"x"),jI(D.current,DI(D.current,S),"y"))},[S,f,N]);let Y=X>0&&Xe.default.createElement("div",{style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${Ct(X,"older run")} \xB7 reachable by link`);return k?Xe.default.createElement(Zr,{title:"Runs",meta:sx(x,r),testId:h,style:g},Xe.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&&Xe.default.createElement(hn,{style:{flex:1}},"[ ] no runs yet"),C.map((W,ie)=>Xe.default.createElement(RC,{key:W.run.id,row:W,card:!0,selected:w(W),tabIndex:z===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:V,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${Ct(E,"earlier run")}`),j&&N&&Xe.default.createElement("div",{ref:D,onKeyDown:L(D,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{maxHeight:b,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},v.map(W=>Xe.default.createElement(RC,{key:W.run.id,row:W,selected:w(W),tabIndex:U===W.run.id?0:-1,noteFor:c,onOpen:ie=>{I.current=ie.id,O(!1),i?.(ie)}})),Y)):Xe.default.createElement(Zr,{title:"Runs",meta:sx(x,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:y||void 0,...g},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Xe.default.createElement("div",{ref:D,onKeyDown:L(D,{next:"ArrowDown",prev:"ArrowUp",axis:"y"}),style:{flex:1,minHeight:0,overflowY:"auto",position:"relative",scrollbarGutter:"stable"}},A&&Xe.default.createElement(Xe.default.Fragment,null,Xe.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${x.length}`),Xe.default.createElement(RC,{row:A,selected:w(A),tabIndex:z===A.run.id?0:-1,onOpen:i,noteFor:c})),!A&&v.length===0&&Xe.default.createElement(hn,null,"[ ] no runs yet"),v.map(W=>Xe.default.createElement(RC,{key:W.run.id,row:W,selected:w(W),tabIndex:z===W.run.id?0:-1,onOpen:i,noteFor:c})),Y))}var EZ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[Ct(n,"run"),r?`latest #${sh(r,0,e,t)} ${fo(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${lo(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Wt=Z(J());var ps="var(--color-text-muted)",BI=3,NZ={passed:0,total:0},TZ={items:0,faults:0,scenarios:0},HSe={keys:[],dropped:[]},yl=(e,t,r={})=>({fontFamily:V,fontSize:e,color:t,...r}),qSe=e=>typeof window>"u"?"#":nt(e),KSe=e=>{let[t,r]=(0,Wt.useState)(()=>Date.now());return(0,Wt.useEffect)(()=>{if(!e)return;r(Date.now());let n=setInterval(()=>r(Date.now()),1e3);return()=>clearInterval(n)},[e]),t};function OZ({short:e,label:t}){return Wt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Wt.default.createElement("span",{style:yl(10,ps,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Wt.default.createElement("span",{style:yl(11,ps)},"\u2014"))}function FI({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=NZ,settledCount:m=0,settledFailed:y=0,expectedResults:b=0,running:h=!1,loading:g=!1,spend:v=null,fixSummary:x=TZ,selectionLabel:S=null,sandboxLabel:w=null,reportPath:A=null,rerun:k=HSe,onSelectLatest:_,onWatchLatest:C,onJumpToFix:E,onRerunFailed:j,onRunAgain:X}){let{darkMode:z}=ut(),U=KSe(h);if(!e)return null;let N=e.status==="failed",O=e.status==="complete",D=h?`started ${fo(e.created_at)}`:fo(e.completed_at||e.created_at),T=`@${a} \xB7 ${Ct(i,"scenario")}${s?` in ${Ct(s,"group")}`:""} \xD7 ${Ct(l.length,"model")} \xB7 judged by ${u}${w?` \xB7 against ${w}`:""}`,I=k?.keys||[],P=k?.dropped||[],H=P.length?`${I.length} of ${I.length+P.length}`:`${I.length}`,G="Replay every scenario that failed on any model, under the models in the picker"+(P.length?` \xB7 not replayed (disabled or removed): ${P.join(", ")}`:""),L=iZ(e,U),Y=[{key:"duration",width:ka.duration,content:L!=null&&Wt.default.createElement("span",{style:yl(11)},h?lZ(L):NI(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&&Wt.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Wt.default.createElement("span",{style:yl(11,Qp[d.tone]||Qp.muted,{fontWeight:600})},d.text),p&&Wt.default.createElement("span",{"data-testid":"run-version-delta",style:yl(10,yx[p.kind]||yx.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:Wt.default.createElement(Rp,{run:e,testId:"suite-run-badge"})}],W=f||NZ,ie=W.total>0?W.passed/W.total:null,Me=N?{value:"\u2014",valueColor:ps,sub:m?`${m} of ${b} before it failed`:"run failed"}:h?{value:`${W.passed} passed`,sub:Wt.default.createElement("span",{"data-testid":"suite-run-progress"},`${m} of ${b} results in${y?` \xB7 ${y} failed`:""}`)}:{value:lo(W.passed,W.total),valueColor:ie==null?ps:po[Au(ie)].text,sub:`${Math.max(W.total-W.passed,0)} failed \xB7 ${Ct(i,"scenario")} \xD7 ${Ct(l.length,"model")}`},pe=c.slice(0,BI),ce=Wt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:5,fontWeight:400,lineHeight:"normal"}},c.length===0&&l.length===0&&Wt.default.createElement("span",{style:yl(11,ps)},"\u2014"),c.length===0&&l.map(F=>Wt.default.createElement(OZ,{key:F,short:mo(F).short,label:F})),pe.map(F=>F.passed==null||F.total==null?Wt.default.createElement(OZ,{key:F.label||"all",short:F.short,label:F.label}):Wt.default.createElement(Lp,{key:F.label||"all",label:F.short,labelWidth:110,passed:F.passed,total:F.total,height:4,valueWidth:48}))),Q=c.length>BI?Wt.default.createElement("span",{style:yl(10,ps)},`+${c.length-BI} more`):void 0,ee=x||TZ,$=N?{value:"\u2014",valueColor:ps,sub:"\u2014"}:g?{value:"\u2026",valueColor:ps,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:ps,sub:"scoring\u2026"}:ee.items>0?{value:ee.items,valueColor:po.error.text,sub:Wt.default.createElement("span",{style:{color:"var(--color-info)"}},`${Ct(ee.faults,"fault")} across ${Ct(ee.scenarios,"scenario")} ${D0.link}`)}:{value:"0",valueColor:ps,sub:"nothing to fix"},B=()=>E?.(),M=N?{}:{role:"button",tabIndex:0,onClick:B,onKeyDown:F=>{(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),B())},style:{cursor:"pointer"}},ae=`The faults this run found, grouped into fixes${N?"":" \u2014 opens What to fix"}`;return Wt.default.createElement(Fe,{padding:0,testId:"suite-run-header",style:{overflow:"hidden"}},Wt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",padding:"10px 16px",borderBottom:"1px solid var(--color-border-light)"}},Wt.default.createElement("span",{style:yl(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Wt.default.createElement("span",{style:yl(11,ps,{whiteSpace:"nowrap"})},D),n&&Wt.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Wt.default.createElement(e2,{run:e}),Wt.default.createElement("span",{style:yl(11,ps,{minWidth:0,textWrap:"pretty"})},T),S&&Wt.default.createElement(Ee,{tone:"muted",size:10,style:{padding:"1px 6px"},testId:"suite-run-selection"},S),!n&&Wt.default.createElement(gn,{onClick:()=>_?.(),title:"Show the suite's latest run",testId:"suite-latest-run"},`latest${r!=null?` #${r}`:""}`),o&&Wt.default.createElement(gn,{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&&I.length>0&&Wt.default.createElement(gn,{onClick:()=>j?.(),title:G,testId:"suite-rerun-failed"},`re-run failed (${H})`),N&&Wt.default.createElement(gn,{onClick:()=>X?.(),title:"Replay what this run was asked to, under the models in the picker",testId:"suite-run-again"},"run again"),A&&Wt.default.createElement(gn,{href:qSe(A),onClick:()=>dt(A),title:"The run rendered as a report page",testId:"suite-run-report"},"run report"),Wt.default.createElement("span",{style:{marginLeft:"auto"}},Wt.default.createElement(Jc,{darkMode:z,cells:Y}))),Wt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Wt.default.createElement(Jp,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...Me}),Wt.default.createElement(Jp,{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:Q}),Wt.default.createElement(PI,{spend:v,pending:h,failed:N}),Wt.default.createElement(MI,{spend:v,judgedBy:u,pending:h,failed:N}),Wt.default.createElement(Jp,{label:"To fix",title:ae,testId:"suite-to-fix",...M,...$})),h&&b>0&&Wt.default.createElement(wC,{parts:[{value:m-y,tone:"success"},{value:y,tone:"error"}],total:b,height:4,radius:0,role:"progressbar","aria-label":"Results in","aria-valuemin":0,"aria-valuemax":b,"aria-valuenow":m,"aria-valuetext":`${m} of ${b} results in${y?`, ${y} failed`:""}`,testId:"suite-run-progress-bar"}),N&&Wt.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 _o=Z(J());function tf({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=>ax(e,m)),c={fontFamily:V,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:V,fontSize:11,color:"var(--color-text-cell)"},p=(m,y,b)=>_o.default.createElement("span",{"data-testid":y,title:b,style:{...c,fontSize:10,textTransform:"uppercase",letterSpacing:"0.04em",marginLeft:2}},m),f=SZ(n,{total:o});return _o.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6,paddingTop:12,borderTop:"1px solid var(--color-border-light)"},"data-testid":"criteria-footer"},_o.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",rowGap:4}},_o.default.createElement("span",{style:c},"judge"),_o.default.createElement("span",{style:{...d,fontWeight:600}},oh(e,t)),_o.default.createElement("span",{style:{...c,marginLeft:8}},"criteria"),u.length===0&&_o.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)=>_o.default.createElement(_o.default.Fragment,{key:m.key||y},y>0&&_o.default.createElement("span",{style:c},"\xB7"),_o.default.createElement("span",{style:d,title:nh(m)||void 0},KC(m)),hl(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),hl(m)==="judge"&&p("judge",void 0,"Scored by the judge model; needs provider credentials"))),_o.default.createElement("span",{style:{...c,marginLeft:8},title:"A sample or scenario passes at or above this score","data-testid":"criteria-threshold"},T1(.7))),_o.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",rowGap:4}},_o.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},title:"Run this evaluation again from the API"},"POST /api/evaluations/",e.id,"/run"),f&&_o.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&&_o.default.createElement("span",{style:{...c,whiteSpace:"nowrap"},"data-testid":"criteria-cost-legend"},Rs),a&&_o.default.createElement(gn,{href:nt(a),onClick:()=>dt(a),title:"The run rendered as a report page"},"run report"),i&&_o.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:V,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var VSe=["tools","contains","not_contains"];function GSe(e){let t=e.expectations||{},r=[];return VSe.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 PZ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(GSe(n))}),t.join(` -`)}var ue=Z(J());var Dr=Z(J());var YSe=e=>e>=.85?"success":e>=.7?"warning":"error";function ch({label:e,children:t,title:r,nowrap:n=!0}){return Dr.default.createElement("span",{style:{whiteSpace:n?"nowrap":"normal"},title:r},e," ",Dr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},t))}function vx({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:b=null,judgeCalls:h=0,judgeEstimated:g=!1,unit:v="interaction",badges:x=[],note:S,testId:w="model-scorecard"}){let A=o!=null&&a>0,k=A?o/a:null,_=A?Au(k):i!=null?YSe(i):"muted",C=po[_].strong,E=b!=null||h>0;return Dr.default.createElement(Fe,{padding:"14px 16px",testId:w,style:{display:"flex",flexDirection:"column",gap:10,minWidth:0}},Dr.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Dr.default.createElement("span",{style:{fontFamily:V,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&Dr.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},r),n&&Dr.default.createElement(Ee,{tone:"info",size:10,style:{padding:"1px 6px"},testId:"judges-pick"},"judge's pick")),Dr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},Dr.default.createElement("span",{style:{fontFamily:V,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},A?lo(o,a):i!=null?ea(i):"\u2014"),Dr.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},A?`${v==="scenario"?"scenarios":"samples"} passed`:i!=null?"mean score":"nothing scored")),Dr.default.createElement("span",{style:{display:"block",height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},Dr.default.createElement("span",{style:{display:"block",height:"100%",borderRadius:999,background:C,width:`${Math.round((k??i??0)*100)}%`}})),Dr.default.createElement("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontFamily:V,fontSize:11,color:"var(--color-text-secondary)"}},Dr.default.createElement(ch,{label:"score"},ea(i)),s&&Dr.default.createElement(ch,{label:"criteria"},lo(s.cleared,s.scored)),l!=null&&Dr.default.createElement(ch,{label:"latency"},Dn(l)),u!=null&&Dr.default.createElement(ch,{label:"p50 / p95"},`${Dn(u)} / ${Dn(c)}`),(d!=null||p!=null)&&Dr.default.createElement("span",{style:{whiteSpace:"nowrap"}},Dr.default.createElement("span",{style:{color:"var(--color-token-in)"}},"in")," ",Dr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Q0(d))," \xB7 ",Dr.default.createElement("span",{style:{color:"var(--color-token-out)"}},"out")," ",Dr.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Q0(p))),f!=null&&Dr.default.createElement(ch,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${Ou(m,y)} per ${v}`:""}${y?` \xB7 ${mm()}`:""}`},Or(f,{estimated:y}),m!=null&&Dr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Ou(m,y)} / ${v}`)),E&&Dr.default.createElement(ch,{label:"judge",title:"What the judge spent on this model's answers \u2014 the evaluation's own cost, not the model's"},Or(b,{estimated:g}),Dr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Ct(h,"call")}`))),(x.length>0||S)&&Dr.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},x.map(j=>Dr.default.createElement(Ee,{key:j.text,tone:j.tone,testId:j.testId},j.text)),S&&Dr.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:S.color||"var(--color-text-muted)"}},S.text)))}var yr=Z(J());var UI={fontFamily:V,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},WI={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},rf={...WI,fontFamily:V,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},nf={...UI,textAlign:"right"},XSe=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function xx({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 yr.default.createElement(Fe,{padding:0,style:{overflow:"hidden"},testId:a},yr.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10,padding:"10px 12px",flexWrap:"wrap"}},yr.default.createElement(Ve,null,o),yr.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},`${e.length} models \xB7 best first${r?` \xB7 judged by ${r}`:""}`),d&&yr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},Rs)),yr.default.createElement("div",{style:{overflowX:"auto"}},yr.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},yr.default.createElement("thead",null,yr.default.createElement("tr",{style:{background:"var(--color-muted)"}},yr.default.createElement("th",{style:UI},"Model"),yr.default.createElement("th",{style:nf},"Passed"),yr.default.createElement("th",{style:nf},"Mean score"),u&&yr.default.createElement("th",{style:nf},"Avg latency"),c&&yr.default.createElement("th",{style:nf,title:"Median and 95th percentile latency, nearest rank"},"P50 / P95"),l&&yr.default.createElement("th",{style:nf,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&yr.default.createElement("th",{style:nf,title:`Cohort spend, and per ${t}`},"Cost"),s&&yr.default.createElement("th",{style:nf,title:"What the judge spent scoring this model's answers"},"Judge"),yr.default.createElement("th",{style:{...UI,width:"34%"}},"Typical fault"))),yr.default.createElement("tbody",null,e.map(p=>{let{short:f,provider:m}=mo(p.label,p.provider||"");return yr.default.createElement("tr",{key:p.label,"data-testid":"model-comparison-row","data-model":p.label},yr.default.createElement("td",{style:{...WI,whiteSpace:"nowrap"}},yr.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:p.label},f),p.winner&&yr.default.createElement("span",{style:{marginLeft:6,fontFamily:V,fontSize:10,fontWeight:700,color:"var(--color-warning-text)"},title:"the judge's pick"},"\u2605 pick"),m&&yr.default.createElement("span",{style:{display:"block",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},m)),yr.default.createElement("td",{style:{...rf,color:XSe(p.passRate),fontWeight:600}},lo(p.passed,p.total)),yr.default.createElement("td",{style:rf},ea(p.avgScore)),u&&yr.default.createElement("td",{style:rf},p.avgDurationMs==null?"\u2014":Dn(p.avgDurationMs)),c&&yr.default.createElement("td",{style:rf,"data-testid":"model-comparison-percentiles"},p.p50DurationMs==null?"\u2014":`${Dn(p.p50DurationMs)} / ${Dn(p.p95DurationMs)}`),l&&yr.default.createElement("td",{style:rf,title:p.avgInputTokens==null?void 0:`${Math.round(p.avgInputTokens)} in \xB7 ${Math.round(p.avgOutputTokens||0)} out per ${t}`},p.avgTokens==null?"\u2014":An(Math.round(p.avgTokens))),i&&yr.default.createElement("td",{style:rf,title:p.cost!=null&&p.estimated?mm():void 0,"data-testid":"model-comparison-cost"},Or(p.cost,{estimated:p.estimated}),p.costPerInteraction!=null&&yr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},`${Or(p.costPerInteraction,{estimated:p.estimated})}/${t}`)),s&&yr.default.createElement("td",{style:rf,"data-testid":"model-comparison-judge"},p.judgeCost==null&&!p.judgeCalls?"\u2014":Or(p.judgeCost,{estimated:n}),p.judgeCalls>0&&yr.default.createElement("span",{style:{display:"block",fontWeight:400,color:"var(--color-text-muted)"}},Ct(p.judgeCalls,"call"))),yr.default.createElement("td",{style:{...WI,color:p.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},DX(p)))})))))}var Co=Z(J());var ZSe=[0,25,50,75,100],JSe={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},MZ={display:"contents"},HI={gridColumn:"1 / -1"},QSe={fontFamily:V,fontSize:11,color:"var(--color-text-secondary)"};function RSe({passRate:e,interval:t}){return Co.default.createElement("span",{"aria-hidden":"true",style:{position:"relative",display:"block",height:14}},Co.default.createElement("span",{style:{position:"absolute",left:0,right:0,top:6,height:2,background:"var(--color-muted)"}}),t&&Co.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&&Co.default.createElement("span",{style:{position:"absolute",top:2,left:`${e}%`,width:10,height:10,marginLeft:-5,borderRadius:"50%",background:"var(--color-info)"}}))}function qI({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return Co.default.createElement("div",{style:JSe,"data-testid":t},Co.default.createElement(Ve,{size:10,color:"var(--color-text-muted)",style:HI},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=mo(n.label,"");return Co.default.createElement("div",{key:n.label,style:MZ,"data-testid":"comparison-interval-row","data-model":n.label},Co.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),Co.default.createElement(RSe,{passRate:n.passRate,interval:n.interval}),Co.default.createElement("span",{style:QSe},Co.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 ${Ct(n.scenarios,"scenario")}`))}),Co.default.createElement("div",{style:MZ,"aria-hidden":"true"},Co.default.createElement("span",null),Co.default.createElement("span",{style:{position:"relative",display:"block",height:14}},ZSe.map(n=>Co.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:V,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),Co.default.createElement("span",null)),e.conclusion&&Co.default.createElement("div",{style:{...HI,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",textWrap:"pretty"},"data-testid":"comparison-conclusion"},e.conclusion),e.resamples!=null&&Co.default.createElement("span",{style:{...HI,fontFamily:V,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var jr=Z(J());var IZ={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"},eke={openrouter:"openrouter/auto"},DZ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=IZ[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:IZ[n],providerDefault:eke[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},jZ=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 $Z="/settings?tab=api-keys",r2=(e=11)=>({fontFamily:V,fontSize:e,color:"var(--color-text-secondary)"});function KI({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=DZ(e,t),[i,s]=(0,jr.useState)(!1),[l,u]=(0,jr.useState)(a?.suggestion||""),[c,d]=(0,jr.useState)(!1),[p,f]=(0,jr.useState)(null);if((0,jr.useEffect)(()=>{u(a?.suggestion||"")},[a?.suggestion]),!r)return null;if(!a)return jr.default.createElement("span",{style:r2()},`judged by ${r}`);let m=async b=>{d(!0),f(null);try{let h=await fetch(`/api/evaluations/${e.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{judge_model:b}})}),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=(b,h)=>jr.default.createElement(jr.default.Fragment,null,jr.default.createElement(Ve,{size:10},b),jr.default.createElement("span",{style:{...r2(12),color:"var(--color-text-cell)",overflowWrap:"anywhere"}},h));return jr.default.createElement("span",{style:{display:"inline-flex",flexDirection:"column",gap:8,minWidth:0},"data-testid":o},jr.default.createElement("button",{type:"button",onClick:()=>s(!i),title:jZ(a),"aria-expanded":i,style:{...r2(),display:"inline-flex",alignItems:"center",gap:6,background:"none",border:"none",padding:0,cursor:"pointer"}},jr.default.createElement("span",null,"judged by ",jr.default.createElement("span",{style:{color:"var(--color-info)"}},r)),a.auto&&jr.default.createElement(Ee,{tone:"warning",size:10,title:"No judge model is pinned: the provider chose"},"auto"),a.answered.length>1&&jr.default.createElement(Ee,{tone:"error",size:10,title:"More than one model judged this run"},`${a.answered.length} models`)),i&&jr.default.createElement(Fe,{padding:"12px 14px",testId:`${o}-panel`,style:{display:"flex",flexDirection:"column",gap:10,maxWidth:560}},jr.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(([b,h])=>`${b} \xD7${h}`).join(", "):"no calls recorded")),a.auto&&jr.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&&jr.default.createElement("form",{onSubmit:b=>{b.preventDefault(),l.trim()&&m(l.trim())},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},jr.default.createElement("input",{value:l,onChange:b=>u(b.target.value),placeholder:a.provider==="openrouter"?"e.g. anthropic/claude-sonnet-4.5":"judge model id","aria-label":"Judge model","data-testid":`${o}-model`,style:{flex:"1 1 220px",padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:V,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),jr.default.createElement(ge,{size:"sm",variant:"primary",type:"submit",disabled:c||!l.trim()||l.trim()===a.pinned,testId:`${o}-pin`},"Pin judge model"),a.pinned&&jr.default.createElement(ge,{size:"sm",onClick:()=>m(""),disabled:c,testId:`${o}-unpin`},"Unpin")),jr.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"baseline"}},jr.default.createElement("span",{style:r2()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),jr.default.createElement(gn,{href:nt($Z),onClick:()=>dt($Z)},`${a.provider||"provider"} key in Settings`)),p&&jr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var rd=Z(J());async function n2(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 bx({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,rd.useState)("idle"),a=(0,rd.useRef)(null);(0,rd.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await n2(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 rd.default.createElement(ge,{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 o2=()=>{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 Pe=Z(J());var a2="Update from the sandbox",tke=new Set(["queued","publishing"]);function wx(e){return!!(e&&tke.has(e.status))}function zZ(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:`${LZ(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:LZ(e),tone:rke(e)}}}function LZ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function rke(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function BZ(e){return!e?.head_commit||!e.number||wx(e)?!1:!["closed","merged"].includes(e.state)}function FZ(e){return!!(e?.head_commit&&!e.number&&!wx(e))}function UZ(e,t,r){let n=new Set(dh(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function WZ(e){return(e||[]).some(t=>t.refusal==="not_read")}function HZ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function i2(e){return e==="changed_since_preview"}function s2(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function l2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function dh(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function qZ(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=dh(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 KZ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var nke=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function oke(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||nke.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function VZ({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return dh(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?oke(n):"Add a title."}function u2({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=dh(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 GZ(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 VI(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 YZ(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var XZ={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 ZZ(e){return/[.!?]$/.test(e)?e:`${e}.`}function JZ(){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 Sx({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Pe.useState)(null),[a,i]=(0,Pe.useState)(null),[s,l]=(0,Pe.useState)(null),[u,c]=(0,Pe.useState)(0),[d,p]=(0,Pe.useState)(!1),f=(0,Pe.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,Pe.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let x=await f();if(h)return;o(x),i(null),wx(x.pull_request)&&(g=setTimeout(v,2e3))}catch(x){h||i(x.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[f,u]);let m=async h=>{p(!0),i(null);try{let g=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await g.json().catch(()=>({}));if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));c(x=>x+1)}catch(g){i(g.message)}finally{p(!1)}},y=n?.pull_request||null,b=n?.publishing||null;return b&&!b.supported?null:Pe.default.createElement(Pe.default.Fragment,null,Pe.default.createElement(ike,{pullRequest:y,publishing:b,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Pe.default.createElement(ske,{codeSession:t,sandbox:e,pullRequest:y,publishing:b,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function ike({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=JZ(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:y}=zZ(e),b=wx(e),h=!!t?.available,g=BZ(e),v=FZ(e);return Pe.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Pe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Pe.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Pe.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Pe.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Pe.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:b,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Pe.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:b,className:p},"Open draft PR"))),t&&!h&&Pe.default.createElement("p",{className:`text-xs ${s}`},ZZ(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Pe.default.createElement("div",{className:"space-y-1"},Pe.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Pe.default.createElement(zs,{tone:y},m),e.url?Pe.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Pe.default.createElement("span",{className:`truncate ${l}`},e.title)),Pe.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"&&Pe.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Pe.default.createElement("p",{className:f},e.error_message),v&&Pe.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Pe.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Pe.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&&Pe.default.createElement("div",{className:f},r))}function ske({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,Pe.useState)(null),[d,p]=(0,Pe.useState)(!0),[f,m]=(0,Pe.useState)(null),[y,b]=(0,Pe.useState)(new Set),[h,g]=(0,Pe.useState)(l?t?.title||"":YZ(e)),[v,x]=(0,Pe.useState)(""),[S,w]=(0,Pe.useState)(l&&t?.branch||""),[A,k]=(0,Pe.useState)(a2),[_,C]=(0,Pe.useState)(""),[E,j]=(0,Pe.useState)(null),[X,z]=(0,Pe.useState)(!1),[U,N]=(0,Pe.useState)(0);return(0,Pe.useEffect)(()=>{let D=!1;return p(!0),(async()=>{try{let T=await fetch(`${s}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(E?{allowlist:E}:{})}),I=await T.json().catch(()=>({}));if(D)return;if(!T.ok)throw new Error(ot(I,`Could not read the sandbox's changes (HTTP ${T.status}).`));c(I.preview),b(s2(I.preview.files)),w(P=>P||I.preview.suggested_branch||"")}catch(T){D||m(T.message)}finally{D||p(!1)}})(),()=>{D=!0}},[s,U,E]),Pe.default.createElement(GI,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:y,onToggle:D=>b(T=>l2(T,D)),fields:{title:h,body:v,branch:S,message:A,allowlist:_},onField:(D,T)=>({title:g,body:x,branch:w,message:k,allowlist:C})[D](T),allowlistApplied:!!E,onApplyAllowlist:()=>{m(null),j(HZ(_))},mode:n,submitting:X,onSubmit:async()=>{z(!0),m(null);try{let D=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...u2({files:u?.files,selection:y,title:h,body:v,branch:S,message:A,allowlist:E,update:l}),...i&&!l?{code_session_id:i.id}:{}})}),T=await D.json().catch(()=>({}));if(!D.ok)throw i2(T.code)&&N(I=>I+1),new Error(ot(T,`Could not publish (HTTP ${D.status}).`));a(T.pull_request)}catch(D){m(D.message)}finally{z(!1)}},onCancel:o})}function GI({sandbox:e,preview:t,loading:r,error:n,publishing:o,pullRequest:a,selection:i,onToggle:s,fields:l,onField:u,allowlistApplied:c,onApplyAllowlist:d,mode:p,submitting:f,onSubmit:m,onCancel:y,patchHref:b}){let h=JZ(),{muted:g,strong:v,border:x,link:S,secondaryButton:w,primaryButton:A,input:k,errorBox:_,darkMode:C}=h,E=t?.files||[],j=(0,Pe.useMemo)(()=>dh(E,i),[E,i]),X=!!o?.available,z=p==="patch"||!X,U=p==="update"&&!z,N=t&&!z?VZ({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:U}):null,O=U?UZ(a,E,i):[],D="Open draft PR";z?D="Download patch":U&&(D="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 z?T=`Downloads the files you tick from ${e.repository}@${e.repository_ref} as a patch for git am or git apply.`:U&&(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."),Pe.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},Pe.default.createElement("div",{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto rounded-lg border p-5 space-y-4 ${x} ${C?"bg-gray-900":"bg-white"}`},Pe.default.createElement("div",{className:"flex items-start justify-between gap-3"},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`text-lg font-medium ${v}`},D),Pe.default.createElement("p",{className:`text-xs ${g}`},T," Nothing under .github/ is ever published.")),Pe.default.createElement("button",{type:"button",onClick:y,className:w},"Close")),r&&Pe.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Pe.default.createElement("div",{className:_},n),t&&Pe.default.createElement(Pe.default.Fragment,null,d&&(WZ(E)||c)&&Pe.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Pe.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Only read paths matching"),Pe.default.createElement("input",{type:"text",value:l.allowlist,onChange:I=>u("allowlist",I.target.value),disabled:f||r,placeholder:"app/**, lib/*.rb",className:`${k} font-mono`})),Pe.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${w} disabled:opacity-50`},"Read again")),Pe.default.createElement("div",{className:"space-y-1"},Pe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",qZ(E,i)),E.length===0&&Pe.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Pe.default.createElement("ul",{className:"space-y-1"},E.map(I=>Pe.default.createElement("li",{key:I.path,className:"flex items-center gap-2 text-sm"},Pe.default.createElement("input",{type:"checkbox","aria-label":`Publish ${I.path}`,checked:!I.refusal&&i.has(I.path),disabled:!!I.refusal||f,onChange:()=>s(I.path)}),Pe.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},KZ(I)),Pe.default.createElement("span",{className:`font-mono truncate ${I.refusal?g:v}`},I.path),I.size!=null&&I.status!=="deleted"&&Pe.default.createElement("span",{className:`shrink-0 text-xs ${g}`},VI(I.size)),I.refusal&&Pe.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},I.refusal_message))))),O.length>0&&Pe.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: ",Pe.default.createElement("span",{className:"font-mono"},O.join(", "))),j.length>0&&Pe.default.createElement("div",{className:"space-y-2"},Pe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),j.map(I=>Pe.default.createElement(lke,{key:I.path,file:I,classes:h}))),!z&&Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Branch"),Pe.default.createElement("input",{type:"text",value:l.branch,onChange:I=>u("branch",I.target.value),disabled:U||f,maxLength:200,className:`${k} font-mono`})),U?Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Commit message"),Pe.default.createElement("input",{type:"text",value:l.message,onChange:I=>u("message",I.target.value),disabled:f,className:k})):Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Title"),Pe.default.createElement("input",{type:"text",value:l.title,onChange:I=>u("title",I.target.value),disabled:f,maxLength:256,className:k})),!z&&!U&&Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Description"),Pe.default.createElement("textarea",{value:l.body,onChange:I=>u("body",I.target.value),disabled:f,rows:4,className:k})),Pe.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Pe.default.createElement("p",{className:`text-xs ${g}`},!X&&ZZ(o?.refusal||"Publishing is not available for this sandbox"),X&&N),Pe.default.createElement("div",{className:"flex items-center gap-3"},j.length>0&&Pe.default.createElement("a",{href:nt((b||((I,P)=>GZ(e.session_id,I,P)))(j.map(I=>I.path),U?l.message:l.title)),className:`text-sm ${S}`},"Download patch"),Pe.default.createElement("button",{type:"button",onClick:y,className:w},"Cancel"),!z&&Pe.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:A},f?"Publishing\u2026":D))))))}function lke({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Pe.useMemo)(()=>q0(e.diff),[e.diff]);return Pe.default.createElement("div",{className:`rounded border ${n}`},Pe.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Pe.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",VI(e.size),": published as it is in the sandbox."):Pe.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=XZ[s.kind]||XZ.context;return Pe.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var uke=(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")),c2=new Map,cke=e=>(c2.has(e)||c2.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(()=>c2.delete(e))),c2.get(e));function YI({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`,b=(0,At.useCallback)(async()=>{let k=await cke(y);return i(k),l(_=>_||k.sandboxes?.find(C=>C.status==="ready")?.session_id||""),k},[y]);if((0,At.useEffect)(()=>{if(!t?.id||!r?.id)return;let k=!1,_,C=async()=>{try{await b()}catch(E){k||c(E.message)}!k&&n&&(_=setTimeout(C,2500))};return C(),()=>{k=!0,clearTimeout(_)}},[b,n,t?.id,r?.id]),!t?.id||!r?.id||!["fault","instruction"].includes(e.kind))return null;let h=(a?.code_sessions||[]).filter(k=>uke(k.fix_item,e));if(!n&&h.length===0&&(!a?.project||!a?.supported))return null;let g=h.find(k=>k.id===f)||h[0],v=a?.sandboxes?.find(k=>k.session_id===(g?.sandbox_session_id||s)),x=g&&(["queued","running"].includes(g.status)||g.status==="succeeded"&&g.diff&&!g.verification?.error&&!["complete","failed"].includes(g.verification?.status)),S=a?.auth_mode!=="sandbox_login"||v?.claude_login?.credential_mode,w=async(k=null)=>{if(!(!v||d||x)){p(!0),c(null);try{let _=await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation_run_id:r.id,fix_item:{kind:e.kind,fault:e.fault,quote:e.quote,scenario_keys:e.scenario_keys,models:e.models},previous_code_session_id:k?.id})}),C=await _.json();if(!_.ok)throw new Error(C.error||"Could not start this fix.");m(C.code_session.id),await b()}catch(_){c(_.message)}finally{p(!1)}}},A=g?g.verification?.status==="complete"?3:g.status==="succeeded"?2:1:0;return At.default.createElement(At.default.Fragment,null,At.default.createElement(ge,{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(aI,{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,_)=>At.default.createElement(Ee,{key:k,tone:_===A?"accent":_k.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: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:Z0},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:nt(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),At.default.createElement(ge,{size:"sm",onClick:()=>b().catch(k=>c(k.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!x&&At.default.createElement(Hp,{sandbox:v,onConnected:b,onChange:b}),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(ge,{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(Ee,{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(ge,{size:"sm",onClick:async()=>{try{if(!(await fetch(`/api/sandboxes/${encodeURIComponent(v.session_id)}/code_sessions/${g.id}/cancel`,{method:"POST"})).ok)throw new Error("Could not cancel this session.");await b()}catch(k){c(k.message)}}},"Cancel session"),g.result&&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:{...Z0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),At.default.createElement(J0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&At.default.createElement(Sx,{sandbox:v,codeSession:g})),u&&At.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var XI=6,dke=600,ph=12,fh=e=>String(e||"").replace(/_/g," "),fs=e=>String(e??"").trim(),kx=e=>[...new Set(e.filter(Boolean))],ZI=e=>fs(e).split(` +`);o.length>t&&(o=o.slice(0,t));let a=o.lengthe?.is_error===!0||e?.subtype!=null&&e.subtype!=="success",pSe=e=>{if(!TY(e))return"Done";if(hY[e.subtype])return hY[e.subtype];let t=String(e.subtype||"").replace(/^error_?/,"").replace(/_/g," ").trim();return t&&e.subtype!=="success"?`Error (${t})`:"Error"},fSe=e=>{if(e.subtype==="init"){let t=Array.isArray(e.tools)?Ls(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: ${VC(e.subtype).toLowerCase()}`:"System event"}},mSe=/^(hook_|thinking_tokens$)/,gSe=e=>mSe.test(String(e?.subtype||"")),hSe=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: ${VC(r).toLowerCase()}`,o].filter(Boolean).join(" \xB7 ")}]},qC=(e,t)=>({kind:"unknown",label:String(e||"event"),text:Qx(sh(t),300)}),yY=(e,t,r)=>{if(typeof e=="string")return e.trim()?[{kind:t==="assistant"?"text":"user_text",text:e}]:[];if(!Vp(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:uSe(n,e.input,r),id:e.id||null}]}case"tool_result":{let{text:n,truncated:o}=dSe(cSe(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)]}},ySe=(e,t)=>{let r=e.message?.content;return typeof r=="string"?yY(r,e.type,t):Array.isArray(r)?r.flatMap(n=>yY(n,e.type,t)):[qC(e.type,e)]},vSe=(e,t={toolNames:{}})=>{if(t.toolNames||={},!Vp(e))return e==null||e===""?[]:[{kind:"raw",text:typeof e=="string"?e:sh(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),gSe(e)?[]:[fSe(e)];case"rate_limit_event":return hSe(e);case"assistant":case"user":return n(ySe(e,t));case"result":{let o=Array.isArray(e.permission_denials)?e.permission_denials.length:0,a=vY(pSe(e),e);return[{kind:"result",tone:TY(e)?"error":"success",text:o?`${a} \xB7 ${Ls(o,"permission denial")}`:a}]}case"raw":return e.text==null||e.text===""?[]:[{kind:"raw",text:String(e.text)}];default:return[qC(e.type,e)]}},XC=e=>{let t={toolNames:{}};return(e||[]).flatMap((r,n)=>vSe(r,t).map((o,a)=>({...o,key:`${n}:${a}`})))},OY=/^diff (--git|--cc|--combined) /,xSe="\u2026 diff truncated",n0=e=>{if(!e)return[];let t=!0,r=1;return String(e).replace(/\n$/,"").split(` +`).map(n=>{if(OY.test(n))return t=!0,{text:n,kind:"meta"};if(n===xSe)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"}})},PY=e=>{let t=n0(e),r=t.filter(a=>a.kind==="meta"&&OY.test(a.text)).length,n=t.filter(a=>a.kind==="add").length,o=t.filter(a=>a.kind==="del").length;return`${Ls(r,"file")} changed \xB7 +${n} \u2212${o}`},o0="default",a0="other",MY=["sonnet","opus","haiku"],bSe=/^[A-Za-z0-9][A-Za-z0-9._:[\]-]{0,99}$/,mI="actionagent.claudeCode.modelChoice",IY=(e="claude_code")=>[{value:o0,label:`Default (${e==="codex"?"Codex":"Claude Code"}'s own)`},...e==="codex"?[]:MY.map(t=>({value:t,label:t})),{value:a0,label:"Other\u2026"}],gI=e=>e===o0||e===a0||MY.includes(e),hI=(e,t="")=>{if(!gI(e)||e===o0)return{model:null};if(e!==a0)return{model:e};let r=String(t??"").trim();return r?bSe.test(r)?{model:r}:{error:`"${Qx(r,40)}" is not a model name (letters, digits and . _ : [ ] -).`}:{error:"Enter a model id, or pick one of the options."}},DY=(e,t,r,n="claude_code")=>{let{model:o}=hI(t,r),a=o?{prompt:e,model:o}:{prompt:e};return n==="claude_code"?a:{...a,runner:n}},ZC=e=>{let t={choice:o0,custom:""};if(typeof e!="string"||!e)return t;try{let r=JSON.parse(e);if(!Vp(r)||!gI(r.choice))return t;let n=typeof r.custom=="string"?r.custom.slice(0,100):"";return{choice:r.choice,custom:n}}catch{return t}},jY=(e,t="")=>JSON.stringify({choice:gI(e)?e:o0,custom:String(t??"").slice(0,100)}),yI=e=>e?.model||"default model",Rx="api_key",e0="local_login",$Y="claude /login",LY="sk-ant-api03-\u2026",zY="https://platform.claude.com",BY="https://code.claude.com/docs/en/legal-and-compliance.md",JC=e=>{let t=Vp(e?.claude_code_login)?e.claude_code_login:{},r=e?.claude_code_auth===e0;return{mode:e?.claude_code_auth==="sandbox_login"?"sandbox_login":r?e0:Rx,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}},FY=(e,t)=>{if(!e)return{view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,needsReplacing:!1,loginHint:null};if(e.mode==="sandbox_login")return{view:"sandbox_login",status:"Your subscription, inside each sandbox",tone:"neutral",keyForm:!0,needsReplacing:t?.needs_replacing===!0,loginHint:null};if(e.mode===e0){let r=e.authMethod?` (${e.authMethod})`:"";return{view:e0,status:e.loggedIn?`Using this machine's Claude Code login \xB7 logged in${r}`:"Using this machine's Claude Code login \xB7 not logged in",tone:e.loggedIn?"success":"error",keyForm:!1,needsReplacing:!1,loginHint:e.loggedIn?null:$Y}}return t?t.configured&&t.needs_replacing===!0?{view:Rx,status:"Needs an API key: the stored subscription token is no longer used",tone:"error",keyForm:!0,needsReplacing:!0,loginHint:null}:{view:Rx,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}},UY=e=>e?.connected===!0?null:e?.mode==="sandbox_login"?{text:"Sign in with your Claude subscription in this sandbox, or connect an Anthropic API key.",loginHint:null,after:null}:e?.mode===e0?{text:"Claude Code is not logged in on this machine. Run",loginHint:$Y,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},t0="local_login",WY="codex login",QC=e=>{let t=Vp(e?.codex_login)?e.codex_login:{},r=e?.codex_auth===t0;return{supported:e?.codex_sessions_supported===!0,mode:r?t0:Rx,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}},HY=(e,t)=>{let r={view:"loading",status:"Loading\u2026",tone:"neutral",keyForm:!1,loginHint:null};if(!e)return r;if(e.mode===t0){let n=e.authMethod?` (${e.authMethod})`:"";return{view:t0,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:WY}}return t?{view:Rx,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===t0?{text:"Codex is not logged in on this machine. Run",loginHint:WY,after:"as the user the dashboard runs as."}:{text:"Connect an OpenAI API key in the Codex integration below.",loginHint:null,after:null};var VY=1500,vI=[{id:"all",label:"All"},{id:"agent",label:"Agent runs"},{id:"claude_code",label:"Claude Code"},{id:"codex",label:"Codex"}],wSe=new Set(vI.map(e=>e.id)),xI=e=>e?.source==="code_session"||/^code-\d+$/.test(String(e?.id??"")),Gp=e=>{let t=/^code-(\d+)$/.exec(String(e??""));return t?Number(t[1]):null},GY=(e,t="")=>{let r=new URLSearchParams(t),n=wSe.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=Gp(a);return i?{view:"conversation",source:n,project:o,codeId:i}:{view:"list",source:n,project:o,codeId:null}},ps=e=>`/interactions/code-${e}`,RC=({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}`:""}`},bI=({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()},YY=e=>{let t=(e||[]).filter(xI);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]},XY=e=>(e||[]).filter(t=>(t.events||[]).length>0).map(t=>`after[${encodeURIComponent(t.id)}]=${t.events_offset+t.events.length}`).join("&"),ZY=(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}},JY=e=>(e?.turns||[]).some(zs),QY=e=>{let t=[`Turn ${Number(e.turn_index)+1}`];return e.total_cost_usd!=null&&t.push(GC(e.total_cost_usd)),e.duration_ms!=null&&t.push(cI(e.duration_ms)),e.diff_stat&&t.push(`${Ls(e.diff_stat.files,"file")} +${e.diff_stat.additions} \u2212${e.diff_stat.deletions} since checkout`),t.join(" \xB7 ")},e2=e=>{let t=[Ls(e.turn_count??(e.turns||[]).length,"turn")];e.total_cost_usd&&t.push(GC(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 ")},RY=e=>{let t=e?.turns||[],r=t[t.length-1];if(!r||zs(r))return null;for(let n of[...r.events||[]].reverse()){let o=n?.message?.content;if(Array.isArray(o)){for(let a of[...o].reverse())if(a?.type==="tool_use"&&/(^|__)browser_request_person$/.test(String(a.name||""))){let i=typeof a.input?.reason=="string"?a.input.reason:null;if(i)return{reason:i,turn:r.turn_index}}}}return null},s0=e=>e?.runner==="codex"?"Codex":"Claude Code",eX=(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?` ${s0(e)} will be told you drove the browser.`:"";return n?`Your message waits for the turn that runs${r?` (and ${Ls(r,"more")})`:""}.${o}`:`Sends the next turn, resuming this conversation.${o}`},tX=(e,t)=>{let r=new URLSearchParams(e||"").get("browser");return r==="1"||r==="0"?r==="1":t==="1"},Yp=50,t2=25,r2=75,KY=5,i0=e=>{let t=Number(e);return Number.isFinite(t)?Math.min(r2,Math.max(t2,Math.round(t*10)/10)):Yp},rX=(e,{left:t,width:r})=>r>0?i0((e-t)/r*100):Yp,nX=(e,t)=>{switch(t){case"ArrowLeft":return i0(e-KY);case"ArrowRight":return i0(e+KY);case"Home":return t2;case"End":return r2;case"Enter":return Yp;default:return null}};var Ne=Z(J());var Bt=Z(J());var u0={padding:16,border:"1px solid var(--color-border)",borderRadius:12,background:"var(--color-muted)",color:"var(--color-text-primary)"},wI={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 SI({title:e,onClose:t,children:r}){let n=(0,Bt.useRef)(null);return(0,Bt.useEffect)(()=>{let o=n.current;return o?.showModal?.(),()=>o?.close?.()},[]),Bt.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)"}},Bt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,padding:"20px 24px",borderBottom:"1px solid var(--color-border)"}},Bt.default.createElement("h2",{style:{margin:0,fontSize:19,letterSpacing:"-0.02em"}},e),Bt.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")),Bt.default.createElement("div",{style:{padding:24,display:"flex",flexDirection:"column",gap:18}},r))}async function l0(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 SSe=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 Xp({sandbox:e,onConnected:t,onChange:r}){let n=`/api/sandboxes/${encodeURIComponent(e.session_id)}/claude_login`,[o,a]=(0,Bt.useState)(null),[i,s]=(0,Bt.useState)(!1),[l,u]=(0,Bt.useState)(""),[c,d]=(0,Bt.useState)(!1),[p,f]=(0,Bt.useState)(null),m=(0,Bt.useRef)(null),y=(0,Bt.useRef)(t);y.current=t,(0,Bt.useEffect)(()=>{let v=!1;return l0(n).then(b=>{v||a(b)}).catch(b=>{v||f(b.message)}),()=>{v=!0}},[n]),(0,Bt.useEffect)(()=>{if(!i)return;let v=!1,b,S=async()=>{try{let w=await l0(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(SSe(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 l0(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 l0(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 l0(`${n}/code`,"POST",{claude_login_code:b}))}catch(S){f(S.message),d(!1)}};return Bt.default.createElement("section",{style:u0,"data-testid":"sandbox-claude-login"},Bt.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:10}},Bt.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8}},Bt.default.createElement("strong",null,"Claude Code"),Bt.default.createElement(Ce,{tone:o?.logged_in?"success":"accent"},o?.logged_in?"Your subscription connected":"Use your Claude subscription")),o?.logged_in&&Bt.default.createElement(fe,{size:"sm",variant:"ghost",onClick:h,disabled:c},"Disconnect")),Bt.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&&Bt.default.createElement(fe,{variant:"primary",onClick:x,disabled:c||e.status!=="ready"},c?"Connecting\u2026":"Sign in with your Claude subscription"),p&&!i&&Bt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),i&&Bt.default.createElement(SI,{title:"Connect your Claude subscription",onClose:h},Bt.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."),Bt.default.createElement("div",{style:{...u0,fontSize:12}},Bt.default.createElement("strong",null,e.repository||"Checkout sandbox"),Bt.default.createElement("div",{style:{marginTop:6,fontFamily:"var(--font-mono)",color:"var(--color-text-muted)"}},e.session_id)),o?.authorize_url?Bt.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"):Bt.default.createElement("p",{role:"status",style:{fontSize:13}},o?.status==="submitted"?"Confirming your sign-in\u2026":"Preparing Claude\u2019s authorization page\u2026"),Bt.default.createElement("form",{onSubmit:g,style:{display:"flex",flexDirection:"column",gap:12},"data-aa-secret":""},Bt.default.createElement("label",{htmlFor:`claude-login-code-${e.session_id}`,style:{fontSize:12,fontWeight:600}},"Authentication code"),Bt.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:wI,disabled:c||o?.status!=="awaiting_code"}),Bt.default.createElement(fe,{variant:"primary",type:"submit",disabled:!l.trim()||c||o?.status!=="awaiting_code"},c?"Completing connection\u2026":"Complete connection")),p&&Bt.default.createElement(Bt.default.Fragment,null,Bt.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},p),Bt.default.createElement(fe,{onClick:x,disabled:c},"Start sign-in again")),Bt.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 c0({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:et(`/evaluations/${t}/runs/${e.evaluation_run_id}`)},"Original run"),l?.run_id&&Dr.default.createElement("a",{href:et(`/evaluations/${t}/runs/${l.run_id}`)},"Verification run"),c&&Dr.default.createElement(fe,{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(fe,{size:"sm",onClick:n},"Try again")),o?.run&&Dr.default.createElement("a",{style:{fontSize:12},href:et(`/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 Nn=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)}`},d0=e=>e==null?"\u2014":Nn(e),kI=(e,t)=>e==null&&t==null?"\u2014":`${d0(e)}\u2192${d0(t)}`,jn=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`},p0=e=>{if(e==null)return"\u2014";let t=Number(e);return t===0?"$0.00":Math.abs(t)<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`},f0=(e,t=4)=>e==null?"\u2014":`$${Number(e).toFixed(t)}`;var lh=(e,t="%",r=0)=>{if(e==null||Number.isNaN(Number(e)))return"\u2014";let n=Number(e);return`${n>0?"+":n<0?"-":""}${Math.abs(n).toFixed(r)}${t}`},vo=e=>{if(!e)return"";let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t} min ago`;if(t<1440){let n=Math.floor(t/60);return`${n} hour${n===1?"":"s"} ago`}let r=Math.floor(t/1440);return`${r} day${r===1?"":"s"} ago`},xo=(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 kSe=2e4,aX=()=>{try{return ZC(window.localStorage.getItem(mI))}catch{return ZC(null)}},_Se=(e,t)=>{try{window.localStorage.setItem(mI,jY(e,t))}catch{}},lX=e=>({backgroundColor:e?"#1a1a1a":"#ffffff"}),iX={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 Bs({tone:e="neutral",children:t}){let{darkMode:r}=ut(),n=iX[e]||iX.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 m0({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)(aX),[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(nt(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(ye=>ye.id===a)||se.find(zs)||se[0];p(ye=>ye??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=[],ye=0;m(null),x(null),T.current=!0;let at=async()=>{let it=!0,pe=null;try{let ue=await fetch(`${l}/${d}?after=${ne.length}`);pe=ue.status;let Ze=await ue.json().catch(()=>({}));if(B)return;if(!ue.ok)throw new Error(nt(Ze,`Could not load the session (HTTP ${ue.status}).`));let Je=Ze.code_session;ne=NY(ne,Je),ye=0,x(null),m({...Je,events:ne}),c(_t=>Qc(_t||[],AY(Je),"id"));let tt=Je.evaluation_run_id&&Je.status==="succeeded"&&Je.diff&&!Je.verification?.error&&!["complete","failed"].includes(Je.verification?.status);pI(Je)&&!tt&&(it=!1)}catch(ue){if(B)return;ye+=1,x(ue.message),KC(pe,ye)&&(it=!1)}it&&!B&&(se=setTimeout(at,1500))};return at(),()=>{B=!0,clearTimeout(se)}},[l,d,h]);let M=(u||[]).find(zs)||null,q=M&&M.id!==d?M.id:null,V=_==="codex"?qY(r):UY(t),L=V?"not_connected":M?"busy":null;(0,Ne.useEffect)(()=>{if(q==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)}},[q,v,D]);let G=(0,Ne.useMemo)(()=>XC(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=hI(C.choice,C.custom).error||null,Me=B=>{E(se=>{let ne={...se,...B};return _==="claude_code"&&_Se(ne.choice,ne.custom),ne})},he=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(DY(B,C.choice,C.custom,_))}),ne=await se.json().catch(()=>({}));if(!se.ok)throw ne.code_session&&(c(ye=>Qc(ye||[],ne.code_session,"id")),p(ne.code_session.id)),new Error(nt(ne,`Could not start ${A} (HTTP ${se.status}).`));c(ye=>Qc(ye||[],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(nt(ne,`Could not cancel the session (HTTP ${se.status}).`));c(ye=>Qc(ye||[],ne.code_session,"id")),m(ye=>ye&&ye.id===ne.code_session.id?{...ye,...ne.code_session}:ye)}catch(se){O(se.message)}finally{F(!1)}},R=s?"text-gray-400":"text-gray-500",te=s?"text-white":"text-gray-900",z=s?"border-gray-700":"border-gray-200",ee=`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(Xp,{sandbox:e,onChange:n}),Ne.default.createElement("div",{className:"flex items-center justify-between"},Ne.default.createElement("p",{className:`text-sm font-medium ${te}`},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"?aX():ZC(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)&&he()},rows:3,maxLength:kSe,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=>Me({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"}`},IY(_).map(B=>Ne.default.createElement("option",{key:B.value,value:B.value},B.label))),C.choice===a0&&Ne.default.createElement("input",{type:"text",value:C.custom,onChange:B=>Me({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:he,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}=ds(B.status),ye=B.id===d;return Ne.default.createElement("button",{key:B.id,type:"button",title:kY(B),onClick:()=>ye?g(at=>at+1):p(B.id),className:`w-full text-left px-2 py-1.5 rounded flex items-center gap-2 text-sm ${ye?s?"bg-gray-700":"bg-gray-200":s?"hover:bg-gray-800":"hover:bg-gray-100"}`},Ne.default.createElement(Bs,{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 ${te}`},_Y(B.prompt)),Ne.default.createElement("span",{className:`shrink-0 text-xs font-mono ${R}`},yI(B)),Ne.default.createElement("span",{className:`shrink-0 text-xs ${R}`},vo(B.created_at)))}))),u===null&&Ne.default.createElement("p",{className:`text-xs ${R}`},"Loading sessions\u2026"),Y&&Ne.default.createElement(CSe,{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:te,border:z,secondaryButton:ee,linkButton:U,errorBox:P}}))}function CSe({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}=ds(e.status),v=zs(e),b=r0(e),S=SY(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(Bs,{tone:g},h),Ne.default.createElement("span",{className:`text-xs truncate ${d}`},[fI(e),yI(e)].filter(Boolean).join(" \xB7 "))),Ne.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},Ne.default.createElement("a",{href:et(ps(e.conversation_id||e.id)),onClick:_=>{_.preventDefault(),lt(ps(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:lX(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(_I,{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(c0,{session:e,evaluationId:e.evaluation_id,sandboxId:e.sandbox_session_id}),b&&r&&Ne.default.createElement(CI,{diff:e.diff,pending:dI(e),onReload:i,muted:d,linkButton:y,darkMode:c}))}function _I({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 sX={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 CI({diff:e,pending:t,onReload:r,muted:n,linkButton:o,darkMode:a}){let i=(0,Ne.useMemo)(()=>n0(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 ",PY(e)),Ne.default.createElement("pre",{className:"max-h-96 overflow-auto rounded p-2 text-xs font-mono",style:lX(a)},i.map((s,l)=>{let u=sX[s.kind]||sX.context;return Ne.default.createElement("div",{key:l,className:a?u.dark:u.light},s.text||" ")})))}var mt=Z(J());function n2(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}var uX=["left","middle","right"];function cX(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 o2(e,t,r){let n=cX(t.clientX,t.clientY,r);if(!n)return null;let o={type:"mouse",action:e,...n,modifiers:n2(t)};return e==="move"?{...o,button:t.buttons&1?"left":"none"}:{...o,button:uX[t.button]||"left",clickCount:Math.min(Math.max(t.detail||1,1),3)}}function dX(e,t,r){let n=o2("up",e,t);return n||!r?n:{type:"mouse",action:"up",x:r.x,y:r.y,modifiers:n2(e),button:uX[e.button]||"left",clickCount:1}}var ASe=16,ESe=800;function pX(e,t){let r=cX(e.clientX,e.clientY,t);if(!r)return null;let n=e.deltaMode===1?ASe:e.deltaMode===2?ESe:1;return{type:"wheel",...r,deltaX:e.deltaX*n,deltaY:e.deltaY*n,modifiers:n2(e)}}function AI(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:n2(t)}}function fX(e){return typeof e=="string"&&e!==""?{type:"text",text:e.slice(0,2e3)}:null}var NSe=600;function mX(e,t){return e.key!=="Escape"||e.repeat||t===null?!1:e.timeStamp-t<=NSe}var EI=32*1024;function gX(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 yX(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 ${hX(t.max_file_bytes)}.`}:{files:r.map(a=>({name:a.name,size:a.size})),total:r.reduce((a,i)=>a+i.size,0)}}function vX(e){if(!e)return null;let t=e.total>0?Math.min(100,Math.floor(e.sent/e.total*100)):100;return`Uploading ${hX(e.total)}\u2026 ${t}%`}function xX(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 g0={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 bX(e,t){switch(t?.type){case"ready":return{...e,ready:!0,control:{...g0.control,...t.control},agent:{...g0.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 g0;default:return e}}function wX(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 SX(e){let t=e.personRequest;return!t||e.control.held?null:`${t.client||"The agent"} needs a person: ${t.reason}`}function kX({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 _X(e){return e.control.held?e.control.mine?"You are driving":e.control.yours?"You are driving in another view":`Held by ${e.control.by||"someone else"}`:null}function CX(e,{taking:t=!1}={}){let{held:r,yours:n}=e.control,o="Take over";return t?o="Taking over\u2026":r&&n&&(o="Continue driving here"),{label:o,disabled:t||r&&!n}}function AX(e){if(!e)return null;let t=e.tabs>1?` \xB7 tab ${e.tab} of ${e.tabs}`:"";return`${e.url||"a page with no address to show"}${t}`}var TSe={1001:"The browser stopped.",4401:"The live view did not accept the ticket. Try again.",4408:"The live view timed out before it opened. Try again.",4429:"Too many people are watching this browser."};function EX(e,{requested:t=!1}={}){return t?null:TSe[e]||"The live view lost its connection to the browser."}var OSe={starting:{label:"Starting",tone:"progress"},running:{label:"Running",tone:"success"},stopped:{label:"Stopped",tone:"neutral"},failed:{label:"Failed",tone:"error"}};function NX(e){return e?.status?OSe[e.status]||{label:e.status,tone:"neutral"}:null}function TX(e){return e?.status==="starting"||e?.status==="running"}function OX({inWindow:e=!1,modes:t=[]}={}){return{mode:e&&t.includes("headed")?"headed":"headless"}}async function PX(e,t){let r=await fetch(`/api/sandboxes/${encodeURIComponent(e)}/browser/tickets`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:t})}),n=await r.json().catch(()=>({}));if(r.status===403&&n.code==="forbidden")throw new Error("You do not have permission to take over this browser.");if(!r.ok)throw new Error(nt(n,`Could not open the live view (HTTP ${r.status}).`));return n}var MX=e=>(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="v",PSe=1024*1024,MSe=e=>new Promise(t=>{setTimeout(t,e)});function ISe({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 mt.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"}`},mt.default.createElement("p",{className:`text-sm font-medium ${i}`},"The page asked for ",s?"files":"a file"),mt.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?mt.default.createElement("p",{className:`text-xs ${i}`,role:"status"},vX(t)):mt.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}`}),mt.default.createElement("button",{type:"button",onClick:n,className:`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},"Cancel"))}function h0({sessionId:e,headed:t=!1,watchOnOpen:r=!1,onHandBack:n=null,handBackLabel:o="Hand back"}){let{darkMode:a}=ut(),[i,s]=(0,mt.useReducer)(bX,g0),[l,u]=(0,mt.useState)("idle"),[c,d]=(0,mt.useState)(null),[p,f]=(0,mt.useState)(!1),[m,y]=(0,mt.useState)(null),x=(0,mt.useRef)(null),h=(0,mt.useRef)(!1),g=(0,mt.useRef)(0),v=(0,mt.useRef)(!1),b=(0,mt.useRef)(null),S=(0,mt.useRef)(null),w=(0,mt.useRef)({pending:null,decoding:!1}),_=(0,mt.useRef)({message:null,scheduled:!1}),k=(0,mt.useRef)(null),A=(0,mt.useRef)(null),C=(0,mt.useRef)(0),E=i.control.mine,I=(0,mt.useRef)(null),Q=(0,mt.useRef)(i);Q.current=i,(0,mt.useEffect)(()=>{if(E){I.current=i.control.since||Date.now();return}if(I.current===null)return;let ne=I.current;I.current=null,n?.(kX({by:null,takenAt:ne,releasedAt:Date.now(),page:Q.current.page}))},[E]);let $=(0,mt.useCallback)(ne=>{let ye=x.current;ne&&ye?.readyState===WebSocket.OPEN&&ye.send(JSON.stringify(ne))},[]),F=(0,mt.useCallback)(ne=>{let ye=w.current;if(ye.pending=ne,ye.decoding)return;let at=()=>{let it=ye.pending;if(ye.pending=null,ye.decoding=!!it,!it)return;let pe=new Image;pe.onload=()=>{let ue=b.current;ue&&((ue.width!==pe.naturalWidth||ue.height!==pe.naturalHeight)&&(ue.width=pe.naturalWidth,ue.height=pe.naturalHeight),ue.getContext("2d")?.drawImage(pe,0,0)),at()},pe.onerror=at,pe.src=`data:image/jpeg;base64,${it.data}`};at()},[]),N=(0,mt.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,mt.useEffect)(()=>N,[N]);let O=async()=>{g.current+=1;let ne=g.current;d(null),u("connecting");try{let{ticket:ye,url:at}=await PX(e,"view");if(g.current!==ne)return;let it=new WebSocket(at);x.current=it,h.current=!1,it.onopen=()=>it.send(JSON.stringify({type:"auth",ticket:ye})),it.onmessage=pe=>{let ue;try{ue=JSON.parse(pe.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=pe=>{x.current===it&&(x.current=null,C.current+=1,y(null),u("idle"),s({type:"reset"}),d(EX(pe.code,{requested:h.current})))}}catch(ye){if(g.current!==ne)return;u("idle"),d(ye.message)}},j=(0,mt.useRef)(!1);(0,mt.useEffect)(()=>{!r||j.current||(j.current=!0,O())},[r]);let T=async()=>{s({type:"clear_error"}),f(!0);try{let{ticket:ne}=await PX(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 ye=i.fileChooser,at=yX(ne,ye);if(at.error){d(at.error);return}let it=x.current;if(!it||it.readyState!==WebSocket.OPEN)return;C.current+=1;let pe=C.current;d(null),s({type:"clear_error"}),$({type:"file_upload",chooser:ye.id,files:at.files});let ue=0;y({sent:ue,total:at.total});try{for(let Ze of Array.from(ne))for(let Je=0;JePSe&&C.current===pe;)await MSe(50);if(C.current!==pe||it.readyState!==WebSocket.OPEN)return;let tt=new Uint8Array(await Ze.slice(Je,Je+EI).arrayBuffer());$({type:"file_chunk",chooser:ye.id,data:gX(tt)}),ue+=tt.length,y({sent:ue,total:at.total})}}catch(Ze){d(`Could not read the file: ${Ze.message}`),q()}},q=()=>{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,mt.useEffect)(()=>{v.current=E,E?b.current?.focus():b.current?.blur()},[E]),(0,mt.useEffect)(()=>{let ne=b.current;if(!ne||!E)return;let ye=at=>{at.preventDefault(),$(pX(at,ne.getBoundingClientRect()))};return ne.addEventListener("wheel",ye,{passive:!1}),()=>ne.removeEventListener("wheel",ye)},[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(o2("down",ne,G())),window.addEventListener("mouseup",ye=>W(dX(ye,G(),k.current)),{once:!0})},onMouseMove:ne=>{let ye=_.current;ye.message=o2("move",ne,G()),!ye.scheduled&&(ye.scheduled=!0,requestAnimationFrame(()=>{ye.scheduled=!1,W(ye.message),ye.message=null}))},onContextMenu:ne=>ne.preventDefault(),onKeyDown:ne=>{if(mX(ne,A.current)){ne.preventDefault(),A.current=null,S.current?.focus();return}if(A.current=ne.key==="Escape"&&!ne.repeat?ne.timeStamp:null,MX(ne))return;let ye=AI("down",ne);ye&&(ne.preventDefault(),$(ye))},onKeyUp:ne=>{if(MX(ne))return;let ye=AI("up",ne);ye&&(ne.preventDefault(),$(ye))},onPaste:ne=>{ne.preventDefault(),$(fX(ne.clipboardData?.getData("text/plain")))}}:{},Me=a?"text-gray-400":"text-gray-500",he=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",te=wX(i),z=SX(i),ee=_X(i),U=CX(i,{taking:p}),P=AX(i.page),Y=xX(i),B=l==="open",{frameSize:se}=i;return mt.default.createElement("div",{className:"space-y-2"},mt.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},l==="idle"?mt.default.createElement("button",{type:"button",onClick:O,className:ce},"Watch live"):mt.default.createElement("button",{type:"button",onClick:N,className:ce},"Stop watching"),B&&(E?mt.default.createElement("button",{ref:S,type:"button",onClick:D,className:R},o):mt.default.createElement("button",{ref:S,type:"button",onClick:T,disabled:U.disabled,className:R},U.label)),ee&&mt.default.createElement("span",{className:`text-xs font-medium ${he}`},ee),l==="connecting"&&mt.default.createElement("span",{className:`text-xs ${Me}`},"Connecting\u2026")),c&&mt.default.createElement("p",{className:`text-xs ${Me}`,role:"status"},c),i.error&&mt.default.createElement("p",{className:`text-xs ${a?"text-red-400":"text-red-600"}`,role:"alert"},i.error),z&&mt.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."),te&&mt.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"}`},te),l!=="idle"&&mt.default.createElement("div",{className:"space-y-1"},P&&mt.default.createElement("p",{className:`text-xs font-mono truncate ${Me}`,title:P},P),Y&&mt.default.createElement("p",{className:`text-xs ${Me}`,role:"status"},Y),mt.default.createElement("div",{className:"relative","data-testid":"live-view-frame",...L},mt.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&&mt.default.createElement(ISe,{chooser:i.fileChooser,upload:m,onFiles:ne=>{M(ne)},onCancel:q})),E&&mt.default.createElement("p",{className:`text-xs ${Me}`},"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&&mt.default.createElement("p",{className:`text-xs ${Me}`},"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 DSe={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,Ge.useMemo)(()=>XC(e.events),[e.events]),[i,s]=(0,Ge.useState)(void 0),l=ds(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 Ge.default.createElement("li",{className:`rounded border p-3 space-y-2 ${r?"border-gray-700":"border-gray-200"}`,"data-testid":"code-interaction-turn"},Ge.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ge.default.createElement(Bs,{tone:l.tone},l.label),Ge.default.createElement("span",{className:`text-xs ${n}`},QY(e))),e.context_note&&Ge.default.createElement("p",{className:`text-xs italic ${n}`,title:"Sent to Claude Code ahead of the message"},"Dashboard note: ",e.context_note),Ge.default.createElement("p",{className:`text-sm whitespace-pre-wrap break-words font-medium ${o}`},e.prompt),Ge.default.createElement("div",{className:"space-y-1"},a.length===0&&Ge.default.createElement("p",{className:`text-xs ${n}`},zs(e)?"Waiting for Claude Code\u2026":"No transcript was recorded."),a.map(c=>Ge.default.createElement(_I,{key:c.key,row:c,darkMode:r,muted:n,strong:o}))),e.error_message&&Ge.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`},e.error_message),!zs(e)&&Ge.default.createElement("div",{className:"space-y-1"},Ge.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&&Ge.default.createElement(CI,{diff:i,pending:!1,muted:n,darkMode:r,linkButton:"underline"})))}function NI({rootId:e,onBack:t=null}){let{darkMode:r}=ut(),[n,o]=(0,Ge.useState)(null),[a,i]=(0,Ge.useState)(null),[s,l]=(0,Ge.useState)(""),[u,c]=(0,Ge.useState)(!1),[d,p]=(0,Ge.useState)(null),[f,m]=(0,Ge.useState)(LSe),y=(0,Ge.useRef)(null);y.current=n;let x=(0,Ge.useRef)(null),h=(0,Ge.useRef)(null),g=(0,Ge.useRef)(null),v=BSe(h,!!n),b=(0,Ge.useRef)(null),[S,w]=(0,Ge.useState)($Se),[_,k]=(0,Ge.useState)(!1),A=f&&!!v,C=ye=>{w(ye),IX(ye)},E=(0,Ge.useRef)(null),I=(0,Ge.useRef)(S);I.current=S;let Q=ye=>{ye.button!==0||!b.current||(ye.preventDefault(),ye.currentTarget.setPointerCapture?.(ye.pointerId),E.current=b.current.getBoundingClientRect(),k(!0))},$=ye=>{if(!E.current)return;let at=rX(ye.clientX,E.current);I.current=at,w(at)},F=ye=>{E.current&&(ye.currentTarget.releasePointerCapture?.(ye.pointerId),E.current=null,k(!1),IX(I.current))},N=ye=>{let at=nX(S,ye.key);at!==null&&(ye.preventDefault(),C(at))},O=ye=>{m(at=>{let it=typeof ye=="function"?ye(at):ye;return zSe(it),it})},j=(0,Ge.useCallback)(async()=>{let ye=XY(y.current?.turns),at=await fetch(`/api/interactions/code-${e}${ye?`?${ye}`:""}`),it=await at.json().catch(()=>({}));if(!at.ok){i(nt(it,`Could not load the conversation (HTTP ${at.status}).`));return}i(null),o(pe=>ZY(pe,it.interaction))},[e]);(0,Ge.useEffect)(()=>{o(null),y.current=null,j()},[j]);let T=JY(n);(0,Ge.useEffect)(()=>{if(!T)return;let ye=setInterval(()=>{j()},VY);return()=>clearInterval(ye)},[T,j]);let D=n?.turns?.length||0,M=n?.turns?.reduce((ye,at)=>ye+(at.events?.length||0),0)||0,q=(0,Ge.useRef)(!0);(0,Ge.useEffect)(()=>{let ye=g.current;ye&&q.current&&(ye.scrollTop=ye.scrollHeight)},[D,M,v]);let V=()=>{let ye=g.current;ye&&(q.current=ye.scrollHeight-ye.scrollTop-ye.clientHeight<48)},L=n?.sandbox_session_id,G=n?.turns?.[n.turns.length-1],W=RY(n),ie=n?.browser?.status==="running",Me=async ye=>{ye?.preventDefault();let at=s.trim();if(!(!at||!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:at,...d?{handoff:d}:{}})}),pe=await it.json().catch(()=>({}));if(!it.ok)throw new Error(nt(pe,`The message was not sent (HTTP ${it.status}).`));l(""),p(null),await j()}catch(it){i(it.message)}finally{c(!1)}}},he=async()=>{let ye=(n?.turns||[]).filter(zs);for(let at of ye)await fetch(`/api/sandboxes/${encodeURIComponent(L)}/code_sessions/${at.id}/cancel`,{method:"POST"});await j()},ce=ye=>{p(ye),l(at=>at||"I've handed the browser back. "),x.current?.focus()},R=r?"text-gray-400":"text-gray-500",te=r?"text-white":"text-gray-900",z=`rounded-lg border p-4 ${r?"bg-gray-900 border-gray-700":"bg-white border-gray-200"}`,ee=`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 Ge.default.createElement("div",{className:z,"data-testid":"code-interaction"},a?Ge.default.createElement("p",{className:`text-sm ${r?"text-red-400":"text-red-600"}`},a):Ge.default.createElement("p",{className:`text-sm ${R}`},"Loading\u2026"));let Y=ds(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 Ge.default.createElement("div",{ref:h,className:"flex flex-col gap-3",style:v?{height:v}:void 0,"data-testid":"code-interaction"},Ge.default.createElement("div",{className:"flex flex-wrap items-start justify-between gap-3 shrink-0"},Ge.default.createElement("div",{className:"space-y-1"},t&&Ge.default.createElement("button",{type:"button",onClick:t,className:`text-xs ${R}`},"\u2190 Interactions"),Ge.default.createElement("h2",{className:`text-xl font-bold ${te}`},n.display_name),Ge.default.createElement("div",{className:"flex flex-wrap items-center gap-2"},Ge.default.createElement(Bs,{tone:Y.tone},Y.label),Ge.default.createElement("span",{className:`text-xs ${R}`},DSe[n.origin]||n.origin," \xB7 ",e2(n)),n.project&&Ge.default.createElement("a",{href:et(`/projects/${n.project.id}`),onClick:ye=>{ye.preventDefault(),lt(`/projects/${n.project.id}`)},className:"text-xs underline"},n.project.name))),Ge.default.createElement("div",{className:"flex items-center gap-2"},T&&Ge.default.createElement("button",{type:"button",onClick:he,className:ee},"Stop"),Ge.default.createElement("button",{type:"button",onClick:()=>O(ye=>!ye),className:ee,"aria-pressed":f,"aria-controls":`code-interaction-${e}-browser`},f?"Hide browser":"Show browser"))),W&&!f&&Ge.default.createElement("p",{role:"alert",className:`${P} shrink-0`},"Claude Code needs you: ",W.reason," ",Ge.default.createElement("button",{type:"button",onClick:()=>O(!0),className:"underline"},"Show the browser")),Ge.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":""}`},Ge.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`},Ge.default.createElement("div",{className:B},Ge.default.createElement("span",{className:`text-sm font-medium ${te}`},"Conversation"),!f&&Ge.default.createElement("button",{type:"button",onClick:()=>O(!0),className:ne},"Show browser \u203A")),Ge.default.createElement("ol",{ref:g,onScroll:V,className:"space-y-3 p-4 flex-1 min-h-0 overflow-y-auto"},n.turns.map(ye=>Ge.default.createElement(jSe,{key:ye.id,turn:ye,sandboxId:L,darkMode:r,muted:R,strong:te}))),Ge.default.createElement("form",{onSubmit:Me,className:`space-y-2 p-4 border-t shrink-0 ${r?"border-gray-700":"border-gray-200"}`},Ge.default.createElement("label",{htmlFor:`code-interaction-${e}-message`,className:`text-xs font-medium ${te}`},"Message ",s0(n)),Ge.default.createElement("textarea",{id:`code-interaction-${e}-message`,ref:x,value:s,onChange:ye=>l(ye.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?"}),Ge.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Ge.default.createElement("span",{className:`text-xs ${R}`,role:"status"},eX(n,{handoff:d})),Ge.default.createElement("button",{type:"submit",className:U,disabled:u||!s.trim()},u?"Sending\u2026":"Send")),a&&Ge.default.createElement("p",{className:`text-xs ${r?"text-red-400":"text-red-600"}`,role:"alert"},a))),A&&Ge.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":t2,"aria-valuemax":r2,tabIndex:0,onPointerDown:Q,onPointerMove:$,onPointerUp:F,onPointerCancel:F,onKeyDown:N,onDoubleClick:()=>C(Yp),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"},Ge.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&&Ge.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"},Ge.default.createElement("div",{className:B},Ge.default.createElement("span",{className:`text-sm font-medium ${te}`},"The sandbox\u2019s browser"),Ge.default.createElement("button",{type:"button",onClick:()=>O(!1),className:ne,"aria-label":"Hide the browser"},"Hide \xD7")),Ge.default.createElement("div",{className:"p-4 space-y-2 flex-1 min-h-0 overflow-y-auto"},W&&Ge.default.createElement("p",{role:"alert",className:P},s0(n)," needs you: ",W.reason),ie?Ge.default.createElement(h0,{sessionId:L,watchOnOpen:!0,onHandBack:ce,handBackLabel:`Hand back to ${s0(n)}`}):Ge.default.createElement("p",{className:`text-xs ${R}`},"The browser is not running."," ",n.project?Ge.default.createElement("a",{href:et(`/projects/${n.project.id}?tab=browser`),onClick:ye=>{ye.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 DX="activeagents.codeInteraction.showBrowser",jX="activeagents.codeInteraction.split";function $Se(){try{let e=window.localStorage.getItem(jX);return e===null?Yp:i0(e)}catch{return Yp}}function IX(e){try{window.localStorage.setItem(jX,String(e))}catch{}}function LSe(){let e=null;try{e=window.localStorage.getItem(DX)}catch{}return tX(window.location.search,e)}function zSe(e){try{window.localStorage.setItem(DX,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 BSe(e,t){let[r,n]=(0,Ge.useState)(null);return(0,Ge.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 $X=Z(J());function Rc({kind:e,id:t,title:r="Replay this session",testId:n="replay-link",style:o}){let a=ah(e,t);return a?$X.default.createElement("a",{href:et(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:K,fontSize:11,color:"var(--color-info)",textDecoration:"none",whiteSpace:"nowrap",...o}},"replay ->"):null}var FSe=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=Yc(e?.instructions),n=0;(e?.messages||[]).forEach(a=>{a.role==="tool"&&(n+=Yc(a.content)+Yc(a.tool_arguments))}),n=Math.min(n,t.input);let o=Math.max(t.input-r-n,0);return{used:t.total,limit:Ux(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}]}},LX=["#6366f1","#10b981","#f59e0b","#ec4899","#3b82f6","#8b5cf6","#14b8a6","#f97316"],USe=[{id:"recent",label:"Recent"},{id:"tokens",label:"Tokens"},{id:"messages",label:"Messages"}],WSe=[{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"}],HSe=3e4,Nu=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),zX=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 qSe({generation:e,darkMode:t,maxMs:r,expanded:n,onToggle:o}){let a=Kn(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?`${Nu(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:`${Nu(e.tokens.thinking)} thinking tokens`},"\u{1F9E0} ",Nu(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:",Nu(e.tokens.input)),we.default.createElement("span",{className:"text-green-500"},"out:",Nu(e.tokens.output)),e.finish_reason&&we.default.createElement("span",null,e.finish_reason),e.duration_seconds!=null&&we.default.createElement("span",null,Vn(d)),c&&we.default.createElement("a",{href:et(`/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(rI,{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(Wp,{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(Gx,{trace:i,darkMode:t,compact:!0})))}function Tu({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}=pl(),m=!t&&!e,y=()=>m?GY(Gn(),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=>{Jc(L),h(y())},_=L=>w(RC({source:b,project:S,...L})),k=L=>w(ps(L));(0,we.useEffect)(()=>{if(x.view!=="latest")return;let L=bI({source:b==="all"?"claude_code":b,project:S});fetch(`/api/interactions?${L}`).then(G=>G.json()).then(G=>{let W=YY(G.interactions),ie=W?ps(Gp(W.id)):RC({source:b,project:S});window.history.replaceState({},"",et(ie)),h(y())}).catch(()=>{})},[x.view,b,S]);let A=(0,we.useCallback)(async()=>{try{let L=await fetch(`/api/interactions?${bI({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,HSe);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,LX[W%LX.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},(Me,he)=>{let ce=L-(W-1-he)*G,R=ce-G,te=n.filter(z=>{let ee=new Date(z.last_activity_at).getTime();return ee>=R&&ee1440?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,te.filter(ee=>ee.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",Me=W.action_name,he=`${ie}#${Me||""}`;L.has(he)||L.set(he,{key:he,title:Me?`${ie} ${Me.charAt(0).toUpperCase()}${Me.slice(1)} Agent Interactions`:`${ie} Interactions`,sessions:[],tokens:0,lastActivity:W.last_activity_at});let ce=L.get(he);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&&Gp(L)){k(Gp(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,q]=nh(),V=Kn(r);return m&&x.view==="conversation"?we.default.createElement(NI,{rootId:x.codeId,onBack:()=>w(RC({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"),USe.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(fl,null),m&&we.default.createElement(Jx,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"}},vI.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(uI,{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(hc,{width:"100%",height:"100%"},we.default.createElement(Gc,{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(yu,{strokeDasharray:"3 3",stroke:r?"#2a2a2a":"#e5e7eb"}),we.default.createElement(wu,{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(ku,{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(Ic,{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(xu,{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:Nu(Q.tokens)},{label:"Avg / interaction",value:Nu(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 ${Nu(L.tokens)} tokens`)),L.sessions.map(G=>{let W=d[G.id],ie=u===G.id,Me=T[G.id]||"conversation",he=G.tokens?.total||0,ce=(G.tokens?.input||0)+(G.tokens?.output||0)||he;return we.default.createElement(jC,{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"},xI(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(Zc,{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:he>0&&`${Nu(he)} tokens`},{key:"context",width:Ea.context,empty:"Context: this interaction recorded no token counts",content:he>0&&we.default.createElement(Xc,{compact:!0,darkMode:r,label:"Context",used:ce,limit:Ux(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:zX(G.last_activity_at)&&we.default.createElement("span",{style:{color:V.textMuted}},zX(G.last_activity_at))}]}),G.source!=="telemetry"&&we.default.createElement(Rc,{kind:"context",id:G.id,title:"Replay this conversation"}),we.default.createElement(Wp,{open:ie,darkMode:r}))),!ie&&we.default.createElement(rh,{darkMode:r,onClick:()=>j(G.id),hold:!0,style:{padding:"0 16px 12px"},lines:[{label:"input",text:G.preview?.input,color:Mn("user",r).color},{label:"output",text:G.preview?.output,color:Mn("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(Vx,{options:WSe,value:Me,onChange:R=>D(te=>({...te,[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"}`)),Me==="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(us,{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=FSe(W);return R?we.default.createElement("div",{className:"pt-3 mt-2 border-t",style:{borderColor:V.cardBorder}},we.default.createElement(Xc,{...R,label:"Context pressure",estimated:!0,darkMode:r})):null})()),Me==="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(qSe,{key:R.id,generation:R,darkMode:r,maxMs:Math.max(...W.generations.map(te=>(te.duration_seconds||0)*1e3),1),expanded:M(`${G.id}:${R.id}`),onToggle:()=>q(`${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 je=Z(J());function FX(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 BX=e=>/^[1-9]\d*$/.test(e||"")?e:null;function TI(e){let t=new URLSearchParams(e),r=BX(t.get("evaluation"));return r?{evaluationId:r,runId:BX(t.get("run"))}:null}async function UX(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 KSe=["trace_error_rate","trace_latency"],II=[{id:"rules",label:"Rule-based"},{id:"telemetry",label:"Telemetry"},{id:"judge",label:"LLM judge"}],At=(e,t)=>`${e} ${t}${e===1?"":"s"}`,y0=(e,t)=>{let r=String(e||"");return r.length>t?`${r.slice(0,t-1)}\u2026`:r},WX=e=>String(e||"").replace(/_/g," ").replace(/^\w/,t=>t.toUpperCase()),PI=e=>`${Math.round(Number(Math.abs(Number(e)*100).toFixed(9)))}%`,VSe=(e,t)=>t>0?`${e}/${t} \xB7 ${PI(e/t)}`:"\u2014",HX=e=>{let t=Number(e)||0;return t>=1e3?`${(t/1e3).toFixed(t%1e3===0?0:1)}s`:`${Math.round(t)}ms`},hl=e=>e?.type==="llm_judge"?"judge":KSe.includes(e?.type)?"telemetry":"rules",a2=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||WX(e.key);default:return WX(e?.key)}},dh=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 ${HX(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 ${HX(t.max_avg_ms??5e3)} \xB7 ${t.window_hours??168}h`;case"llm_judge":return t.prompt?`judge: ${y0(t.prompt,72)}`:"judge scores 0.0\u20131.0";default:return""}},v0=(e,t)=>(e?.criteria||[]).find(r=>r.key===t)||{key:t,type:t,config:{}},ph=(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"},DI=(e,t=null)=>t?.models?.length||Object.keys(t?.scores?._models||t?.scores?._cohorts||{}).length||(e?.compare_models||[]).length||1,Zp=(e,t=null)=>{let r=DI(e,t);if(e?.scenario_suite){let a=t?.samples_evaluated&&r?Math.round(t.samples_evaluated/r):e.scenario_count||0;return`${At(a,"scenario")} \xD7 ${At(r,"model")}`}let n=(e?.criteria||[]).length,o=n===1?"criterion":"criteria";return r>1?`${n} ${o} \xD7 ${At(r,"model")}`:`${n} ${o} \xB7 ${At(e?.sample_size??0,"sample")}`},jI=e=>e!=null&&typeof e=="object"&&!Array.isArray(e)&&!("score"in e)&&!("skipped"in e),fh=e=>Object.entries(e?.scores||{}).filter(([t,r])=>!t.startsWith("_")&&r&&typeof r=="object");var x0=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 fh(e).forEach(([,n])=>{jI(n)&&Object.keys(n).forEach(o=>{r.includes(o)||r.push(o)})}),r},Jp=(e,t)=>!e||typeof e!="object"?null:jI(e)?t&&e[t]||null:e,KX=e=>e&&e.samples_evaluated?(e.samples_passed||0)/e.samples_evaluated:null,GSe=e=>!!e&&["pending","running"].includes(e.status),ch=(e,t)=>!e||typeof e!="object"?null:e.priced!=null?e.priced:e.cost!=null?t??null:0,Qp=(e,t)=>e!=null&&t?e/t:null,i2=(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=ch(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:ch(i,i.scenarios),reported:i.reported??null,estimated:i2(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:ch(i,i.samples),reported:0,estimated:i.cost!=null,judge_cost:null,judge_calls:0,faults:{},kind:"sample"}));let o=x0(e);return o.length?o.map(a=>{let i=fh(e).map(([,s])=>Jp(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"}]},VX=(e,t)=>{let r=fh(e).map(([,o])=>Jp(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}},GX=20,Rp=(e=[],t=null)=>Number.isFinite(t)?Math.max(t,e.length):e.length,b0=(e=[],t=null)=>{let r=Rp(e,t),n=e.length=GX;return`${At(r,"run")}${n?` \xB7 latest ${e.length}`:""}`},YX=3,XX=(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"},gh=(e,t,r=[],n=null)=>Number.isFinite(e?.number)?e.number:Rp(r,n)-t,w0=(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"}},ZX=(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}`:""}`}},JX=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}`:""}`}},Ai=e=>{let t=e?.usage;if(!t||typeof t!="object")return null;let r=t.replays??t.samples??null,n=t.cost??null,o=ch(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:i2(t,r||0),unit:t.replays!=null?"replay":"sample",perInteraction:t.per_interaction??Qp(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}},QX=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"},S0=e=>{switch(e?.source){case"traces":return"from traces";case"meter":return"metered";case"reported":return"reported";default:return null}},k0=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 ")},YSe=(e=[])=>{let t=null,r=0,n=0,o=null,a=0,i=!1,s=!1;return e.forEach(l=>{let u=Ai(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:Qp(t,n),judgeCost:o,priced:a,estimated:i,judgeEstimated:s}},hh=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},$I=e=>e?e.standing?e.standing:e.archived_at?"archived":hh(e)?"current":"none":"none",XSe=["current","unrecorded"],RX=(e=[],{focusId:t=null}={})=>{let r=t!=null?e.filter(c=>String(c.id)===String(t)):[],n=r.length>0,o=n?r:e,a={total:0,stale:0,archived:0,none:0},i=[],s={},l=0,u=0;return o.forEach(c=>{let d=hh(c),p=$I(c);if(!(n?!!d:!!d&&XSe.includes(p))){a.total+=1,p==="archived"?a.archived+=1:p==="stale"?a.stale+=1:a.none+=1;return}i.push(d),l+=d.samples_evaluated||0,u+=d.samples_passed||0,(c.per_model&&typeof c.per_model=="object"&&Object.keys(c.per_model).length?Object.entries(c.per_model).map(([y,x])=>({label:y,passed:x?.passed||0,total:x?.total||0})):mh(d).filter(y=>y.label&&y.samples>0).map(y=>({label:y.label,passed:y.passed||0,total:y.samples||0}))).forEach(({label:y,passed:x,total:h})=>{let g=s[y]||={label:y,passed:0,total:0};g.passed+=x,g.total+=h})}),{evaluations:o.length,counted:i.length,notCounted:a,runs:i,samplesScored:l,samplesPassed:u,passRatio:l?u/l:null,perModel:Object.values(s),spend:YSe(i),focused:n}},eZ=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 ")},l2=(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=[];fh(t).forEach(([u,c])=>{let d=v0(e,u);(jI(c)?Object.entries(c):[[null,c]]).forEach(([f,m])=>{!m||typeof m!="object"||(m.skipped?a[hl(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 ${At(u.length,"model")}`:""}`,text:`Scored under the pass mark (pass \u2265 ${PI(.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}`:""} ${PI(c.stats.score)} \xB7 expects ${dh(c.criterion)} \xB7 ${VSe(c.stats.passed,c.stats.total)} passed`)})}return r},qX=e=>String(e||"").replace(/_/g," "),tZ=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}},u2=(e,{results:t=[],scenarioCount:r=0,labelFor:n=a=>a?.model,columns:o=null}={})=>{let a=mh(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:Qp(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))},rZ=(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 ${y0(s,t)}`},nZ=(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}}),LI=(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}),oZ=(e=[],t=[])=>Object.fromEntries(t.map(r=>[r,LI(e,r).length])),c2=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:aZ(t)})),aZ=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}`},_0=e=>aZ(e?.sandbox),iZ=(e={},t=[],r=null)=>{let n={...e,models:t};return r&&(n.sandbox_id=r),n},d2=(e,t)=>e&&(t||[]).some(r=>r.value===e)?e:"",ef=e=>e?.selection||e?.scores?._selection||{},sZ=e=>(ef(e).models||[]).map(t=>typeof t=="string"?t:t?.label).filter(Boolean);function C0(e,t=[]){let r=ef(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):GSe(e)||e.status==="failed"?n.map(o=>o.key):[]}var zI=(e,t=[])=>{let r=ef(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}},lZ=(e=[],t=[])=>tf((e||[]).filter(r=>r&&r.scenario_key&&r.status!=="pending"&&r.status!=="passed").map(r=>r.scenario_key),t),uZ=(e,t=[])=>{let r=ef(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:tf(n,t).keys}:{}},BI=272,FI=16,cZ=32,dZ=940,UI="clamp(360px, calc(100vh - 240px), 900px)",pZ=320,ZSe=3,fZ=3,mZ=720,MI="aa.evaluations.detail",gZ=e=>368+138*e,hZ=e=>504+170*e,yZ=e=>{try{let t=e?.getItem(MI);return t==="tools"||t==="steps"?t:null}catch{return null}},vZ=(e,t)=>{try{t==null?e?.removeItem?.(MI):e?.setItem(MI,t)}catch{}},xZ=(e=[])=>(e.find(t=>t?.step==="running")||e.find(t=>t?.step==="queued"))?.key??null,bZ=(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))},WI=(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},HI=(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},OI=e=>e!=null&&Number.isFinite(Number(e))?Number(e):null,p2=e=>{if(!e||e.status==="pending")return null;let t={durationMs:OI(e.duration_ms),inputTokens:OI(e.input_tokens),outputTokens:OI(e.output_tokens)};return t.durationMs==null&&t.inputTokens==null&&t.outputTokens==null?null:t},SZ=(e=[])=>{let t={durationMs:null,inputTokens:null,outputTokens:null,count:0};return e.forEach(r=>{let n=p2(r);n&&(t.count+=1,["durationMs","inputTokens","outputTokens"].forEach(o=>{n[o]!=null&&(t[o]=(t[o]||0)+n[o])}))}),t.count?t:null},kZ=(e={},t=[])=>{let r=SZ(t.map(n=>e?.[n]));return!r||r.inputTokens==null&&r.outputTokens==null?null:{input:r.inputTokens,output:r.outputTokens}},_Z=(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")}},qI=(e={},t=[],r=Object.keys(e))=>Object.fromEntries(t.map(n=>[n,SZ(r.map(o=>e[o]?.[n]))])),CZ=(e=[],t={},r=[])=>{let n=e.map(o=>HI(t[o?.key],r)).filter(o=>o!=null);return n.length?n.reduce((o,a)=>o+a,0):null},AZ=(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)},uh=e=>String(e).padStart(2,"0"),EZ=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}},NZ=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n}=EZ(e);return t?`${t}:${uh(r)}:${uh(n)}`:`${uh(r)}:${uh(n)}`},KI=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let{hours:t,minutes:r,seconds:n,total:o}=EZ(e);return o<60?`${o}s`:t?`${t}h ${uh(r)}m`:`${r}m ${uh(n)}s`},f2=e=>{if(e==null||!Number.isFinite(Number(e)))return"\u2014";let t=Number(e);return t>=6e4?KI(t):t>=1e3?`${(t/1e3).toFixed(t>=1e4?1:2).replace(/\.?0+$/,"")}s`:`${Math.round(t)}ms`},TZ=e=>{let t=Number(e)||0;return t<=500?3e3:t<=2e3?6e3:1e4},JSe=(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,OZ=(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&&JSe(s,i)?(n+=1,s):i}),a=o.length!==(e||[]).length||n!==o.length;return{results:a?o:e||[],changed:a}},PZ=(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},MZ=(e=[],t=ZSe)=>{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 ")}]},VI=(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)},IZ=({rowTop:e=0,headerHeight:t=0,boxHeight:r=0}={})=>Math.max(0,e-t-Math.round((r-t)/3)),DZ=({rowTop:e=0,headerHeight:t=0,groupRowHeight:r=0}={})=>Math.max(0,e-t-r);var QSe=[[/^claude/i,"anthropic"],[/^(gpt-|o\d|chatgpt|text-embedding)/i,"openai"],[/:/,"ollama"]],jZ=["openai","anthropic","ollama","openrouter","mock"];function RSe(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=QSe.find(([s,l])=>s.test(r)&&t.includes(l));return{provider:i?i[1]:null,model:r}}function eke(e,t,r=jZ){let n=RSe(t,r);return n.provider===e&&n.model===t?t:`${e}/${t}`}function $Z(e,t){return t.flatMap(r=>(e?.[r]||[]).flatMap(n=>{let o=String(n??"").trim();return o?[{provider:r,id:o,qualified:eke(r,o)}]:[]}))}function A0(e,{providers:t,qualify:r=!0}){let n=$Z(e,t).map(o=>r?o.qualified:o.id);return[...new Set(n)]}function LZ(e,t,{providers:r,qualify:n,restore:o=new Map}){let a=$Z(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 ed(e){return[...new Set(String(e??"").split(",").map(t=>t.trim()).filter(Boolean))]}function E0(e){return e.join(", ")}function zZ(e,t){return[...new Set([...e,...ed(t)])]}function BZ(e){let t=e.lastIndexOf(",");return t<0?{complete:"",rest:e.trimStart()}:{complete:e.slice(0,t),rest:e.slice(t+1).trimStart()}}function FZ(e,t,r){return(!e||e==="insertReplacementText")&&r.includes(t)}function UZ({key:e,repeat:t=!1},r,n){return e==="Enter"&&r.trim()?"commit":e==="Backspace"&&!t&&r===""&&n>0?"removeLast":null}var yh=Z(J()),Fs=typeof window>"u"?yh.useEffect:yh.useLayoutEffect;function N0(e){let[t,r]=(0,yh.useState)(0);return Fs(()=>{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(J());function T0({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=ed(e),h=(0,ta.useRef)(x);h.current=x;let g=k=>{let A=zZ(h.current,k);A.length!==h.current.length&&(t(E0(A)),f(`Added ${A.slice(h.current.length).join(", ")}`)),d("")},v=k=>{t(E0(h.current.filter(A=>A!==k))),f(`Removed ${k}`),m.current?.focus()},b=(k,A)=>{if(k.includes(",")){let{complete:C,rest:E}=BZ(k);g(C),d(E)}else FZ(A.nativeEvent?.inputType,k,r)?g(k):d(k.trimStart())},S=k=>{let A=UZ(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 ta.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=>ta.default.createElement("span",{key:k,style:tke},ta.default.createElement("span",{style:{overflowWrap:"anywhere"}},k),ta.default.createElement("button",{type:"button",onClick:()=>v(k),"aria-label":`Remove ${k}`,title:`Remove ${k}`,style:rke},"\xD7"))),ta.default.createElement(Yl,{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&&ta.default.createElement("span",{id:`${y}-title`,style:GI},a),ta.default.createElement("span",{id:`${y}-selected`,style:GI},x.length?`Chosen: ${x.join(", ")}`:"No models chosen"),ta.default.createElement("span",{role:"status","aria-live":"polite",style:GI},p))}var tke={display:"inline-flex",alignItems:"center",gap:2,maxWidth:"100%",padding:"0 2px 0 8px",borderRadius:999,fontFamily:K,fontSize:11,lineHeight:"18px",background:"var(--color-muted)",border:"1px solid var(--color-border)",color:"var(--color-text-primary)"},rke={padding:"0 5px",border:"none",borderRadius:999,background:"transparent",cursor:"pointer",fontSize:13,lineHeight:"18px",color:"var(--color-text-muted)"},GI={position:"absolute",width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};var Xe=Z(J());var Ei=Z(J());var nke="What the agent spent answering \u2014 the operating cost of these interactions, and of one on average",oke="What the judge model spent scoring, recommending and ruling \u2014 the evaluation's own offline cost",rf="var(--color-text-muted)",m2=e=>e?.agent?.unit==="replay"?"replay":"sampled interaction",Ou=(e,t=!1)=>Pr(e,{estimated:t}),WZ=(e,{total:t=!1}={})=>{if(!e)return null;let r=[];if(e.agent){let n=[`agent ${Pr(e.agent.cost,{estimated:e.agent.estimated})}`,At(e.agent.count,m2(e))];e.agent.perInteraction!=null&&n.push(`${Ou(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 ${At(e.judge.calls,"call")}`),t&&e.total!=null&&r.push(`total ${Pr(e.total,{estimated:e.totalEstimated})}`),r.join(" \xB7 ")};function nf({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 Ei.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}},Ei.default.createElement(We,{size:10,color:rf},e),Ei.default.createElement("div",{"data-testid":i,style:{marginTop:4,fontFamily:K,fontSize:18,fontWeight:700,lineHeight:1.1,color:o||"var(--color-text-primary)"}},t),Ei.default.createElement("div",{style:{marginTop:4,fontFamily:K,fontSize:11,color:"var(--color-text-secondary)",textWrap:"pretty"}},r))}var HZ={value:"\u2026",valueColor:rf,sub:"priced when the run completes"};function YI({spend:e,pending:t=!1,failed:r=!1}){let n=e?.agent||null,o=n&&(n.inputTokens!=null||n.outputTokens!=null)?` \xB7 in ${Nn(n.inputTokens)} \xB7 out ${Nn(n.outputTokens)}`:"",a=r?{value:"\u2014",valueColor:rf,sub:"nothing replayed"}:t?HZ:{value:n?Pr(n.cost,{estimated:n.estimated}):"\u2014",valueColor:n?.cost!=null?void 0:rf,sub:n?`${At(n.count,m2(e))}${n.perInteraction!=null?` \xB7 ${Ou(n.perInteraction,n.estimated)} per interaction`:""}${o}`:"nothing replayed or sampled"};return Ei.default.createElement(nf,{label:"Agent cost",title:nke,testId:"run-spend-agent",...a})}function XI({spend:e,judgedBy:t=null,pending:r=!1,failed:n=!1}){let o=e?.judge||null,i=o?[At(o.calls,"call"),k0(o),o.model,S0(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:rf,sub:i}:r?HZ:{value:o?Pr(o.cost,{estimated:o.estimated}):"\u2014",valueColor:o?void 0:rf,sub:i};return Ei.default.createElement(nf,{label:"Judge cost",title:oke,testId:"run-spend-judge",...s})}function ZI({spend:e,judgedBy:t=null,testId:r="run-spend"}){if(!e)return null;let{total:n,totalEstimated:o}=e;return Ei.default.createElement(Be,{padding:0,testId:r,style:{overflow:"hidden"}},Ei.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Ei.default.createElement(YI,{spend:e}),Ei.default.createElement(XI,{spend:e,judgedBy:t}),Ei.default.createElement(nf,{label:"Total",title:"Agent and judge together \u2014 what this run cost end to end",value:n!=null?Pr(n,{estimated:o}):"\u2014",sub:QX(e),testId:"run-spend-total"})),o&&Ei.default.createElement("div",{"data-testid":"run-spend-legend",style:{padding:"6px 16px",borderTop:"1px solid var(--color-border-light)",fontFamily:K,fontSize:11,color:rf}},Rs))}function af({run:e,testId:t,short:r=!1}){if(!e)return Xe.default.createElement(Ce,{tone:"muted",testId:t},"no runs");if(e.status==="failed")return Xe.default.createElement(Ce,{tone:"error",testId:t},"failed");if(e.status==="pending")return Xe.default.createElement(Ce,{tone:"warning",testId:t},"queued");if(e.status==="running")return Xe.default.createElement(Ce,{tone:"warning",testId:t},"running");if(e.samples_evaluated){let n=mo(e.samples_passed||0,e.samples_evaluated);return Xe.default.createElement(Ce,{tone:Au(KX(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 Xe.default.createElement(Ce,{tone:n>=.85?"success":n>=.7?"warning":"error",testId:t,title:"mean score across criteria"},`score ${aa(n)}`)}return Xe.default.createElement(Ce,{tone:"muted",testId:t},"no samples")}function h2({run:e,testId:t="run-version"}){let r=JX(e);return r?Xe.default.createElement(Ce,{tone:r.tone,size:10,style:{padding:"1px 6px"},title:r.title,testId:t},r.text):null}var of={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},O0={same:"var(--color-text-muted)",new:"var(--color-info)",unrecorded:"var(--color-warning-text)"},qZ=Ea.cost+32,ake=e=>mh(e).filter(t=>t.samples>0).map(t=>({label:t.label,short:xo(t.label||"").short||"all samples",passed:t.passed,total:t.samples})),VZ=(e,t,r)=>[`@${r||t?.agent?.name||"agent"}`,Zp(t,e),ph(t,e),_0(e)&&`against ${_0(e)}`].filter(Boolean).join(" \xB7 ");function y2({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=gh(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):w0(l,d,{olderNumber:p}),m=f&&d?ZX(l,d):null,y=Ai(l);return{run:l,number:c,latest:u===0,when:vo(l.completed_at||l.created_at),meta:VZ(l,r,n),bars:i?i(l):ake(l),delta:f,version:m,spend:y,selected:l.id===o}})}function eD({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=y2({runs:e,runCount:t,evaluation:r,agentName:n,selectedId:o,previousRun:i,barsFor:s,deltaFor:l});return Xe.default.createElement(Qr,{title:u,meta:b0(e,t),testId:c,bodyStyle:{overflowX:"auto"}},p.length===0&&Xe.default.createElement(Rr,null,"[ ] no runs yet"),Xe.default.createElement("div",{style:{minWidth:920}},p.map(f=>Xe.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"}`}},Xe.default.createElement("div",{style:{minWidth:0}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Xe.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`Run #${f.number}`),Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},f.when),f.latest&&Xe.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),f.run.status==="failed"&&Xe.default.createElement(Ce,{tone:"error",size:10,style:{padding:"1px 6px"}},"failed"),(f.run.status==="running"||f.run.status==="pending")&&Xe.default.createElement(Ce,{tone:"warning",size:10,style:{padding:"1px 6px"}},f.run.status==="pending"?"queued":"running"),Xe.default.createElement(h2,{run:f.run})),Xe.default.createElement("div",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)",marginTop:3,textWrap:"pretty"}},f.meta),f.run.status==="failed"&&f.run.error_message&&Xe.default.createElement("div",{style:{fontFamily:K,fontSize:11,color:"var(--color-error)",marginTop:3,textWrap:"pretty"}},`[!] ${f.run.error_message}`)),Xe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4,minWidth:0}},f.bars.map(m=>m.passed==null||m.total==null?Xe.default.createElement("div",{key:m.label||"all",style:{display:"flex",alignItems:"center",gap:8}},Xe.default.createElement("span",{style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)",width:128,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:m.label||void 0},m.short),Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Xe.default.createElement(qp,{key:m.label||"all",label:m.short,passed:m.passed,total:m.total}))),Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},Xe.default.createElement(Zc,{darkMode:d,cells:[{key:"agent",width:qZ,title:f.spend?.agent?`Agent: ${At(f.spend.agent.count,m2(f.spend))}${f.spend.agent.perInteraction!=null?` \xB7 ${Ou(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&&Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11}},Xe.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"agent "),Pr(f.spend.agent.cost,{estimated:f.spend.agent.estimated}))},{key:"judge",width:qZ,title:f.spend?.judge?`Judge: ${At(f.spend.judge.calls,"call")}${k0(f.spend.judge)?` \xB7 ${k0(f.spend.judge)}`:""}${S0(f.spend.judge)?` \xB7 ${S0(f.spend.judge)}`:""} \xB7 offline`:void 0,empty:"Judge cost: no judge was asked in this run",content:f.spend?.judge?.cost!=null&&Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11}},Xe.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&&Xe.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:1}},Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11,fontWeight:600,color:of[f.delta.tone]||of.muted}},f.delta.text),f.version&&Xe.default.createElement("span",{"data-testid":"run-version-delta",style:{fontFamily:K,fontSize:10,color:O0[f.version.kind]||O0.same}},f.version.text))},{key:"badge",width:132,content:Xe.default.createElement(af,{run:f.run,testId:f.latest?"suite-pass-badge":void 0})},{key:"open",width:20,content:Xe.default.createElement(Za,{kind:"link",color:"var(--color-info)",weight:400})}]}))))))}var KZ='[data-testid="evaluation-run"]',ike=150,JI=(e,t)=>e&&t!=null?e.querySelector(`[data-run-id="${CSS.escape(String(t))}"]`):null,QI=(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))},ske=(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},lke=(e,{evaluation:t,agentName:r,bars:n,selectedId:o})=>({run:e,number:Number.isFinite(e.number)?e.number:"?",latest:!1,when:vo(e.completed_at||e.created_at),meta:VZ(e,t,r),bars:n||[],delta:null,version:null,spend:Ai(e),selected:e.id===o}),RI={fontFamily:K,fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function uke({bar:e}){let t=e.title||void 0;return e.passed==null||e.total==null?Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8},title:t},Xe.default.createElement("span",{style:{...RI,width:96,flexShrink:0},title:e.label||void 0},e.short),Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},"\u2014")):Xe.default.createElement("div",{title:t},Xe.default.createElement(qp,{label:e.short,labelWidth:96,passed:e.passed,total:e.total,height:4,valueWidth:44}))}function g2({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"?ske(e.bars):null,c=MZ(s.status==="failed"?e.bars.filter(p=>p.passed!=null&&p.total!=null):e.bars),d=()=>o?.(s);return Xe.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}},Xe.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0,flexWrap:n?"wrap":"nowrap"}},Xe.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:700,color:"var(--color-text-primary)"}},`#${e.number}`),Xe.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.when),Xe.default.createElement(h2,{run:s}),Xe.default.createElement("span",{style:{marginLeft:"auto",flexShrink:0}},Xe.default.createElement(af,{run:s,short:!0,testId:e.latest?"suite-pass-badge":void 0}))),c.map(p=>Xe.default.createElement(uke,{key:p.label||"all",bar:p})),u&&Xe.default.createElement(zC,{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&&Xe.default.createElement("div",{style:{...RI,color:"var(--color-error)"},title:s.error_message},`[!] ${s.error_message}`),l&&Xe.default.createElement("div",{"data-testid":"evaluation-run-note",style:RI,title:l},l),(e.delta||e.spend?.agent?.cost!=null)&&Xe.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,fontFamily:K,fontSize:10,minWidth:0}},e.delta&&Xe.default.createElement("span",{style:{fontWeight:600,color:of[e.delta.tone]||of.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:e.version?.text},e.delta.text),e.spend?.agent?.cost!=null&&Xe.default.createElement("span",{style:{marginLeft:"auto",color:"var(--color-text-muted)",whiteSpace:"nowrap"}},Pr(e.spend.agent.cost,{estimated:e.spend.agent.estimated}))))}function tD({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=pZ,testId:h="suite-runs-panel",style:g}){let v=e??y2({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)?lke(d,{evaluation:n,agentName:o,bars:p,selectedId:S}):null,k=f==="strip",A=k?XX(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=Rp(b,r)-b.length,$=(C.find(w)||C[0])?.run.id??null,F=(v.find(w)||v[0])?.run.id??null,[N,O]=(0,Xe.useState)(!1),j=(0,Xe.useRef)(null),T=(0,Xe.useRef)(null),D=(0,Xe.useRef)(null),M=(0,Xe.useRef)(null);(0,Xe.useEffect)(()=>()=>clearTimeout(M.current),[]),(0,Xe.useEffect)(()=>{I||O(!1)},[I]);let q=new Map(C.concat(v).map(W=>[String(W.run.id),W.run])),V=W=>{clearTimeout(M.current),M.current=setTimeout(()=>i?.(W),ike)},L=(W,{next:ie,prev:Me,axis:he})=>ce=>{let R=W.current,te=R?Array.from(R.querySelectorAll(KZ)):[];if(te.length===0)return;let z=ce.target.closest(KZ),ee=te.indexOf(z),U;if(ce.key===ie)U=te[Math.min(ee+1,te.length-1)];else if(ce.key===Me)U=te[Math.max(ee-1,0)];else if(ce.key==="Home")U=te[0];else if(ce.key==="End")U=te[te.length-1];else return;if(ce.preventDefault(),!U||U===z)return;U.focus({preventScroll:!0}),QI(R,U,he);let P=q.get(U.dataset.runId);P&&V(P)};Fs(()=>{if(N||D.current==null)return;let W=JI(T.current,D.current);D.current=null,W?.focus({preventScroll:!0})},[N]),Fs(()=>{S!=null&&(QI(T.current,JI(T.current,S),"x"),QI(j.current,JI(j.current,S),"y"))},[S,f,N]);let G=Q>0&&Xe.default.createElement("div",{style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)",padding:"8px 12px",borderTop:"1px solid var(--color-border-light)"}},`${At(Q,"older run")} \xB7 reachable by link`);return k?Xe.default.createElement(Qr,{title:"Runs",meta:b0(b,r),testId:h,style:g},Xe.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&&Xe.default.createElement(Rr,{style:{flex:1}},"[ ] no runs yet"),C.map((W,ie)=>Xe.default.createElement(g2,{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:K,fontSize:11,color:"var(--color-text-secondary)"}},N?`[-] latest ${m}`:`[+] ${At(E,"earlier run")}`),I&&N&&Xe.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=>Xe.default.createElement(g2,{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)):Xe.default.createElement(Qr,{title:"Runs",meta:b0(b,r),testId:h,style:{display:"flex",flexDirection:"column",maxHeight:y||void 0,...g},bodyStyle:{flex:1,minHeight:0,display:"flex",flexDirection:"column"}},Xe.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"}},_&&Xe.default.createElement(Xe.default.Fragment,null,Xe.default.createElement("div",{"data-testid":"runs-rail-linked",style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)",padding:"4px 12px",background:"var(--color-muted)"}},`linked \xB7 older than the latest ${b.length}`),Xe.default.createElement(g2,{row:_,selected:w(_),tabIndex:$===_.run.id?0:-1,onOpen:i,noteFor:c})),!_&&v.length===0&&Xe.default.createElement(Rr,null,"[ ] no runs yet"),v.map(W=>Xe.default.createElement(g2,{key:W.run.id,row:W,selected:w(W),tabIndex:$===W.run.id?0:-1,onOpen:i,noteFor:c})),G))}var GZ=(e=[],t=null)=>{let r=e[0],n=Number.isFinite(t)?Math.max(t,e.length):e.length;return[At(n,"run"),r?`latest #${gh(r,0,e,t)} ${vo(r.completed_at||r.created_at)}`:null,r?.status==="complete"&&r.samples_evaluated?`${mo(r.samples_passed||0,r.samples_evaluated)} passed`:null].filter(Boolean).join(" \xB7 ")};var Ht=Z(J());var fs="var(--color-text-muted)",rD=3,YZ={passed:0,total:0},XZ={items:0,faults:0,scenarios:0},cke={keys:[],dropped:[]},yl=(e,t,r={})=>({fontFamily:K,fontSize:e,color:t,...r}),dke=e=>typeof window>"u"?"#":et(e),pke=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 ZZ({short:e,label:t}){return Ht.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ht.default.createElement("span",{style:yl(10,fs,{width:110,flexShrink:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),title:t||void 0},e),Ht.default.createElement("span",{style:yl(11,fs)},"\u2014"))}function nD({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=YZ,settledCount:m=0,settledFailed:y=0,expectedResults:x=0,running:h=!1,loading:g=!1,spend:v=null,fixSummary:b=XZ,selectionLabel:S=null,sandboxLabel:w=null,reportPath:_=null,rerun:k=cke,onSelectLatest:A,onWatchLatest:C,onJumpToFix:E,onRerunFailed:I,onRunAgain:Q}){let{darkMode:$}=ut(),F=pke(h);if(!e)return null;let N=e.status==="failed",O=e.status==="complete",j=h?`started ${vo(e.created_at)}`:vo(e.completed_at||e.created_at),T=`@${a} \xB7 ${At(i,"scenario")}${s?` in ${At(s,"group")}`:""} \xD7 ${At(l.length,"model")} \xB7 judged by ${u}${w?` \xB7 against ${w}`:""}`,D=k?.keys||[],M=k?.dropped||[],q=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=AZ(e,F),G=[{key:"duration",width:Ea.duration,content:L!=null&&Ht.default.createElement("span",{style:yl(11)},h?NZ(L):KI(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:yl(11,of[d.tone]||of.muted,{fontWeight:600})},d.text),p&&Ht.default.createElement("span",{"data-testid":"run-version-delta",style:yl(10,O0[p.kind]||O0.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(af,{run:e,testId:"suite-run-badge"})}],W=f||YZ,ie=W.total>0?W.passed/W.total:null,Me=N?{value:"\u2014",valueColor:fs,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:mo(W.passed,W.total),valueColor:ie==null?fs:yo[Au(ie)].text,sub:`${Math.max(W.total-W.passed,0)} failed \xB7 ${At(i,"scenario")} \xD7 ${At(l.length,"model")}`},he=c.slice(0,rD),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:yl(11,fs)},"\u2014"),c.length===0&&l.map(B=>Ht.default.createElement(ZZ,{key:B,short:xo(B).short,label:B})),he.map(B=>B.passed==null||B.total==null?Ht.default.createElement(ZZ,{key:B.label||"all",short:B.short,label:B.label}):Ht.default.createElement(qp,{key:B.label||"all",label:B.short,labelWidth:110,passed:B.passed,total:B.total,height:4,valueWidth:48}))),R=c.length>rD?Ht.default.createElement("span",{style:yl(10,fs)},`+${c.length-rD} more`):void 0,te=b||XZ,z=N?{value:"\u2014",valueColor:fs,sub:"\u2014"}:g?{value:"\u2026",valueColor:fs,sub:"loading\u2026"}:h?{value:"\u2026",valueColor:fs,sub:"scoring\u2026"}:te.items>0?{value:te.items,valueColor:yo.error.text,sub:Ht.default.createElement("span",{style:{color:"var(--color-info)"}},`${At(te.faults,"fault")} across ${At(te.scenarios,"scenario")} ${Yx.link}`)}:{value:"0",valueColor:fs,sub:"nothing to fix"},ee=()=>E?.(),P=N?{}:{role:"button",tabIndex:0,onClick:ee,onKeyDown:B=>{(B.key==="Enter"||B.key===" ")&&(B.preventDefault(),ee())},style:{cursor:"pointer"}},Y=`The faults this run found, grouped into fixes${N?"":" \u2014 opens What to fix"}`;return Ht.default.createElement(Be,{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:yl(13,"var(--color-text-primary)",{fontWeight:700})},`Run #${t??"?"}`),Ht.default.createElement("span",{style:yl(11,fs,{whiteSpace:"nowrap"})},j),n&&Ht.default.createElement(Ce,{tone:"info",size:10,style:{padding:"1px 6px"}},"latest"),Ht.default.createElement(h2,{run:e}),Ht.default.createElement("span",{style:yl(11,fs,{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 (${q})`),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:dke(_),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(Zc,{darkMode:$,cells:G}))),Ht.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},Ht.default.createElement(nf,{label:"Passed",title:"Results that passed, over every scenario \xD7 model the run covers",testId:"suite-run-passed",...Me}),Ht.default.createElement(nf,{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(YI,{spend:v,pending:h,failed:N}),Ht.default.createElement(XI,{spend:v,judgedBy:u,pending:h,failed:N}),Ht.default.createElement(nf,{label:"To fix",title:Y,testId:"suite-to-fix",...P,...z})),h&&x>0&&Ht.default.createElement(zC,{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 lf({evaluation:e,run:t=null,keys:r=null,spend:n=null,spendTotal:o=!1,reportPath:a=null,onDelete:i,deleting:s=!1,deleteLabel:l="Delete evaluation"}){let u=(r||(e.criteria||[]).map(m=>m.key)).map(m=>v0(e,m)),c={fontFamily:K,fontSize:11,color:"var(--color-text-muted)"},d={fontFamily:K,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=WZ(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}},ph(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:dh(m)||void 0},a2(m)),hl(m)==="telemetry"&&p("telemetry","score-source-telemetry","Scored from the agent's telemetry traces, not from sampled generations"),hl(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"},W1(.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"},Rs),a&&No.default.createElement(vn,{href:et(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:K,fontSize:11,color:"var(--color-error)",opacity:s?.5:1}},s?"Deleting\u2026":l)))}var fke=["tools","contains","not_contains"];function mke(e){let t=e.expectations||{},r=[];return fke.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 JZ(e){let t=[],r=null;return e.forEach(n=>{(n.group||"")!==(r||"")&&(r=n.group,r&&t.push(`# ${r}`)),t.push(mke(n))}),t.join(` +`)}var de=Z(J());var jr=Z(J());var gke=e=>e>=.85?"success":e>=.7?"warning":"error";function vh({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 P0({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=_?Au(k):i!=null?gke(i):"muted",C=yo[A].strong,E=x!=null||h>0;return jr.default.createElement(Be,{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:K,fontSize:14,fontWeight:700,color:"var(--color-text-primary)"},title:e||void 0},t||e||"all samples"),r&&jr.default.createElement("span",{style:{fontFamily:K,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:K,fontSize:26,fontWeight:700,lineHeight:1,color:C},"data-testid":"model-scorecard-headline"},_?mo(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:K,fontSize:11,color:"var(--color-text-secondary)"}},jr.default.createElement(vh,{label:"score"},aa(i)),s&&jr.default.createElement(vh,{label:"criteria"},mo(s.cleared,s.scored)),l!=null&&jr.default.createElement(vh,{label:"latency"},jn(l)),u!=null&&jr.default.createElement(vh,{label:"p50 / p95"},`${jn(u)} / ${jn(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)"}},d0(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)"}},d0(p))),f!=null&&jr.default.createElement(vh,{label:"cost",title:`What the agent spent under this model${m!=null?` \u2014 ${Ou(m,y)} per ${v}`:""}${y?` \xB7 ${bm()}`:""}`},Pr(f,{estimated:y}),m!=null&&jr.default.createElement("span",{style:{fontWeight:400,color:"var(--color-text-muted)"}},` \xB7 ${Ou(m,y)} / ${v}`)),E&&jr.default.createElement(vh,{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 ${At(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:K,fontSize:11,color:S.color||"var(--color-text-muted)"}},S.text)))}var vr=Z(J());var oD={fontFamily:K,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"bottom",whiteSpace:"nowrap"},aD={padding:"9px 12px",verticalAlign:"top",fontSize:13,color:"var(--color-text-cell)",borderTop:"1px solid var(--color-border-light)"},uf={...aD,fontFamily:K,fontSize:12,whiteSpace:"nowrap",textAlign:"right"},cf={...oD,textAlign:"right"},hke=e=>e==null?"var(--color-text-muted)":e>=.85?"var(--color-success-text)":e>=.5?"var(--color-warning-text)":"var(--color-error)";function M0({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(Be,{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:K,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:K,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"model-comparison-legend"},Rs)),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:oD},"Model"),vr.default.createElement("th",{style:cf},"Passed"),vr.default.createElement("th",{style:cf},"Mean score"),u&&vr.default.createElement("th",{style:cf},"Avg latency"),c&&vr.default.createElement("th",{style:cf,title:"Median and 95th percentile latency, nearest rank"},"P50 / P95"),l&&vr.default.createElement("th",{style:cf,title:`Average input + output tokens per ${t}`},"Avg tokens"),i&&vr.default.createElement("th",{style:cf,title:`Cohort spend, and per ${t}`},"Cost"),s&&vr.default.createElement("th",{style:cf,title:"What the judge spent scoring this model's answers"},"Judge"),vr.default.createElement("th",{style:{...oD,width:"34%"}},"Typical fault"))),vr.default.createElement("tbody",null,e.map(p=>{let{short:f,provider:m}=xo(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:{...aD,whiteSpace:"nowrap"}},vr.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"},title:p.label},f),p.winner&&vr.default.createElement("span",{style:{marginLeft:6,fontFamily:K,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:K,fontSize:11,color:"var(--color-text-muted)"}},m)),vr.default.createElement("td",{style:{...uf,color:hke(p.passRate),fontWeight:600}},mo(p.passed,p.total)),vr.default.createElement("td",{style:uf},aa(p.avgScore)),u&&vr.default.createElement("td",{style:uf},p.avgDurationMs==null?"\u2014":jn(p.avgDurationMs)),c&&vr.default.createElement("td",{style:uf,"data-testid":"model-comparison-percentiles"},p.p50DurationMs==null?"\u2014":`${jn(p.p50DurationMs)} / ${jn(p.p95DurationMs)}`),l&&vr.default.createElement("td",{style:uf,title:p.avgInputTokens==null?void 0:`${Math.round(p.avgInputTokens)} in \xB7 ${Math.round(p.avgOutputTokens||0)} out per ${t}`},p.avgTokens==null?"\u2014":Nn(Math.round(p.avgTokens))),i&&vr.default.createElement("td",{style:uf,title:p.cost!=null&&p.estimated?bm():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:uf,"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)"}},At(p.judgeCalls,"call"))),vr.default.createElement("td",{style:{...aD,color:p.typicalFault?"var(--color-text-cell)":"var(--color-text-muted)",textWrap:"pretty"}},rZ(p)))})))))}var To=Z(J());var yke=[0,25,50,75,100],vke={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},QZ={display:"contents"},iD={gridColumn:"1 / -1"},xke={fontFamily:K,fontSize:11,color:"var(--color-text-secondary)"};function bke({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 sD({plot:e,testId:t="comparison-intervals"}){if(!e)return null;let r=`${e.confidence}% CI`;return To.default.createElement("div",{style:vke,"data-testid":t},To.default.createElement(We,{size:10,color:"var(--color-text-muted)",style:iD},`Pass rate \xB7 ${r}`),e.rows.map(n=>{let{short:o}=xo(n.label,"");return To.default.createElement("div",{key:n.label,style:QZ,"data-testid":"comparison-interval-row","data-model":n.label},To.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:600,color:"var(--color-text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:n.label},o),To.default.createElement(bke,{passRate:n.passRate,interval:n.interval}),To.default.createElement("span",{style:xke},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 ${At(n.scenarios,"scenario")}`))}),To.default.createElement("div",{style:QZ,"aria-hidden":"true"},To.default.createElement("span",null),To.default.createElement("span",{style:{position:"relative",display:"block",height:14}},yke.map(n=>To.default.createElement("span",{key:n,style:{position:"absolute",left:`${n}%`,transform:"translateX(-50%)",fontFamily:K,fontSize:10,color:"var(--color-text-muted)"}},`${n}%`))),To.default.createElement("span",null)),e.conclusion&&To.default.createElement("div",{style:{...iD,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:{...iD,fontFamily:K,fontSize:10,color:"var(--color-text-muted)"}},`${r} from ${Number(e.resamples).toLocaleString("en-US")} resamples of whole scenarios`))}var $r=Z(J());var RZ={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"},wke={openrouter:"openrouter/auto"},eJ=(e,t)=>{let r=t?.scores?._judge;if(!r||typeof r!="object")return null;let n=RZ[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:RZ[n],providerDefault:wke[r.provider]||null,answered:o,auto:!a,pinned:e?.judge_model||null,suggestion:e?.judge_model||a||(o.length===1?o[0][0]:"")}},tJ=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 rJ="/settings?tab=api-keys",v2=(e=11)=>({fontFamily:K,fontSize:e,color:"var(--color-text-secondary)"});function lD({evaluation:e,run:t,label:r,onChanged:n,testId:o="judge-chip"}){let a=eJ(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:v2()},`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:{...v2(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:tJ(a),"aria-expanded":i,style:{...v2(),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(Be,{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:K,boxSizing:"border-box",background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}}),$r.default.createElement(fe,{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(fe,{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:v2()},a.pinned?`next run: ${a.pinned}`:`next run: ${a.providerDefault||`${a.provider} default`}`),$r.default.createElement(vn,{href:et(rJ),onClick:()=>lt(rJ)},`${a.provider||"provider"} key in Settings`)),p&&$r.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},p)))}var td=Z(J());async function x2(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 I0({build:e,testId:t="copy-fix-prompt",style:r}){let[n,o]=(0,td.useState)("idle"),a=(0,td.useRef)(null);(0,td.useEffect)(()=>()=>clearTimeout(a.current),[]);let i=async()=>{let l="";try{l=e?.()||""}catch{l=""}let u=l?await x2(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 td.default.createElement(fe,{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 b2=()=>{if(typeof window>"u"||!window.location)return"";let e=String(window.ACTIVE_AGENT_DASHBOARD?.mountPath||"").replace(/\/+$/,"");return`${window.location.origin}${e}`};var Et=Z(J());var Pe=Z(J());var w2="Update from the sandbox",Ske=new Set(["queued","publishing"]);function D0(e){return!!(e&&Ske.has(e.status))}function oJ(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:`${nJ(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:nJ(e),tone:kke(e)}}}function nJ(e){return e.state==="merged"?"Merged":e.state==="closed"?"Closed":e.draft?"Draft":"Open"}function kke(e){return e.state==="closed"?"error":e.state==="merged"?"success":e.draft?"neutral":"success"}function aJ(e){return!e?.head_commit||!e.number||D0(e)?!1:!["closed","merged"].includes(e.state)}function iJ(e){return!!(e?.head_commit&&!e.number&&!D0(e))}function sJ(e,t,r){let n=new Set(xh(t,r).map(o=>o.path));return(e?.files||[]).map(o=>o.path).filter(o=>!n.has(o))}function lJ(e){return(e||[]).some(t=>t.refusal==="not_read")}function uJ(e){let t=(e||"").split(/[\s,]+/).filter(Boolean);return t.length?t:null}function S2(e){return e==="changed_since_preview"}function k2(e){return new Set((e||[]).filter(t=>!t.refusal).map(t=>t.path))}function _2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}function xh(e,t){return(e||[]).filter(r=>!r.refusal&&t.has(r.path))}function cJ(e,t){let r=e||[],n=r.filter(l=>!l.refusal),o=r.length-n.length,a=xh(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 dJ(e){return{added:"A",modified:"M",deleted:"D"}[e.status]||"?"}var _ke=/[\x00-\x20\x7f~^:?*[\\]|\.\.|@\{|\/\/|^[/-]|\/$|\.$|^@$/;function Cke(e){let t=(e||"").trim();return t?t.length>200?"A branch name is at most 200 characters.":!/^[\x00-\x7f]*$/.test(t)||_ke.test(t)||t.split("/").some(r=>r.startsWith(".")||r.endsWith(".lock"))?`"${t}" is not a valid branch name.`:null:"Name the branch."}function pJ({files:e,selection:t,title:r,branch:n,message:o,update:a=!1}){return xh(e,t).length===0?"Choose at least one file.":a?(o||"").trim()?null:"Add a commit message.":(r||"").trim()?Cke(n):"Add a title."}function C2({files:e,selection:t,title:r,body:n,branch:o,message:a,allowlist:i=null,update:s=!1}){let l=xh(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 fJ(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 uD(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 mJ(e){return e?.repository?`Changes from a sandbox of ${e.repository}`:"Changes from a sandbox"}var gJ={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 hJ(e){return/[.!?]$/.test(e)?e:`${e}.`}function yJ(){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 j0({sandbox:e,codeSession:t=null}){let r=`/api/sandboxes/${encodeURIComponent(e.session_id)}/pull_request`,[n,o]=(0,Pe.useState)(null),[a,i]=(0,Pe.useState)(null),[s,l]=(0,Pe.useState)(null),[u,c]=(0,Pe.useState)(0),[d,p]=(0,Pe.useState)(!1),f=(0,Pe.useCallback)(async()=>{let h=await fetch(r),g=await h.json().catch(()=>({}));if(!h.ok)throw new Error(nt(g,`Could not load the pull request (HTTP ${h.status}).`));return g},[r]);(0,Pe.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let b=await f();if(h)return;o(b),i(null),D0(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(nt(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:Pe.default.createElement(Pe.default.Fragment,null,Pe.default.createElement(Eke,{pullRequest:y,publishing:x,error:a,opening:d,onOpenDialog:h=>l({mode:h}),onOpenBranch:m}),s&&Pe.default.createElement(Nke,{codeSession:t,sandbox:e,pullRequest:y,publishing:x,mode:s.mode,onClose:()=>l(null),onPublished:()=>{l(null),c(h=>h+1)}}))}function Eke({pullRequest:e,publishing:t,error:r,opening:n,onOpenDialog:o,onOpenBranch:a}){let i=yJ(),{muted:s,strong:l,border:u,link:c,secondaryButton:d,primaryButton:p,errorBox:f}=i,{label:m,tone:y}=oJ(e),x=D0(e),h=!!t?.available,g=aJ(e),v=iJ(e);return Pe.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-2 ${u}`},Pe.default.createElement("div",{className:"flex items-center justify-between gap-3"},Pe.default.createElement("p",{className:`text-sm font-medium ${l}`},"Pull request"),Pe.default.createElement("div",{className:"flex items-center gap-2"},t?.patch_available&&!h&&Pe.default.createElement("button",{type:"button",onClick:()=>o("patch"),className:d},"Download patch\u2026"),h&&g&&Pe.default.createElement("button",{type:"button",onClick:()=>o("update"),disabled:x,className:`${d} disabled:opacity-50`},"Update draft PR"),h&&Pe.default.createElement("button",{type:"button",onClick:()=>o("create"),disabled:x,className:p},"Open draft PR"))),t&&!h&&Pe.default.createElement("p",{className:`text-xs ${s}`},hJ(t.refusal||"Publishing is not available for this sandbox"),t.patch_available&&" You can download its changes as a patch instead."),e&&Pe.default.createElement("div",{className:"space-y-1"},Pe.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-sm"},Pe.default.createElement(Bs,{tone:y},m),e.url?Pe.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:`truncate ${c}`},"#",e.number," ",e.title):Pe.default.createElement("span",{className:`truncate ${l}`},e.title)),Pe.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"&&Pe.default.createElement("p",{className:`text-xs ${s}`},e.error_message),e.status==="failed"&&e.error_message&&Pe.default.createElement("p",{className:f},e.error_message),v&&Pe.default.createElement("div",{className:"flex flex-wrap items-center gap-3 text-xs"},e.compare_url&&Pe.default.createElement("a",{href:e.compare_url,target:"_blank",rel:"noopener noreferrer",className:c},"Compare on GitHub"),h&&Pe.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&&Pe.default.createElement("div",{className:f},r))}function Nke({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,Pe.useState)(null),[d,p]=(0,Pe.useState)(!0),[f,m]=(0,Pe.useState)(null),[y,x]=(0,Pe.useState)(new Set),[h,g]=(0,Pe.useState)(l?t?.title||"":mJ(e)),[v,b]=(0,Pe.useState)(""),[S,w]=(0,Pe.useState)(l&&t?.branch||""),[_,k]=(0,Pe.useState)(w2),[A,C]=(0,Pe.useState)(""),[E,I]=(0,Pe.useState)(null),[Q,$]=(0,Pe.useState)(!1),[F,N]=(0,Pe.useState)(0);return(0,Pe.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(nt(D,`Could not read the sandbox's changes (HTTP ${T.status}).`));c(D.preview),x(k2(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]),Pe.default.createElement(cD,{sandbox:e,preview:u,loading:d,error:f,publishing:r,pullRequest:t,selection:y,onToggle:j=>x(T=>_2(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(uJ(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({...C2({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 S2(T.code)&&N(D=>D+1),new Error(nt(T,`Could not publish (HTTP ${j.status}).`));a(T.pull_request)}catch(j){m(j.message)}finally{$(!1)}},onCancel:o})}function cD({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=yJ(),{muted:g,strong:v,border:b,link:S,secondaryButton:w,primaryButton:_,input:k,errorBox:A,darkMode:C}=h,E=t?.files||[],I=(0,Pe.useMemo)(()=>xh(E,i),[E,i]),Q=!!o?.available,$=p==="patch"||!Q,F=p==="update"&&!$,N=t&&!$?pJ({files:E,selection:i,title:l.title,branch:l.branch,message:l.message,update:F}):null,O=F?sJ(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."),Pe.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},Pe.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"}`},Pe.default.createElement("div",{className:"flex items-start justify-between gap-3"},Pe.default.createElement("div",null,Pe.default.createElement("p",{className:`text-lg font-medium ${v}`},j),Pe.default.createElement("p",{className:`text-xs ${g}`},T," Nothing under .github/ is ever published.")),Pe.default.createElement("button",{type:"button",onClick:y,className:w},"Close")),r&&Pe.default.createElement("p",{className:`text-sm ${g}`},"Reading the sandbox's changes\u2026"),n&&Pe.default.createElement("div",{className:A},n),t&&Pe.default.createElement(Pe.default.Fragment,null,d&&(lJ(E)||c)&&Pe.default.createElement("div",{className:"flex flex-wrap items-end gap-2"},Pe.default.createElement("label",{className:`flex-1 min-w-[16rem] text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Only read paths matching"),Pe.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`})),Pe.default.createElement("button",{type:"button",onClick:d,disabled:f||r,className:`${w} disabled:opacity-50`},"Read again")),Pe.default.createElement("div",{className:"space-y-1"},Pe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"Files \xB7 ",cJ(E,i)),E.length===0&&Pe.default.createElement("p",{className:`text-sm ${g}`},"The sandbox has no changes."),Pe.default.createElement("ul",{className:"space-y-1"},E.map(D=>Pe.default.createElement("li",{key:D.path,className:"flex items-center gap-2 text-sm"},Pe.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)}),Pe.default.createElement("span",{className:`w-4 text-xs font-mono ${g}`},dJ(D)),Pe.default.createElement("span",{className:`font-mono truncate ${D.refusal?g:v}`},D.path),D.size!=null&&D.status!=="deleted"&&Pe.default.createElement("span",{className:`shrink-0 text-xs ${g}`},uD(D.size)),D.refusal&&Pe.default.createElement("span",{className:`shrink-0 text-xs ${C?"text-amber-300":"text-amber-700"}`},D.refusal_message))))),O.length>0&&Pe.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: ",Pe.default.createElement("span",{className:"font-mono"},O.join(", "))),I.length>0&&Pe.default.createElement("div",{className:"space-y-2"},Pe.default.createElement("p",{className:`text-xs font-medium uppercase tracking-wide ${g}`},"What will be published"),I.map(D=>Pe.default.createElement(Tke,{key:D.path,file:D,classes:h}))),!$&&Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Branch"),Pe.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?Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Commit message"),Pe.default.createElement("input",{type:"text",value:l.message,onChange:D=>u("message",D.target.value),disabled:f,className:k})):Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Title"),Pe.default.createElement("input",{type:"text",value:l.title,onChange:D=>u("title",D.target.value),disabled:f,maxLength:256,className:k})),!$&&!F&&Pe.default.createElement("label",{className:`block text-xs space-y-1 ${g}`},Pe.default.createElement("span",null,"Description"),Pe.default.createElement("textarea",{value:l.body,onChange:D=>u("body",D.target.value),disabled:f,rows:4,className:k})),Pe.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-3"},Pe.default.createElement("p",{className:`text-xs ${g}`},!Q&&hJ(o?.refusal||"Publishing is not available for this sandbox"),Q&&N),Pe.default.createElement("div",{className:"flex items-center gap-3"},I.length>0&&Pe.default.createElement("a",{href:et((x||((D,M)=>fJ(e.session_id,D,M)))(I.map(D=>D.path),F?l.message:l.title)),className:`text-sm ${S}`},"Download patch"),Pe.default.createElement("button",{type:"button",onClick:y,className:w},"Cancel"),!$&&Pe.default.createElement("button",{type:"button",onClick:m,disabled:!!N||f,className:_},f?"Publishing\u2026":j))))))}function Tke({file:e,classes:t}){let{muted:r,border:n,darkMode:o,surface:a}=t,i=(0,Pe.useMemo)(()=>n0(e.diff),[e.diff]);return Pe.default.createElement("div",{className:`rounded border ${n}`},Pe.default.createElement("p",{className:`px-2 py-1 text-xs font-mono border-b ${n} ${r}`},e.path),e.binary?Pe.default.createElement("p",{className:`px-2 py-1 text-xs ${r}`},"Binary file, ",uD(e.size),": published as it is in the sandbox."):Pe.default.createElement("pre",{className:"max-h-72 overflow-auto p-2 text-xs font-mono",style:a},i.map((s,l)=>{let u=gJ[s.kind]||gJ.context;return Pe.default.createElement("div",{key:l,className:o?u.dark:u.light},s.text||" ")})))}var Oke=(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")),A2=new Map,Pke=e=>(A2.has(e)||A2.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(()=>A2.delete(e))),A2.get(e));function dD({item:e,evaluation:t,run:r}){let[n,o]=(0,Et.useState)(!1),[a,i]=(0,Et.useState)(null),[s,l]=(0,Et.useState)(""),[u,c]=(0,Et.useState)(null),[d,p]=(0,Et.useState)(!1),[f,m]=(0,Et.useState)(null),y=`/api/evaluations/${t?.id}/runs/${r?.id}/fixes`,x=(0,Et.useCallback)(async()=>{let k=await Pke(y);return i(k),l(A=>A||k.sandboxes?.find(C=>C.status==="ready")?.session_id||""),k},[y]);if((0,Et.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=>Oke(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 Et.default.createElement(Et.default.Fragment,null,Et.default.createElement(fe,{size:"sm",variant:"primary",onClick:()=>o(!0),testId:"implement-fix"},g?"Review implementation":"Implement with Claude Code"),g?.verification?.status==="complete"&&Et.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&&Et.default.createElement(SI,{title:"Implement evaluation fix",onClose:()=>o(!1)},Et.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},["Connect","Implement","Verify","Draft PR"].map((k,A)=>Et.default.createElement(Ce,{key:k,tone:A===_?"accent":A<_?"success":"muted"},A+1,". ",k))),Et.default.createElement("div",null,Et.default.createElement("h3",{style:{margin:"0 0 8px",fontSize:16}},e.kind==="instruction"?"Improve the instructions":String(e.fault||"").replaceAll("_"," ")),Et.default.createElement("p",{style:{margin:0,fontSize:13,lineHeight:"20px",color:"var(--color-text-secondary)"}},e.quote||e.recommendation)),Et.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&&Et.default.createElement("p",{role:"status"},"Loading checkout sandboxes\u2026"),a?.refusal&&Et.default.createElement("p",{role:"alert",style:{fontSize:13,color:"var(--color-warning-text)"}},a.refusal),a&&!a.supported&&Et.default.createElement("p",{role:"alert"},"This backend cannot refresh the checkout for verification."),!g&&a?.sandboxes?.some(k=>k.status==="ready")&&Et.default.createElement("label",{style:{fontSize:12,fontWeight:600}},"Checkout sandbox",Et.default.createElement("select",{"aria-label":"Checkout sandbox",style:{...wI,marginTop:8},value:s,onChange:k=>l(k.target.value)},Et.default.createElement("option",{value:""},"Choose a sandbox"),a.sandboxes.filter(k=>k.status==="ready").map(k=>Et.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&&Et.default.createElement("div",{style:u0},Et.default.createElement("p",{style:{fontSize:13,marginTop:0}},"Start a checkout sandbox for this evaluation\u2019s project, then return here to implement the fix."),Et.default.createElement("a",{href:et(a.project?`/projects/${a.project.id}`:"/projects")},"Open ",a.project?.name||"Projects"," \u2192"),Et.default.createElement(fe,{size:"sm",onClick:()=>x().catch(k=>c(k.message)),style:{marginLeft:12}},"Check again")),v&&a?.auth_mode==="sandbox_login"&&!b&&Et.default.createElement(Xp,{sandbox:v,onConnected:x,onChange:x}),v&&Et.default.createElement("p",{style:{margin:0,fontSize:12,color:"var(--color-text-secondary)"}},"This session will use ",Et.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&&Et.default.createElement(fe,{variant:"primary",disabled:!v||!S||d||!!a?.refusal||!a?.supported,onClick:()=>w()},d?"Starting\u2026":"Implement this fix"),g&&Et.default.createElement(Et.default.Fragment,null,Et.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},Et.default.createElement(Ce,{tone:g.status==="failed"?"error":"info"},"Claude Code \xB7 ",g.status),Et.default.createElement("span",{style:{fontSize:11,color:"var(--color-text-muted)"}},"Session #",g.id)),["queued","running"].includes(g.status)&&Et.default.createElement(fe,{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&&Et.default.createElement("p",{style:{fontSize:13,lineHeight:"20px",whiteSpace:"pre-wrap"}},g.result),g.error_message&&Et.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)"}},g.error_message),g.diff&&Et.default.createElement("details",null,Et.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review code changes"),Et.default.createElement("pre",{style:{...u0,maxHeight:240,overflow:"auto",fontSize:11}},g.diff)),Et.default.createElement(c0,{session:g,evaluationId:t.id,sandboxId:v?.session_id,onRetry:()=>w(g)}),g.verification?.status==="complete"&&v&&Et.default.createElement(j0,{sandbox:v,codeSession:g})),u&&Et.default.createElement("p",{role:"alert",style:{color:"var(--color-error-text)",fontSize:13}},u)))}var pD=6,Mke=600,bh=12,wh=e=>String(e||"").replace(/_/g," "),ms=e=>String(e??"").trim(),$0=e=>[...new Set(e.filter(Boolean))],fD=e=>ms(e).split(` `).map(t=>`> ${t}`).join(` -`),JI=(e,t=dke)=>{let r=fs(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Fs=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,d2=e=>String(e||"").replace(/\/+$/,""),QZ=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${fh(e.fault)}`:`Fix: ${fh(e.label||e.kind)}`:"Fix",RZ=(e,t)=>{let r=kx(e?.models||[]);return r.length?r:kx(ix(t).map(n=>typeof n=="string"?n:n?.label))},pke=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${fh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),fke=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: ${JI(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),mke=(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"?fs(l.diagnosis?.judge?.instruction_change)===fs(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},gke=(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},hke=(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=[`### ${Fs(e)}`];o&&s.push("","Prompt:",ZI(o));let l=pke(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${fs(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 ${fh(p)}`:""}`),s.push(`- Tools called: ${fke(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(fs).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let y=f.judge.suggested_tool;s.push(`- Suggested tool: ${Fs(y.name)}${y.description?` (${fs(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${JI(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:",ZI(JI(u.output))):s.push("- Answer: not retained for this run")}),s},eJ=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=d2(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 ${Fs(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},tJ=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=d2(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 ${Fs("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 ${Fs("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. ${Fs("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},rJ=({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=d2(s),d=kx(e.scenario_keys||[]),p=RZ(e,r),f=mke(e,o,{labelFor:l}),m=new Map;f.forEach(x=>m.set(x.scenario_key,[...m.get(x.scenario_key)||[],x]));let y=[`# ${QZ(e)}`,"",...eJ({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let b=e.count||d.length,h=`${fh(e.fault)} on ${d.length} scenario${d.length===1?"":"s"}${p.length&&(e.models||[]).length?` under ${p.join(", ")}`:""}`;if(y.push(`${b>1?`${b} results: `:""}${h}.`),e.recommendation&&y.push("",fs(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",ZI(e.quote)),e.note&&y.push("",fs(e.note)),kx((e.tools||[]).map(x=>typeof x=="string"?x:x?.name)).length&&(y.push("",`## ${e.tools_label?e.tools_label[0].toUpperCase()+e.tools_label.slice(1):"Tools"}`,""),(e.tools||[]).forEach(x=>{let S=typeof x=="string"?x:x?.name;if(!S)return;let w=typeof x=="object"?x.note:null,A=typeof x=="object"?x.server:null,k=A?` \xB7 served by ${A.name||A.key}${A.status?` (${A.status})`:""}`:"";y.push(`- ${Fs(S)}${w&&w!==A?.name?` \u2014 ${fs(w)}`:""}${k}`)}),e.server)){let x=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${Fs(e.server.key)}) is ${x?"enabled":`${e.server.status||"not enabled"}`} for the agent${c?`: ${c}/mcp/${e.server.key}`:""}.`)}y.push("",`## Scenario${d.length===1?"":"s"} (${d.length})`),d.slice(0,XI).forEach(x=>{y.push("",...hke(x,m.get(x)||[],gke(x,a,o)))}),d.length>XI&&y.push("",`Also failing: ${d.slice(XI).map(Fs).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("",...tJ({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${y.join(` +`),mD=(e,t=Mke)=>{let r=ms(e);return r.length>t?`${r.slice(0,t-1)}\u2026`:r},Us=e=>`\`${String(e).replace(/`/g,"\u02CB")}\``,E2=e=>String(e||"").replace(/\/+$/,""),vJ=e=>e?e.kind==="instruction"?"Add to the instructions":e.kind==="fault"?`Fix: ${wh(e.fault)}`:`Fix: ${wh(e.label||e.kind)}`:"Fix",xJ=(e,t)=>{let r=$0(e?.models||[]);return r.length?r:$0(x0(t).map(n=>typeof n=="string"?n:n?.label))},Ike=e=>!e||typeof e!="object"?[]:Object.entries(e).flatMap(([t,r])=>{let n=Array.isArray(r)?r:r==null||r===""?[]:[r];return n.length?[`${wh(t)}: ${n.map(o=>typeof o=="object"?JSON.stringify(o):String(o)).join(", ")}`]:[]}),Dke=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: ${mD(t.detail||t.error,80)})`:"";return`${r}${n}`}).join(", "),jke=(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"?ms(l.diagnosis?.judge?.instruction_change)===ms(e.quote):e?.kind==="fault"?l.fault===e.fault:!0);return s.length?s:i},$ke=(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},Lke=(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=[`### ${Us(e)}`];o&&s.push("","Prompt:",fD(o));let l=Ike(a);return l.length&&s.push("",`Expects: ${l.join("; ")}`),i&&s.push("",`Notes: ${ms(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 ${wh(p)}`:""}`),s.push(`- Tools called: ${Dke(u.tool_calls)}`);let f=u.diagnosis||{},m=[f.summary,f.recommendation||u.recommendation].map(ms).filter(Boolean).join(" ");if(m&&s.push(`- Diagnosis: ${m}`),f.judge?.suggested_tool?.name){let y=f.judge.suggested_tool;s.push(`- Suggested tool: ${Us(y.name)}${y.description?` (${ms(y.description)})`:""}`)}u.error_message&&s.push(`- Error: ${mD(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:",fD(mD(u.output))):s.push("- Answer: not retained for this run")}),s},bJ=({evaluation:e,run:t,runNumber:r,agentName:n,dashboardUrl:o})=>{let a=e?.agent||{},i=n||a.name||"the agent",s=E2(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 ${Us(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},wJ=({evaluation:e,run:t,runNumber:r,keys:n=[],models:o=[],dashboardUrl:a})=>{let i=E2(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 ${Us("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 ${Us("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. ${Us("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},SJ=({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=E2(s),d=$0(e.scenario_keys||[]),p=xJ(e,r),f=jke(e,o,{labelFor:l}),m=new Map;f.forEach(b=>m.set(b.scenario_key,[...m.get(b.scenario_key)||[],b]));let y=[`# ${vJ(e)}`,"",...bJ({evaluation:t,run:r,runNumber:n,agentName:i,dashboardUrl:s}),""];y.push("## What went wrong","");let x=e.count||d.length,h=`${wh(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("",ms(e.recommendation)),e.quote&&y.push("","The judge proposes adding this to the instructions:","",fD(e.quote)),e.note&&y.push("",ms(e.note)),$0((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(`- ${Us(S)}${w&&w!==_?.name?` \u2014 ${ms(w)}`:""}${k}`)}),e.server)){let b=e.server.status==="enabled";y.push("",`MCP server **${e.server.name||e.server.key}** (${Us(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,pD).forEach(b=>{y.push("",...Lke(b,m.get(b)||[],$ke(b,a,o)))}),d.length>pD&&y.push("",`Also failing: ${d.slice(pD).map(Us).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("",...wJ({evaluation:t,run:r,runNumber:n,keys:d,models:p,dashboardUrl:s})),`${y.join(` `)} -`},nJ=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${QZ(e)}`,"",...eJ({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||fh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",fs(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,ph).map(Fs).join(", ")}${e.chips.length>ph?` and ${e.chips.length-ph} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,ph).forEach(d=>i.push(`- ${fs(d)}`)),e.details.length>ph&&i.push(`- and ${e.details.length-ph} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${Fs(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=d2(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=kx(e.kind==="missing"?e.chips||[]:RZ({},r));return i.push("",...tJ({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` +`},kJ=({item:e,evaluation:t=null,run:r=null,runNumber:n=null,agentName:o=null,dashboardUrl:a=""}={})=>{if(!e)return"";let i=[`# ${vJ(e)}`,"",...bJ({evaluation:t,run:r,runNumber:n,agentName:o,dashboardUrl:a}),""];i.push("## What went wrong",""),i.push(`${e.label||wh(e.kind)}${e.scope?` \xB7 ${e.scope}`:""}.`),e.text&&i.push("",ms(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,bh).map(Us).join(", ")}${e.chips.length>bh?` and ${e.chips.length-bh} more`:""}.`),Array.isArray(e.details)&&e.details.length&&(i.push(""),e.details.slice(0,bh).forEach(d=>i.push(`- ${ms(d)}`)),e.details.length>bh&&i.push(`- and ${e.details.length-bh} more`));let s=(t?.criteria||[]).filter(d=>(e.chips||[]).includes(d?.key));s.length&&(i.push("","## Criteria",""),s.forEach(d=>{i.push(`- ${Us(d.key)} (${d.type})${d.config&&Object.keys(d.config).length?`: ${JSON.stringify(d.config)}`:""}`)}));let l=E2(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=$0(e.kind==="missing"?e.chips||[]:xJ({},r));return i.push("",...wJ({evaluation:t,run:r,runNumber:n,keys:[],models:c,dashboardUrl:a})),`${i.join(` `)} -`};var nd=e=>[...new Set(e)],eD=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},mh=e=>String(e||"").replace(/_/g," "),vl=e=>e?.status==="passed",xl=e=>!!e&&e.status!=="pending",od=e=>!!e&&["pending","running"].includes(e.status);function _x(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=UX(e);if(o.length)return o;let a=nd(t.map(s=>Pu(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function Pu(e,t){let n=(Yp(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 rD(e,t){let r=e?.scores?._models?.[t],n=(Yp(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return mo(t,r?.provider||n?.provider||"")}function gh(e,t=[],r=[]){let n=px(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 iJ(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=>Pu(e,i)===t);return{passed:a.filter(vl).length,failed:a.filter(i=>xl(i)&&!vl(i)).length,total:n||a.length}}function sJ(e,t=[],r=null,n=[]){let o=_x(e,t,r),a=gh(e,o,n);return o.map(i=>{let s={label:i,short:mo(i).short};return e?.scores?._models?.[i]?.scenarios!=null||od(e)||t.some(u=>Pu(e,u)===i)?{...s,...iJ(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=gh(e,r,n)*Math.max(r.length,1);return{passed:t.filter(vl).length,total:o}}function uJ(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 yke=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},QI=e=>e?.diagnosis?.judge?.instruction_change;function cJ(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(QI);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>vke(a,t)),o=new Set;return t.forEach(a=>{let i=QI(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>QI(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:nd(s.map(l=>l.scenario_key)),models:nd(s.map(l=>Pu(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 vke(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=nd(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=nd(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:yke(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=nd(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||nd(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 nD=e=>e?.cost_source==="estimated",dJ=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},p2=e=>{if(!e)return null;let t=e.judge_usage?.cost??null;if(e.cost==null&&t==null)return null;let r=[Or(e.cost,{estimated:nD(e)})];return t!=null&&r.push(`judge ${Or(t,{estimated:dJ(e)})}`),r.join(" \xB7 ")},pJ=e=>{if(!nD(e))return;let t=e.cost_rate||null;return mm({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(xl),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=>nD(u)||dJ(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 fJ({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:{...Fr(10.5),whiteSpace:"nowrap"}},iI(n.input,n.output)):null;if(!e)return ue.default.createElement("span",{style:o,"data-testid":r},ue.default.createElement("span",{style:Fr(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 ${Or(e.cost,{estimated:e.estimated})}`),e.judgeCost!=null&&s.push(`judge ${Or(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:V,fontSize:11,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap"}},Or(i,{estimated:e.estimated})),a)}return ue.default.createElement("span",{style:{...o,fontFamily:V,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":r},ue.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},Or(e.cost,{estimated:e.estimated})),e.judgeCost!=null&&ue.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap"}},`judge ${Or(e.judgeCost,{estimated:e.estimated})}`),a)}var Fr=(e,t="var(--color-text-muted)",r={})=>({fontFamily:V,fontSize:e,color:t,...r});function mJ({calls:e,empty:t,style:r}){return ue.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:V,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 gJ({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a,evaluation:i=null,onJudgeChanged:s}){let l=e?.scores?._models||{},u=Ci(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(Ve,null,"Models"),ue.default.createElement(KI,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"})),t.length===0&&ue.default.createElement(hn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&ue.default.createElement(xx,{rows:XC(e,{results:r,scenarioCount:n,columns:t,labelFor:c=>Pu(e,c)}),unit:"scenario",judgedBy:o,judgeEstimated:u}),t.length>1&&ue.default.createElement(qI,{plot:IX(e)}),t.length>0&&ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},t.map(c=>{let{short:d,provider:p}=rD(e,c),f=l[c],{passed:m,total:y}=iJ(e,c,r,n),b=Object.entries(f?.faults||{}),h=rh(f,f?.scenarios),g=f&&b.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!f&&od(e)?{text:"scoring\u2026"}:null;return ue.default.createElement(vx,{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:Vp(f?.cost,h),estimated:VC(f,f?.scenarios),judgeCost:f?.judge_cost,judgeCalls:f?.judge_calls||0,judgeEstimated:u,unit:"scenario",badges:b.map(([v,x])=>({tone:"error",text:`${mh(v)} \xD7${x}`})),note:g})})),a?.rationale&&ue.default.createElement(Fe,{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(Ve,null,"Verdict"),a.judge&&ue.default.createElement("span",{style:Fr(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:V,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var wke=(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(" "),tD={tools:10,steps:8},RI=[],Ske={},oJ=new Set,f2=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),kke=600,aJ=e=>typeof e=="number"?`${e}px`:e,_ke=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName);function Cke({result:e,expects:t,pending:r,compact:n=!1}){if(!e)return ue.default.createElement("span",{style:{...Fr(12),fontWeight:600}},r?"\u2026":"\u2014");if(!xl(e))return ue.default.createElement("span",{style:{...Fr(12),fontWeight:600}},"\u2026");let o=vl(e),a=o?"var(--color-success)":"var(--color-error)",i=uJ(e.tool_calls,t);if(n){let s=e.fault?mh(e.fault):e.status==="errored"?"errored":null,l=p2(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:V,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}},ea(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(m2,{metrics:ZC(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:V,fontSize:12}},ue.default.createElement("span",{style:{fontWeight:700,color:a}},o?"[+]":"[!]"),ue.default.createElement("span",{style:{fontWeight:600,color:a}},ea(e.score)),e.fault&&ue.default.createElement("span",{style:{fontSize:11,color:"var(--color-error-text)"}},mh(e.fault))),ue.default.createElement(mJ,{calls:i,empty:"no tools called"}),ue.default.createElement(m2,{metrics:ZC(e)}),p2(e)&&ue.default.createElement("span",{style:{...Fr(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:pJ(e),"data-testid":"scenario-cell-cost"},p2(e)))}var Ake=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(JC(e.durationMs));let r=iI(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=Ake(e);return o?ue.default.createElement("span",{"data-testid":t,title:r,style:{...Fr(10.5),whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,...n}},o):null}var g2={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"}},Eke=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,Nke=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,Tke=(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&&Eke(e.costEntry,t.costEntry)&&Nke(e.tokens,t.tokens)&&e.timeMs===t.timeMs,Oke=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:b,onToggle:h,onFocus:g}){let v=t.key,x=s==="steps",S=eD(t,"tools"),w=t.enabled===!1,A=g2[o]||g2.none,k=`${v}${w?" \xB7 disabled":""}`,_=ue.default.createElement("span",{"data-testid":"scenario-step",title:A.title,style:{...Fr(11,A.color),fontWeight:700,flexShrink:0}},A.text),C={fontFamily:V,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:b,title:x&&!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:tD[s]??tD.steps,padding:x?"6px 12px":"10px 12px",alignItems:x?"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}},x?ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},_,l&&ue.default.createElement("span",{style:{...Fr(11),minWidth:0,maxWidth:"40%",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},k),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:{...Fr(11),marginBottom:2,display:"flex",gap:6}},_,ue.default.createElement("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"}},k)),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}},S.map(E=>ue.default.createElement("span",{key:E,style:C},E)),S.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(Cke,{key:E,result:r?.[E],expects:S,pending:(d||p)&&c,compact:x})),ue.default.createElement(fJ,{entry:f,compact:x,testId:"scenario-row-cost",tokens:m}),x&&ue.default.createElement("span",{"data-testid":"scenario-row-time",title:"the slowest answer across the models",style:{...Fr(11),textAlign:"right",whiteSpace:"nowrap"}},JC(y)))},Tke);function hJ({rows:e=RI,columns:t=RI,run:r=null,resultsByKey:n=Ske,runKeys:o=oJ,running:a=!1,loading:i=!1,stepsByKey:s=null,currentKey:l=null,bars:u=RI,detail:c="steps",showKey:d=!0,collapsedGroups:p=oJ,onToggleGroup:f,openKey:m=null,onToggleRow:y,following:b=!1,onStopFollowing:h,emptyLabel:g,maxHeight:v=null,renderDetail:x,boxRef:S=null,testId:w="scenario-matrix"}){let A=t.length===0?"tools":c,k=A==="steps",_=wke(A,t.length),C=tD[A],E=k?XX(t.length):ZX(t.length),j=le=>o.has(le.key)||!!n[le.key],X=le=>r?i?j(le)?"loading":"skipped":GC(n[le.key],t,{inRun:j(le),running:a}):"none",z=le=>s?.[le.key]??X(le),U=new Map(e.map(le=>[le.key,xke(r,le.key,n[le.key])])),N=[...U.values()].some(le=>le?.estimated),O=new Map(e.map(le=>[le.key,nZ(n[le.key],t)])),D=EI(n,t),T=e.some(le=>le.group),I=[];e.forEach(le=>{let Ze=le.group||"",Je=I.find(it=>it.name===Ze);Je||(Je={name:Ze,rows:[]},I.push(Je)),Je.rows.push(le)});let P=le=>(le||T)&&p.has(le),[H,G]=(0,ue.useState)(null),L=[];I.forEach(le=>{(le.name||T)&&L.push(`group:${le.name}`),P(le.name)||le.rows.forEach(Ze=>L.push(Ze.key))});let Y=new Set(L),W=[H,m,l].find(le=>le!=null&&Y.has(le))??L[0]??null,ie=(0,ue.useRef)(null),Me=(0,ue.useRef)(null),[pe,ce]=(0,ue.useState)(50),[Q,ee]=(0,ue.useState)(0),$=(0,ue.useRef)(pe),B=(0,ue.useRef)({});Bs(()=>{$.current=pe,B.current={onToggleRow:y,onStopFollowing:h}});let K=(0,ue.useCallback)(le=>{ie.current=le,S&&(S.current=le)},[S]),M=(0,ue.useCallback)(le=>B.current.onToggleRow?.(le),[]),ae=(0,ue.useCallback)((le,Ze)=>{G(le);let Je=ie.current;Je&&!Je.contains(Ze.relatedTarget)&&B.current.onStopFollowing?.()},[]),F=()=>h?.();Bs(()=>{let le=Me.current;if(!le)return;let Ze=()=>{let it=le.offsetHeight;it&&ce(wt=>wt===it?wt:it)};if(Ze(),typeof ResizeObserver>"u")return;let Je=new ResizeObserver(Ze);return Je.observe(le),()=>Je.disconnect()},[]);let se=(0,ue.useCallback)(le=>{if(!le){ee(0);return}let Ze=()=>ee(le.offsetHeight);Ze();let Je=typeof ResizeObserver>"u"?null:new ResizeObserver(Ze);Je?.observe(le);let it=ie.current,wt=le.previousElementSibling;if(it&&wt?.hasAttribute("data-scenario-key")){let fr=wt.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');it.scrollTo({top:mZ({rowTop:wt.offsetTop,headerHeight:$.current,groupRowHeight:fr?.offsetHeight??0}),behavior:"smooth"})}return()=>{Je?.disconnect(),ee(0)}},[]),oe=(0,ue.useRef)(null),ve=(0,ue.useRef)(null),Re=(0,ue.useRef)(0);Bs(()=>{let le=ie.current;if(!le||!b||!l){oe.current=l;return}let Ze=le.querySelector(`[data-scenario-key="${f2(l)}"]`);if(!Ze)return;let Je=fZ({rowTop:Ze.offsetTop,headerHeight:pe,boxHeight:le.clientHeight});if(Math.abs(Je-le.scrollTop)>4){let it=Date.now(){let Ze=ie.current;if(!Ze||!le)return;let Je=le.hasAttribute("data-scenario-key")?le.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,it=$.current+(Je?.offsetHeight??0);le.offsetTop-itZe.scrollTop+Ze.clientHeight&&(Ze.scrollTop=le.offsetTop+le.offsetHeight-Ze.clientHeight)};return ue.default.createElement("div",{ref:K,"data-testid":w,"data-detail":A,onWheel:F,onTouchMove:F,onKeyDown:le=>{if(_ke(le.target))return;let Ze=ie.current;if(Ze){if(le.key==="ArrowDown"||le.key==="ArrowUp"){let Je=[...Ze.querySelectorAll("[data-nav]")];if(!Je.length)return;let it=Je.indexOf(le.target);it<0&&(it=Je.findIndex(fr=>fr.hasAttribute("data-scenario-key")&&fr.parentElement?.contains(le.target)));let wt=it<0?Je[0]:Je[Math.min(Math.max(it+(le.key==="ArrowDown"?1:-1),0),Je.length-1)];le.preventDefault(),h?.(),wt&&wt!==le.target&&(wt.focus({preventScroll:!0}),tt(wt));return}le.key==="Escape"&&m&&(y?.(m),Ze.querySelector(`[data-scenario-key="${f2(m)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:v?Q?`calc(${aJ(v)} + ${Q}px)`:aJ(v):void 0}},ue.default.createElement("div",{style:{minWidth:E}},ue.default.createElement("div",{ref:Me,style:{display:"grid",gridTemplateColumns:_,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(Ve,{size:10,color:"var(--color-text-muted)"},k?"Step":"Scenario"),!k&&ue.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Expects"),t.map(le=>{let{short:Ze,provider:Je}=rD(r,le),it=u.find(wt=>wt.label===le);return ue.default.createElement("span",{key:le,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},title:le},ue.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},Ze),ue.default.createElement("span",{style:Fr(10)},Je||" "),it&&it.passed!=null&&it.total!=null&&ue.default.createElement(Lp,{passed:it.passed,total:it.total,height:4,valueWidth:48,style:{marginTop:3}}),ue.default.createElement(m2,{metrics:D[le],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(Ve,{size:10,color:"var(--color-text-muted)"},"Cost")),k&&ue.default.createElement("span",{style:{textAlign:"right"},title:"The slowest answer across the run's models; a group's add up"},ue.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Time"))),I.map(le=>{let Ze=le.name,Je=P(Ze),it=`group:${Ze}`,wt=le.rows.filter(j),fr=g2[eZ(le.rows.map(z))]||g2.none,vn=EI(n,t,le.rows.map(It=>It.key)),Ca=t.map(It=>{let xe=vn[It];if(!wt.length)return{label:It,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:xe};if(i)return{label:It,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:xe};let rt=wt.filter(Nn=>xl(n[Nn.key]?.[It]));if(a&&!rt.length)return{label:It,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:xe};let ft=rt.filter(Nn=>vl(n[Nn.key][It])).length,Jt=wt.length,Eo=Jt&&ft===Jt?"var(--color-success-text)":ft===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:It,text:`${lo(ft,Jt)} passed`,color:Eo,weight:600,metrics:xe}}),hs=bke(le.rows.map(It=>U.get(It.key))),Aa=oZ(le.rows.map(It=>O.get(It.key)));return ue.default.createElement("div",{key:Ze||"__ungrouped","data-group":Ze},(Ze||T)&&ue.default.createElement("div",{"data-testid":"scenario-group-row","data-group":Ze,"data-collapsed":Je?"true":"false","data-nav":it,role:"button","aria-expanded":!Je,tabIndex:W===it?0:-1,onClick:()=>f?.(Ze),onKeyDown:It=>{(It.key==="Enter"||It.key===" "||It.key==="ArrowLeft"&&!Je||It.key==="ArrowRight"&&Je)&&(It.preventDefault(),f?.(Ze))},onFocus:It=>ae(it,It),style:{display:"grid",gridTemplateColumns:_,gap:C,padding:"7px 12px",alignItems:"center",borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",cursor:"pointer",position:"sticky",top:pe,zIndex:1}},ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},ue.default.createElement(Va,{kind:"chevron",open:!Je}),ue.default.createElement("span",{"data-testid":"scenario-group-step",title:fr.title,style:{...Fr(11,fr.color),fontWeight:700,flexShrink:0}},fr.text),ue.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Ze||"ungrouped"),k&&ue.default.createElement("span",{style:{...Fr(11),whiteSpace:"nowrap"}},`\xB7 ${Ct(le.rows.length,"scenario")}`)),!k&&ue.default.createElement("span",{style:Fr(11)},Ct(le.rows.length,"scenario")),Ca.map(It=>ue.default.createElement("span",{key:It.label,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},ue.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:It.weight,color:It.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},It.text),ue.default.createElement(m2,{metrics:It.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),ue.default.createElement(fJ,{entry:hs,compact:k,testId:"scenario-group-cost",tokens:Aa}),k&&ue.default.createElement("span",{"data-testid":"scenario-group-time",title:"the group's scenarios' times added up",style:{...Fr(11),textAlign:"right",whiteSpace:"nowrap"}},JC(aZ(le.rows,n,t)))),!Je&&le.rows.map(It=>{let xe=m===It.key;return ue.default.createElement("div",{key:It.key},ue.default.createElement(Oke,{scenario:It,results:n[It.key],columns:t,step:z(It),current:It.key===l,open:xe,detail:A,showKey:d,grid:_,inSelection:j(It),running:a,loading:i,costEntry:U.get(It.key)??null,tokens:O.get(It.key)??null,timeMs:AI(n[It.key],t),tabIndex:W===It.key?0:-1,onToggle:M,onFocus:ae}),xe&&ue.default.createElement("div",{ref:se},x?.(It)))}))}),e.length===0&&ue.default.createElement(hn,{style:{borderTop:"1px solid var(--color-border-light)"}},g||"[+] nothing failed in this group"),N&&ue.default.createElement("div",{style:{...Fr(11),padding:"6px 12px",borderTop:"1px solid var(--color-border-light)",textAlign:"right"},"data-testid":"scenario-matrix-legend"},Rs)))}function Pke(e){let t=[];e.duration_ms!=null&&t.push(Dn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${An((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=p2(e);return r&&t.push(r),t.join(" \xB7 ")}function Mke({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=rD(t,e),i=ue.default.createElement("span",{style:{fontFamily:V,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||!xl(r))return s(ue.default.createElement("span",{style:Fr(11)},o?"waiting for this replay\u2026":"not part of this run"),ue.default.createElement(Ee,{tone:"muted"},o?"pending":"no result"));let u=vl(r)?"success":"error",c=uJ(r.tool_calls,n),d=r.diagnosis||{},p=d.judge||{},f=r.fault||(r.status==="errored"?"run_error":null),m=[d.summary,d.recommendation||r.recommendation].filter(Boolean).join(" ")||r.error_message||"",y=Object.entries(r.scores||{}),b=Pke(r);return s(ue.default.createElement(ue.default.Fragment,null,ue.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:V,fontSize:11}},ue.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"tools"),ue.default.createElement(mJ,{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:V,fontWeight:700}},`[!] ${mh(f)}`),m?` \u2014 ${m}`:"",p.suggested_tool?.name&&ue.default.createElement("div",{style:{marginTop:4,fontFamily:V,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:Fr(11)},"answer not retained for this run"),y.length>0&&ue.default.createElement("div",{style:{...Fr(11),display:"flex",flexWrap:"wrap",gap:"2px 10px"},title:"score per criterion"},y.map(([h,g])=>ue.default.createElement("span",{key:h},mh(h)," ",ue.default.createElement("span",{style:{color:"var(--color-text-secondary)"}},g==null?"skipped":ea(g)))))),ue.default.createElement(ue.default.Fragment,null,ue.default.createElement(Ee,{tone:u},r.score==null?r.status:`${r.status} \xB7 ${ea(r.score)}`),b&&ue.default.createElement("span",{style:{marginLeft:"auto",...Fr(11)},title:pJ(r)},b),r.agent_run_id&&ue.default.createElement(ed,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:b?void 0:{marginLeft:"auto"}})))}function yJ({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=eD(e,"tools"),c=n[e.key]||{},d=r.some(f=>c[f]),p=a||d;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:Fr(11)},e.key),ue.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-cell)"}},"expects"),ue.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},u.join(" or ")||"\u2014"),l&&ue.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:14}},ue.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:V,fontSize:11,color:e.enabled===!1?"var(--color-text-muted)":"var(--color-text-cell)"}},e.enabled===!1?"[ ] enabled":"[x] enabled"),ue.default.createElement(gn,{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?p?ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12}},r.map(f=>ue.default.createElement(Mke,{key:f,label:f,run:t,result:c[f],expects:u,running:o}))):ue.default.createElement("div",{style:Fr(11)},"Not part of this run \u2014 use \u201Cre-run scenario\u201D to replay it."):ue.default.createElement("div",{style:Fr(11)},"No runs yet \u2014 use \u201Cre-run scenario\u201D to replay this one on its own."))}function vJ({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):Xp(w.scenario_keys||[],u),[f,m]=(0,ue.useState)("all"),y=t.length>1,b=y?f:"all",h=y?jX(e,i,w=>Pu(a,w)):e,g=bI(h,b),v=y?$X(h,t):{},x=w=>rJ({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:o2(),labelFor:A=>Pu(a,A)}),S=w=>{let A=Ct((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let k=nd(w.models||[]);if(t.length<=1||k.length===0)return A;let C=k.length>=t.length?t.length===2?"both models":"all models":k.map(E=>mo(E).short).join(", ");return`${A} \xB7 ${C}`};return ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10},"data-testid":"fix-list"},y&&ue.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-testid":"fix-list-model-filter"},ue.default.createElement("span",{style:Fr(11)},"for"),ue.default.createElement(In,{square:!0,mono:!0,selected:b==="all",onClick:()=>m("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>ue.default.createElement(In,{key:w,square:!0,mono:!0,selected:b===w,onClick:()=>m(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${mo(w).short} ${v[w]??0}`))),g.length===0&&ue.default.createElement(hn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${mo(b).short}`),ue.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},g.map((w,A)=>{let k=w.kind==="instruction",_=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 j=w.server,X=j?.status==="enabled",z=r||"the agent",U=c?p(w):null;return ue.default.createElement("div",{key:`${w.fault}-${A}`,"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(Va,{kind:k?"info":"fault"}),ue.default.createElement(Ee,{tone:_},`${mh(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:{...Fr(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:Fr(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"),C.length>0&&ue.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},ue.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},w.tools_label||"tools"),ue.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:6}},C.map(N=>ue.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:V,fontSize:11,maxWidth:"100%"}},ue.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},N.name),N.note&&ue.default.createElement("span",{style:{color:"var(--color-text-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:N.note},N.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(Ee,{tone:X?"success":"warning",size:10,style:{padding:"1px 6px"}},X?`enabled for ${z}`:`${j.status||"unknown"} \xB7 not enabled for ${z}`)),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(ge,{size:"sm",onClick:()=>n?.(w.action.path)},w.action.label),w.action?.hint&&ue.default.createElement("span",{style:{...Fr(11),whiteSpace:"nowrap"}},w.action.hint),U&&(U.keys.length?ue.default.createElement(gn,{onClick:()=>c(w,U),title:"Replay these scenarios under the models in the picker",testId:"fix-item-rerun"},`re-run ${Ct(U.keys.length,"scenario")}`):ue.default.createElement("span",{style:{...Fr(11),whiteSpace:"nowrap"},title:`${U.dropped.join(", ")} \xB7 disabled or no longer in the suite`,"data-testid":"fix-item-rerun-none"},"re-run \xB7 none enabled")),ue.default.createElement(bx,{build:()=>x(w),style:{marginLeft:"auto"}}),ue.default.createElement(YI,{item:w,evaluation:s,run:a})))})))}var xJ=e=>{let{results:t,fix_items:r,...n}=e;return n},Ike={keys:[],dropped:[]},oD={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:V,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},of={border:"1px solid var(--color-border-light)",borderRadius:10},Dke=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),bJ=()=>typeof localStorage<"u"?localStorage:null,wJ=()=>typeof document<"u"&&document.visibilityState==="hidden";function aD({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,we.useState)(!1),[d,p]=(0,we.useState)(null),[f,m]=(0,we.useState)(e.scenarios||[]),[y,b]=(0,we.useState)(e.scenario_groups||[]),[h,g]=(0,we.useState)(e.latest_run?[e.latest_run]:[]),[v,x]=(0,we.useState)(null),[S,w]=(0,we.useState)(a??e.latest_run?.id??null),[A,k]=(0,we.useState)({}),[_,C]=(0,we.useState)({}),[E,j]=(0,we.useState)(null),[X,z]=(0,we.useState)((e.compare_models||[]).join(", ")),U=(0,we.useMemo)(()=>t===void 0?[]:t??O1,[t]),N=pc(U),O=(0,we.useMemo)(()=>fx(N,{providers:U}),[N,U]),[D,T]=(0,we.useState)(null),[I,P]=(0,we.useState)(!1),[H,G]=(0,we.useState)([]),[L,Y]=(0,we.useState)(""),[W,ie]=(0,we.useState)(!1),[Me,pe]=(0,we.useState)(""),[ce,Q]=(0,we.useState)(null),[ee,$]=(0,we.useState)(null),[B,K]=(0,we.useState)(!1),[M,ae]=(0,we.useState)(null),[F,se]=(0,we.useState)(!0),[oe,ve]=(0,we.useState)(()=>{let fe=e.scenarios||[],et=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return CI(fe,new Set(px(et,fe)))}),[Re,tt]=(0,we.useState)(()=>new Map),[he,le]=(0,we.useState)(()=>JX(bJ())),[Ze,Je]=(0,we.useState)("suite"),it=(0,we.useRef)(null),wt=(0,we.useRef)(null),fr=(0,we.useRef)(null),vn=(0,we.useRef)(new Map),Ca=(0,we.useRef)(new Map),hs=(0,we.useRef)({}),Aa=(0,we.useRef)(A),It=(0,we.useRef)(S),xe=(0,we.useRef)(null),rt=gx(it),ft=rt-qX,Jt=rt===0||ft>=KX,Eo=rt===0?0:ft-(Jt?SI+kI:0),Nn=he??"steps",Ja=Eo===0||Eo>=YX,Qa=(0,we.useCallback)(async()=>{let fe=await fetch(`/api/evaluations/${s}/scenarios`);if(!fe.ok)return;let et=await fe.json();m(et.scenarios||[]),b(et.groups||[])},[s]),Fo=(0,we.useCallback)(async()=>{try{let fe=await fetch(`/api/evaluations/${s}`);if(!fe.ok)return p(`Could not load this suite (HTTP ${fe.status})`),null;let _t=(await fe.json()).evaluation||{};return m(_t.scenarios||[]),b(_t.scenario_groups||[]),g(_t.runs||[]),x(Number.isFinite(_t.run_count)?_t.run_count:null),p(null),_t}catch(fe){return p(`Could not load this suite: ${fe.message}`),null}finally{c(!0)}},[s]);Bs(()=>{Aa.current=A,It.current=S});let Qo=(0,we.useCallback)(fe=>{if(!fe)return Promise.resolve(null);if(vn.current.has(fe))return vn.current.get(fe);let et=(async()=>{try{let _t=await fetch(`/api/evaluations/${s}/runs/${fe}`);if(!_t.ok)return C(Ks=>({...Ks,[fe]:`HTTP ${_t.status}`})),null;let sr=(await _t.json()).run;if(!sr)return C(Ks=>({...Ks,[fe]:"no run in the response"})),null;C(Ks=>{if(!(fe in Ks))return Ks;let{[fe]:vs,...fd}=Ks;return fd});let No=Aa.current[sr.id],{results:vf,changed:Lu}=cZ(No?.results,sr.results);if(!(!!No&&!Lu&&No.status===sr.status&&No.completed_at===sr.completed_at&&(No.fix_items?.length??0)===(sr.fix_items?.length??0))){let Ks=xJ(sr);k(vs=>({...vs,[sr.id]:{...sr,results:vf}})),g(vs=>vs.some(fd=>fd.id===sr.id)?vs.map(fd=>fd.id===sr.id?{...fd,...Ks}:fd):vs),j(vs=>vs&&vs.id===sr.id?{...vs,...Ks}:vs)}return sr}catch(_t){return C(tr=>({...tr,[fe]:_t.message})),null}finally{vn.current.delete(fe)}})();return vn.current.set(fe,et),et},[s]),Ni=fe=>{j(xJ(fe)),w(fe.id),ae(null)};(0,we.useEffect)(()=>{let fe=!1;return(async()=>{let et=await Fo();if(fe)return;let _t=et?.runs?.[0]?.id??null,tr=!!(a&&et?.runs?.some(Lu=>Lu.id===a));if(a&&!tr){let Lu=await Qo(a);if(fe)return;if(Lu){Ni(Lu);return}}let sr=tr?a:null,No=It.current,vf=sr||(No&&et?.runs?.some(Lu=>Lu.id===No)?No:_t);w(vf),vf&&Qo(vf)})(),()=>{fe=!0}},[Fo,Qo]);let ju=e.latest_run?.id??null;(0,we.useEffect)(()=>{!ju||h.some(fe=>fe.id===ju)||Fo()},[ju,h,Fo]);let kl=A[S]||h.find(fe=>fe.id===S)||(E?.id===S?E:null),pa=h[0]||null,to=od(kl)?kl.id:od(pa)?pa.id:null;(0,we.useEffect)(()=>{if(!to)return;let fe=!1,et=()=>uZ(Aa.current[to]?.results?.length??0),_t=sr=>{clearTimeout(xe.current),xe.current=setTimeout(async()=>{if(fe||wJ())return;let No=null;try{No=await Qo(to)}catch{No=null}if(!fe){if(No&&!od(No)){await Fo(),r?.();return}_t(et())}},sr)},tr=()=>{document.visibilityState==="visible"&&_t(0)};return wJ()||_t(et()),typeof document<"u"&&document.addEventListener("visibilitychange",tr),()=>{fe=!0,clearTimeout(xe.current),typeof document<"u"&&document.removeEventListener("visibilitychange",tr)}},[to,Qo,Fo,r]);let hf=(0,we.useCallback)(async()=>{try{let fe=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!fe.ok)return;let et=await fe.json(),_t=LX(et.sandboxes);G(_t),Y(tr=>FX(tr,_t))}catch{}},[]);(0,we.useEffect)(()=>{hf()},[hf]);let dd=td(X),$u=async fe=>{P(!0),T(null);try{let et=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(BX(fe,dd,L))}),_t=await et.json().catch(()=>({}));if(!et.ok)throw _t.code==="sandbox_refused"&&hf(),new Error((_t.errors||[_t.error]).filter(Boolean).join(", ")||"Run failed to start");let tr=_t.run;g(sr=>[tr,...sr.filter(No=>No.id!==tr.id)]),x(sr=>sr==null?null:sr+1),k(sr=>({...sr,[tr.id]:{...tr,results:[]}})),w(tr.id),ae(null),se(!0),Je("suite"),r?.()}catch(et){T(et.message)}finally{P(!1)}},Th=fe=>[fe,pa?.id,S].slice(0,GX),Vx=fe=>{w(fe),ae(null),k(et=>TI(et,Th(fe))),A[fe]||Qo(fe)},Oh=fe=>{Vx(fe.id),i?.(fe.id)};(0,we.useEffect)(()=>{if(!a||a===S)return;if(h.some(et=>et.id===a)||E?.id===a){Vx(a);return}if(!u)return;let fe=!1;return(async()=>{let et=await Qo(a);fe||!et||(k(_t=>TI(_t,Th(et.id))),Ni(et))})(),()=>{fe=!0}},[a]);let Gx=async fe=>{fe.id&&(await fetch(`/api/evaluations/${s}/scenarios/${fe.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:fe.enabled===!1}})}),await Qa())},Q2=async()=>{Q(null);let fe=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:Me})}),et=await fe.json().catch(()=>({}));if(!fe.ok){Q((et.errors||[et.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(et.scenarios||[]),b(et.groups||[]),ie(!1),r?.()},Qe=kl,Ti=!!Qe&&!Array.isArray(Qe.results),Yx=Qe?_[Qe.id]:null,ho=(0,we.useMemo)(()=>(Qe?.results||[]).filter(fe=>fe&&fe.scenario_key),[Qe]),Ph=_x(Qe,ho,e).join("\0"),fa=(0,we.useMemo)(()=>Ph?Ph.split("\0"):[],[Ph]),Ra=(0,we.useMemo)(()=>dZ(ho,fe=>Pu(Qe,fe),hs.current),[ho,Qe]);Bs(()=>{hs.current=Ra});let yf=(0,we.useMemo)(()=>new Set(px(Qe,f)),[Qe,f]),Ea=od(Qe),Mh=gh(Qe,fa,f),_l=lJ(Qe,ho,fa,f),Cl=(0,we.useCallback)(fe=>yf.has(fe.key)||!!Ra[fe.key],[yf,Ra]),ro=(0,we.useMemo)(()=>vX(f,Ra,Ca.current),[f,Ra]),ys=(0,we.useMemo)(()=>{let fe={};return ro.forEach(et=>{let _t=Cl(et);fe[et.key]=Ti?_t?"loading":"skipped":Qe?GC(Ra[et.key],fa,{inRun:_t,running:Ea}):"none"}),fe},[ro,Cl,Ra,fa,Qe,Ti,Ea]),Ih=(0,we.useCallback)(fe=>ys[fe.key],[ys]),Dh=(0,we.useMemo)(()=>Ea?RX(ro.map(fe=>({key:fe.key,step:ys[fe.key]}))):null,[Ea,ro,ys]),pd=(0,we.useCallback)(fe=>fa.some(et=>{let _t=Ra[fe.key]?.[et];return xl(_t)&&!vl(_t)}),[fa,Ra]),Xx=(0,we.useMemo)(()=>ro.filter(pd).length,[ro,pd]),qs=!!Qe&&Qe.status==="complete"&&!Ti,Zx=(0,we.useMemo)(()=>tZ(ro.filter(fe=>!ee||(fe.group||"")===ee).filter(fe=>!B||pd(fe)),Ih,qs?Ze:"suite"),[ro,ee,B,pd,Ih,qs,Ze]),Jx=new Set(ro.filter(Cl).map(fe=>fe.group).filter(Boolean)).size,jh=ho.filter(xl).length,$h=ho.filter(fe=>xl(fe)&&!vl(fe)).length,R2=Mh*Math.max(fa.length,1),de=new Set(ho.filter(fe=>xl(fe)&&!vl(fe)).map(fe=>fe.scenario_key)).size,Ie=Qe?.scores?._verdict||null,mt=Object.prototype.hasOwnProperty.call(Qe?.scores||{},"_judge_label")?Qe.scores._judge_label||"rules":Ie?.judge&&Ie.judge!=="pass rate"?Ie.judge:e.judge_model||"rules",$t=(0,we.useMemo)(()=>Qe?cJ(Qe,ho):[],[Qe,ho]),xn=(0,we.useMemo)(()=>Ti?Ike:WX(ho,f),[Ti,ho,f]),Na=Object.keys(Qe?.scores||{}).filter(fe=>!fe.startsWith("_")),no=(0,we.useCallback)(fe=>sJ(fe,fe.id===Qe?.id?ho:(A[fe.id]?.results||[]).filter(et=>et&&et.scenario_key),e,f),[Qe,ho,A,e,f]),ei=(0,we.useCallback)((fe,et,_t)=>{if(!et||et.status!=="complete"||fe.status!=="complete")return lx(fe,et,{olderNumber:_t});let tr=_x(fe,fe.id===Qe?.id?ho:[],e),sr=_x(et,[],e),No=gh(et,sr,f)===gh(fe,tr,f)&&sr.length===tr.length;return lx(fe,et,{olderNumber:_t,comparable:No})},[Qe,ho,e,f]),Al=(0,we.useMemo)(()=>t2({runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,previousRun:e.previous_run,barsFor:no,deltaFor:ei}),[h,v,e,l,Qe?.id,no,ei]),El=Al.find(fe=>fe.run.id===Qe?.id)||null,V3=El?.number??(Number.isFinite(Qe?.number)?Qe.number:null),G3=El?.bars??(Qe?no(Qe):[]),Y3=Gp(h,v),xee=!!Qe&&pa?.id===Qe.id,bee=od(pa)&&pa.id!==Qe?.id?pa:null,eA=u||f.length>0,tA=eA?f.length:e.scenario_count??0,X3=eA?f.filter(fe=>fe.enabled!==!1&&(!ee||(fe.group||"")===ee)).length:tA,wee=`Run ${Ct(X3,"scenario")}${dd.length?` \xD7 ${Ct(dd.length,"model")}`:""}`,See=`@${l} \xB7 ${Ct(tA,"scenario")}${y.length?` in ${Ct(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?h.length?Ct(Y3,"run"):"no runs yet":"loading\u2026"}`,Z3=Qe&&Qe.status==="complete"?`/evaluations/${s}/runs/${Qe.id}/report`:null,kee=[...new Set([...y,...ro.map(fe=>fe.group).filter(Boolean)])],_ee=[{label:`All ${ro.length||tA}`,value:null}].concat(kee.map(fe=>({label:eA?`${fe} ${ro.filter(et=>et.group===fe).length}`:fe,value:fe}))),Lh=(0,we.useMemo)(()=>{let fe=[...new Set(ro.map(et=>et.group||""))];return fe.some(Boolean)?fe:[]},[ro]),Cee=Lh.some(fe=>!oe.has(fe)),rA=ro.length===0,Aee=B?"[+] nothing failed in this group":"[ ] no scenarios";(0,we.useEffect)(()=>{se(!0),tt(new Map),Je("suite"),ae(null)},[Qe?.id]),(0,we.useEffect)(()=>{ve(CI(f,yf))},[Qe?.id,u]);let J3=(0,we.useRef)(Qe?.id??null);(0,we.useEffect)(()=>{if(J3.current!==(Qe?.id??null)){J3.current=Qe?.id??null;return}!Ea||!F||ve(fe=>{let et=new Set(fe);return Lh.forEach(_t=>{if(Re.has(_t))return;let tr=ro.filter(sr=>(sr.group||"")===_t&&Cl(sr));tr.length&&(tr.every(sr=>ys[sr.key]==="passed")&&et.add(_t),tr.some(sr=>sr.key===Dh)&&et.delete(_t))}),Dke(et,fe)?fe:et})},[Qe?.id,Dh,jh,F,Ea]);let Eee=fe=>{let et=oe.has(fe);ve(_t=>{let tr=new Set(_t);return et?tr.delete(fe):tr.add(fe),tr}),tt(_t=>new Map(_t).set(fe,et))},Q3=fe=>{ve(new Set(fe?[]:Lh)),tt(new Map(Lh.map(et=>[et,fe])))},Nee=fe=>{le(fe),QX(bJ(),fe)},Tee=(0,we.useCallback)(fe=>{ae(et=>et===fe?null:fe),se(!1)},[]),Oee=(0,we.useCallback)(()=>se(!1),[]),Pee=(0,we.useCallback)(fe=>{let et=Array.isArray(fe)?fe[0]:fe;if(!et)return;let _t=ro.find(tr=>tr.key===et)?.group||"";$(null),K(!1),ve(tr=>{if(!tr.has(_t))return tr;let sr=new Set(tr);return sr.delete(_t),sr}),tt(tr=>new Map(tr).set(_t,!0)),ae(et),se(!1),requestAnimationFrame(()=>{let tr=wt.current;tr&&(tr.scrollIntoView({behavior:"smooth",block:"start"}),tr.querySelector(`[data-scenario-key="${f2(et)}"]`)?.focus({preventScroll:!0}))})},[ro]),Mee=()=>{fr.current?.scrollIntoView({behavior:"smooth",block:"start"}),fr.current?.focus({preventScroll:!0})},Iee=()=>{Qe&&(C(fe=>{let{[Qe.id]:et,..._t}=fe;return _t}),Qo(Qe.id))},R3=()=>{pa&&Oh(pa)},e4=rA&&d?we.default.createElement(hn,{style:of},"[!] suite not loaded"):rA&&!u?we.default.createElement(hn,{style:of},"loading\u2026"):rA?we.default.createElement(hn,{style:of},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):S!=null&&!Qe?we.default.createElement(hn,{style:of},"loading\u2026"):Yx&&!Array.isArray(Qe.results)?we.default.createElement(hn,{style:of},`[!] results not loaded (${Yx}) \xB7 `,we.default.createElement(gn,{onClick:Iee,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):we.default.createElement(hJ,{rows:Zx,columns:Qe?fa:[],run:Qe,resultsByKey:Ra,runKeys:yf,running:Ea,loading:Ti,stepsByKey:ys,currentKey:Dh,bars:G3,detail:Nn,showKey:Ja,collapsedGroups:oe,onToggleGroup:Eee,openKey:M,onToggleRow:Tee,following:F,onStopFollowing:Oee,emptyLabel:Aee,maxHeight:_I,boxRef:wt,renderDetail:fe=>we.default.createElement(yJ,{scenario:fe,run:Qe,columns:Qe?fa:[],resultsByKey:Ra,running:Ea,inRun:Cl(fe),canMutate:!fe.orphan,onRerun:et=>$u({keys:[et.key]}),onToggleEnabled:Gx})}),t4={rows:Al,runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,onOpen:Oh,noteFor:fe=>wI(fe,f),linkedRun:E,linkedBars:E&&no(E)};return we.default.createElement("div",{ref:it,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":Jt?"rail":"strip"},we.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},we.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},See),we.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},we.default.createElement(ge,{size:"sm",onClick:()=>{pe(PZ(f)),Q(null),ie(!W)}},W?"Cancel":"Edit scenarios"),we.default.createElement(hx,{value:X,onChange:z,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:{...oD,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),H.length>0&&we.default.createElement("select",{value:L,onChange:fe=>Y(fe.target.value),style:{...oD,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"},we.default.createElement("option",{value:""},"Run against: agent's own tools"),H.map(fe=>we.default.createElement("option",{key:fe.value,value:fe.value},`Run against sandbox ${fe.label}`))),we.default.createElement(ge,{variant:"primary",size:"sm",disabled:I||!u||X3===0,onClick:()=>$u(ee?{group:ee}:{}),testId:"suite-run-button"},I?"Starting\u2026":wee))),(d||D)&&we.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)",background:"var(--color-error-soft)",borderRadius:8,padding:"8px 12px"}},d||D),W&&we.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},we.default.createElement("textarea",{value:Me,onChange:fe=>pe(fe.target.value),rows:Math.min(Math.max(f.length+4,6),24),style:{...oD,width:"100%",boxSizing:"border-box",lineHeight:"18px"}}),we.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,fontSize:12,color:"var(--color-text-muted)",flexWrap:"wrap"}},we.default.createElement("span",{style:{flex:1,minWidth:240}},"One message per line. ",we.default.createElement("code",{style:{fontFamily:V}},"# Heading")," starts a group; ",we.default.createElement("code",{style:{fontFamily:V}},"| tools: a, b"),", ",we.default.createElement("code",{style:{fontFamily:V}},"| contains: x"),", ",we.default.createElement("code",{style:{fontFamily:V}},"| not_contains: y")," set expectations. Keep a scenario's ",we.default.createElement("code",{style:{fontFamily:V}},"key")," to keep its history."),we.default.createElement(ge,{variant:"primary",size:"sm",onClick:Q2},"Save scenarios")),ce&&we.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},ce)),Qe&&we.default.createElement(FI,{run:Qe,runNumber:V3,latestNumber:Y3,isLatest:xee,runningElsewhere:bee,agentName:l,scenarioCount:Mh,groupCount:Jx,columns:fa,judgedBy:mt,bars:G3,delta:El?.delta??null,version:El?.version??null,totals:_l,settledCount:jh,settledFailed:$h,expectedResults:R2,running:Ea,loading:Ti,spend:Ci(Qe),fixSummary:{items:$t.length,faults:Math.max(_l.total-_l.passed,0),scenarios:de},selectionLabel:wI(Qe,f),sandboxLabel:dx(Qe),reportPath:Z3,rerun:xn,onSelectLatest:R3,onWatchLatest:R3,onJumpToFix:Mee,onRerunFailed:()=>$u({keys:xn.keys}),onRunAgain:()=>$u(HX(Qe,f))}),!Jt&&we.default.createElement(zI,{layout:"strip",limit:AX,...t4}),we.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},we.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},we.default.createElement(Ve,{style:{marginRight:4}},"Scenarios"),_ee.map(fe=>we.default.createElement(In,{key:fe.label,selected:ee===fe.value,onClick:()=>$(fe.value)},fe.label)),we.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},we.default.createElement(In,{square:!0,mono:!0,selected:Nn==="tools",onClick:()=>Nee(Nn==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},Nn==="tools"?"[x] tools":"[ ] tools"),we.default.createElement(In,{square:!0,mono:!0,selected:B,onClick:()=>K(!B),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${B?"[x]":"[ ]"} failed only${!Ti&&Xx?` \xB7 ${Xx}`:""}`),Qe&&Qe.status!=="failed"&&(qs?we.default.createElement(In,{square:!0,mono:!0,selected:Ze==="failed-first",onClick:()=>Je(Ze==="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"},Ze==="failed-first"?"[x] failed first":"[ ] failed first"):we.default.createElement(In,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Ea&&we.default.createElement(In,{square:!0,mono:!0,selected:F,onClick:()=>se(fe=>!fe),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},F?"[x] follow":"[ ] follow"),Lh.length>1&&(Cee?we.default.createElement(gn,{onClick:()=>Q3(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):we.default.createElement(gn,{onClick:()=>Q3(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),Jt?we.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${SI}px minmax(0, 1fr)`,gap:kI,alignItems:"start"}},we.default.createElement(zI,{layout:"rail",maxHeight:_I,...t4}),e4):e4),Qe&&Qe.status!=="failed"&&we.default.createElement(gJ,{run:Qe,columns:fa,results:ho,scenarioCount:Mh,judgedBy:mt,verdict:Ie,evaluation:e,onJudgeChanged:r}),Qe&&Qe.status!=="failed"&&we.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},we.default.createElement("div",{ref:fr,tabIndex:-1,style:{display:"flex",alignItems:"baseline",gap:10,outline:"none"},"data-testid":"suite-fix-heading"},we.default.createElement(Ve,null,"What to fix"),we.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},Ti?"loading\u2026":`${Ct($t.length,"item")} \xB7 ${Ct(Math.max(_l.total-_l.passed,0),"fault")} across ${Ct(de,"scenario")}`)),Ti?we.default.createElement(hn,{style:{...of,padding:"14px 12px"}},"[ ] loading\u2026"):$t.length>0?we.default.createElement(vJ,{items:$t,columns:fa,agentName:l,onNavigate:dt,onOpenScenario:Pee,run:Qe,results:ho,evaluation:e,runNumber:V3,scenarios:f,onRerun:fe=>$u({keys:Xp(fe.scenario_keys||[],f).keys}),runnableFor:fe=>Xp(fe.scenario_keys||[],f)}):we.default.createElement(hn,{style:{...of,padding:"14px 12px"}},Ea?"[ ] scoring\u2026":"[+] nothing to fix")),we.default.createElement(tf,{evaluation:e,run:Qe,keys:Na.length?Na:null,spend:Ci(Qe),spendTotal:!0,reportPath:Z3,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var at=Z(J());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}}],SJ=[{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}}],Mu={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)"},kJ={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},jke={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function sD({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??O1,[o]),y=pc(r&&!m.includes(r)?[...m,r]:m),b=Lke(s.agent_id),h=(0,at.useMemo)(()=>r?fx(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,at.useMemo)(()=>g?fx(y,{providers:m}):b,[y,m,g,b]),x=C=>l(E=>({...E,...C})),S=C=>l(E=>{let j=!!C.trim();if(j===!!E.scenariosText.trim())return{...E,scenariosText:C};let{models:X,restore:z}=yZ(td(E.compareModels),y,{providers:m,qualify:j,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:mx(X),compareRestore:z}}),w=(C,E)=>x({criteria:E?[...s.criteria,C]:s.criteria.filter(j=>j!==C)}),A=()=>{let C=[...iD,...SJ].filter(E=>s.criteria.includes(E.key)).map(({key:E,type:j,config:X})=>({key:E,type:j,config:X}));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:td(s.compareModels),criteria:s.judgeKind==="judge_defined"?[]:A(),scenarios_text:s.scenariosText.trim()||void 0}})}),j=await E.json().catch(()=>({}));if(!E.ok)throw new Error((j.errors||[j.error]).filter(Boolean).join(", ")||`Failed to create evaluation (HTTP ${E.status})`);a?.(j.evaluation)}catch(E){c(E.message)}finally{p(!1)}},_=C=>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(Fe,{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(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),at.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>x({agent_id:C.target.value}),style:{...Mu,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(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Name"),at.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>x({name:C.target.value}),placeholder:"Response Quality",style:{...Mu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(Ve,{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=>x({sample_size:C.target.value}),style:{...Mu,width:"100%",fontFamily:V}}))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},at.default.createElement("div",null,at.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),at.default.createElement("select",{value:s.judgeKind,onChange:C=>x({judgeKind:C.target.value}),style:{...Mu,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(Ve,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),at.default.createElement(Yl,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>x({judgeModel:C}),style:{...Mu,width:"100%",fontFamily:V,fontSize:12}}),r!==void 0&&at.default.createElement("p",{id:`${f}-judge-provider`,style:kJ},$ke(r,n))),at.default.createElement("div",null,at.default.createElement(Ve,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),at.default.createElement(hx,{inputId:`${f}-compare`,describedBy:`${f}-compare-hint`,value:s.compareModels,onChange:C=>x({compareModels:C}),models:v,placeholder:"e.g. claude-haiku-4-5, qwen3:8b",style:{...Mu,width:"100%",fontFamily:V,fontSize:12}}),at.default.createElement("p",{id:`${f}-compare-hint`,style:kJ},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(Ve,{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 rd=e=>[...new Set(e)],yD=(e,t)=>{let r=e?.expectations?.[t];return Array.isArray(r)?r:r==null||r===""?[]:[r]},Sh=e=>String(e||"").replace(/_/g," "),vl=e=>e?.status==="passed",xl=e=>!!e&&e.status!=="pending",nd=e=>!!e&&["pending","running"].includes(e.status);function L0(e,t=[],r=null){if(Array.isArray(e?.models)&&e.models.length)return e.models;let n=Object.keys(e?.scores?._models||{});if(n.length)return n;let o=sZ(e);if(o.length)return o;let a=rd(t.map(s=>Pu(e,s)));if(a.length)return a;let i=r?.compare_models||[];return i.length?i:e?["agent's model"]:[]}function Pu(e,t){let n=(ef(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 xD(e,t){let r=e?.scores?._models?.[t],n=(ef(e).models||[]).find(o=>o&&typeof o=="object"&&o.label===t);return xo(t,r?.provider||n?.provider||"")}function kh(e,t=[],r=[]){let n=C0(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 AJ(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=>Pu(e,i)===t);return{passed:a.filter(vl).length,failed:a.filter(i=>xl(i)&&!vl(i)).length,total:n||a.length}}function EJ(e,t=[],r=null,n=[]){let o=L0(e,t,r),a=kh(e,o,n);return o.map(i=>{let s={label:i,short:xo(i).short};return e?.scores?._models?.[i]?.scenarios!=null||nd(e)||t.some(u=>Pu(e,u)===i)?{...s,...AJ(e,i,t,a)}:{...s,passed:null,failed:null,total:null}})}function NJ(e,t=[],r=[],n=[]){if(e?.status==="complete"&&e.samples_evaluated!=null)return{passed:e.samples_passed||0,total:e.samples_evaluated||0};let o=kh(e,r,n)*Math.max(r.length,1);return{passed:t.filter(vl).length,total:o}}function TJ(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 zke=(e,t)=>{let r=String(e||"").trim();return r.length>t?`${r.slice(0,t-1)}\u2026`:r},gD=e=>e?.diagnosis?.judge?.instruction_change;function OJ(e,t=[]){let r=e?.scores?._recommendations||[];if(Array.isArray(e?.fix_items)){let a=r.length>0||t.some(gD);if(e.fix_items.length>0||!a)return e.fix_items}let n=r.map(a=>Bke(a,t)),o=new Set;return t.forEach(a=>{let i=gD(a);if(!i||o.has(i))return;o.add(i);let s=t.filter(l=>gD(l)===i);n.push({kind:"instruction",fault:"instruction change",count:s.length,scenario_keys:rd(s.map(l=>l.scenario_key)),models:rd(s.map(l=>Pu(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 Bke(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=rd(n.flatMap(d=>d.diagnosis?.evidence?.unavailable||[]));u.length||(u=rd(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:zke(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=rd(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||rd(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 bD=e=>e?.cost_source==="estimated",PJ=e=>{let t=e?.judge_usage;return t?t.estimated??(t.source!=null&&t.source!=="reported"):!1},N2=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:bD(e)})];return t!=null&&r.push(`judge ${Pr(t,{estimated:PJ(e)})}`),r.join(" \xB7 ")},MJ=e=>{if(!bD(e))return;let t=e.cost_rate||null;return bm({inputTokens:t?.input_tokens??e.input_tokens,outputTokens:t?.output_tokens??e.output_tokens,rate:t})},Fke=(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(xl),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=>bD(u)||PJ(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 IJ({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"}},kI(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:K,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:K,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:K,fontSize:e,color:t,...r});function DJ({calls:e,empty:t,style:r}){return de.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"2px 8px",fontFamily:K,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 jJ({run:e,columns:t,results:r=[],scenarioCount:n=0,judgedBy:o,verdict:a,evaluation:i=null,onJudgeChanged:s}){let l=e?.scores?._models||{},u=Ai(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(lD,{evaluation:i,run:e,label:o,onChanged:s,testId:"suite-judge"})),t.length===0&&de.default.createElement(Rr,{style:{border:"1px solid var(--color-border-light)",borderRadius:10}},"[ ] no models scored yet"),t.length>1&&de.default.createElement(M0,{rows:u2(e,{results:r,scenarioCount:n,columns:t,labelFor:c=>Pu(e,c)}),unit:"scenario",judgedBy:o,judgeEstimated:u}),t.length>1&&de.default.createElement(sD,{plot:tZ(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}=xD(e,c),f=l[c],{passed:m,total:y}=AJ(e,c,r,n),x=Object.entries(f?.faults||{}),h=ch(f,f?.scenarios),g=f&&x.length===0?{text:"[+] no faults",color:"var(--color-success-text)"}:!f&&nd(e)?{text:"scoring\u2026"}:null;return de.default.createElement(P0,{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:Qp(f?.cost,h),estimated:i2(f,f?.scenarios),judgeCost:f?.judge_cost,judgeCalls:f?.judge_calls||0,judgeEstimated:u,unit:"scenario",badges:x.map(([v,b])=>({tone:"error",text:`${Sh(v)} \xD7${b}`})),note:g})})),a?.rationale&&de.default.createElement(Be,{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:K,fontSize:12}},a.winner),a.rationale?` \xB7 ${a.rationale}`:"")))}var Wke=(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(" "),vD={tools:10,steps:8},hD=[],Hke={},_J=new Set,T2=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(String(e)):String(e).replace(/["\\]/g,"\\$&"),qke=600,CJ=e=>typeof e=="number"?`${e}px`:e,Kke=e=>["INPUT","TEXTAREA","SELECT"].includes(e?.tagName);function Vke({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(!xl(e))return de.default.createElement("span",{style:{...Ur(12),fontWeight:600}},"\u2026");let o=vl(e),a=o?"var(--color-success)":"var(--color-error)",i=TJ(e.tool_calls,t);if(n){let s=e.fault?Sh(e.fault):e.status==="errored"?"errored":null,l=N2(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:K,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(O2,{metrics:p2(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:K,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)"}},Sh(e.fault))),de.default.createElement(DJ,{calls:i,empty:"no tools called"}),de.default.createElement(O2,{metrics:p2(e)}),N2(e)&&de.default.createElement("span",{style:{...Ur(11,"var(--color-text-secondary)"),whiteSpace:"nowrap"},title:MJ(e),"data-testid":"scenario-cell-cost"},N2(e)))}var Gke=e=>{if(!e)return null;let t=[];e.durationMs!=null&&t.push(f2(e.durationMs));let r=kI(e.inputTokens,e.outputTokens);return r!=="\u2014"&&t.push(r),t.length?t.join(" \xB7 "):null};function O2({metrics:e,testId:t="scenario-cell-metrics",title:r="time to answer \xB7 input\u2192output tokens",style:n}){let o=Gke(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 P2={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"}},Yke=(e,t)=>e===t||!!e&&!!t&&e.cost===t.cost&&e.judgeCost===t.judgeCost&&e.total===t.total&&e.estimated===t.estimated,Xke=(e,t)=>e===t||!!e&&!!t&&e.input===t.input&&e.output===t.output,Zke=(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&&Yke(e.costEntry,t.costEntry)&&Xke(e.tokens,t.tokens)&&e.timeMs===t.timeMs,Jke=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=yD(t,"tools"),w=t.enabled===!1,_=P2[o]||P2.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:K,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:vD[s]??vD.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&&yD(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(Vke,{key:E,result:r?.[E],expects:S,pending:(d||p)&&c,compact:b})),de.default.createElement(IJ,{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"}},f2(y)))},Zke);function $J({rows:e=hD,columns:t=hD,run:r=null,resultsByKey:n=Hke,runKeys:o=_J,running:a=!1,loading:i=!1,stepsByKey:s=null,currentKey:l=null,bars:u=hD,detail:c="steps",showKey:d=!0,collapsedGroups:p=_J,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=Wke(_,t.length),C=vD[_],E=k?gZ(t.length):hZ(t.length),I=ue=>o.has(ue.key)||!!n[ue.key],Q=ue=>r?i?I(ue)?"loading":"skipped":s2(n[ue.key],t,{inRun:I(ue),running:a}):"none",$=ue=>s?.[ue.key]??Q(ue),F=new Map(e.map(ue=>[ue.key,Fke(r,ue.key,n[ue.key])])),N=[...F.values()].some(ue=>ue?.estimated),O=new Map(e.map(ue=>[ue.key,kZ(n[ue.key],t)])),j=qI(n,t),T=e.some(ue=>ue.group),D=[];e.forEach(ue=>{let Ze=ue.group||"",Je=D.find(tt=>tt.name===Ze);Je||(Je={name:Ze,rows:[]},D.push(Je)),Je.rows.push(ue)});let M=ue=>(ue||T)&&p.has(ue),[q,V]=(0,de.useState)(null),L=[];D.forEach(ue=>{(ue.name||T)&&L.push(`group:${ue.name}`),M(ue.name)||ue.rows.forEach(Ze=>L.push(Ze.key))});let G=new Set(L),W=[q,m,l].find(ue=>ue!=null&&G.has(ue))??L[0]??null,ie=(0,de.useRef)(null),Me=(0,de.useRef)(null),[he,ce]=(0,de.useState)(50),[R,te]=(0,de.useState)(0),z=(0,de.useRef)(he),ee=(0,de.useRef)({});Fs(()=>{z.current=he,ee.current={onToggleRow:y,onStopFollowing:h}});let U=(0,de.useCallback)(ue=>{ie.current=ue,S&&(S.current=ue)},[S]),P=(0,de.useCallback)(ue=>ee.current.onToggleRow?.(ue),[]),Y=(0,de.useCallback)((ue,Ze)=>{V(ue);let Je=ie.current;Je&&!Je.contains(Ze.relatedTarget)&&ee.current.onStopFollowing?.()},[]),B=()=>h?.();Fs(()=>{let ue=Me.current;if(!ue)return;let Ze=()=>{let tt=ue.offsetHeight;tt&&ce(_t=>_t===tt?_t:tt)};if(Ze(),typeof ResizeObserver>"u")return;let Je=new ResizeObserver(Ze);return Je.observe(ue),()=>Je.disconnect()},[]);let se=(0,de.useCallback)(ue=>{if(!ue){te(0);return}let Ze=()=>te(ue.offsetHeight);Ze();let Je=typeof ResizeObserver>"u"?null:new ResizeObserver(Ze);Je?.observe(ue);let tt=ie.current,_t=ue.previousElementSibling;if(tt&&_t?.hasAttribute("data-scenario-key")){let Ut=_t.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]');tt.scrollTo({top:DZ({rowTop:_t.offsetTop,headerHeight:z.current,groupRowHeight:Ut?.offsetHeight??0}),behavior:"smooth"})}return()=>{Je?.disconnect(),te(0)}},[]),ne=(0,de.useRef)(null),ye=(0,de.useRef)(null),at=(0,de.useRef)(0);Fs(()=>{let ue=ie.current;if(!ue||!x||!l){ne.current=l;return}let Ze=ue.querySelector(`[data-scenario-key="${T2(l)}"]`);if(!Ze)return;let Je=IZ({rowTop:Ze.offsetTop,headerHeight:he,boxHeight:ue.clientHeight});if(Math.abs(Je-ue.scrollTop)>4){let tt=Date.now(){let Ze=ie.current;if(!Ze||!ue)return;let Je=ue.hasAttribute("data-scenario-key")?ue.closest("[data-group]")?.querySelector('[data-testid="scenario-group-row"]'):null,tt=z.current+(Je?.offsetHeight??0);ue.offsetTop-ttZe.scrollTop+Ze.clientHeight&&(Ze.scrollTop=ue.offsetTop+ue.offsetHeight-Ze.clientHeight)};return de.default.createElement("div",{ref:U,"data-testid":w,"data-detail":_,onWheel:B,onTouchMove:B,onKeyDown:ue=>{if(Kke(ue.target))return;let Ze=ie.current;if(Ze){if(ue.key==="ArrowDown"||ue.key==="ArrowUp"){let Je=[...Ze.querySelectorAll("[data-nav]")];if(!Je.length)return;let tt=Je.indexOf(ue.target);tt<0&&(tt=Je.findIndex(Ut=>Ut.hasAttribute("data-scenario-key")&&Ut.parentElement?.contains(ue.target)));let _t=tt<0?Je[0]:Je[Math.min(Math.max(tt+(ue.key==="ArrowDown"?1:-1),0),Je.length-1)];ue.preventDefault(),h?.(),_t&&_t!==ue.target&&(_t.focus({preventScroll:!0}),it(_t));return}ue.key==="Escape"&&m&&(y?.(m),Ze.querySelector(`[data-scenario-key="${T2(m)}"]`)?.focus({preventScroll:!0}))}},style:{border:"1px solid var(--color-border-light)",borderRadius:10,overflow:"auto",position:"relative",scrollbarGutter:"stable",maxHeight:v?R?`calc(${CJ(v)} + ${R}px)`:CJ(v):void 0}},de.default.createElement("div",{style:{minWidth:E}},de.default.createElement("div",{ref:Me,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:Ze,provider:Je}=xD(r,ue),tt=u.find(_t=>_t.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:K,fontSize:11,fontWeight:600,color:"var(--color-text-primary)"}},Ze),de.default.createElement("span",{style:Ur(10)},Je||" "),tt&&tt.passed!=null&&tt.total!=null&&de.default.createElement(qp,{passed:tt.passed,total:tt.total,height:4,valueWidth:48,style:{marginTop:3}}),de.default.createElement(O2,{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 Ze=ue.name,Je=M(Ze),tt=`group:${Ze}`,_t=ue.rows.filter(I),Ut=P2[bZ(ue.rows.map($))]||P2.none,tn=qI(n,t,ue.rows.map(wt=>wt.key)),Po=t.map(wt=>{let xe=tn[wt];if(!_t.length)return{label:wt,text:"not in this run",color:"var(--color-text-muted)",weight:400,metrics:xe};if(i)return{label:wt,text:"loading\u2026",color:"var(--color-text-muted)",weight:400,metrics:xe};let rt=_t.filter(Mo=>xl(n[Mo.key]?.[wt]));if(a&&!rt.length)return{label:wt,text:"queued",color:"var(--color-text-muted)",weight:400,metrics:xe};let ht=rt.filter(Mo=>vl(n[Mo.key][wt])).length,Xt=_t.length,ro=Xt&&ht===Xt?"var(--color-success-text)":ht===0?"var(--color-error-text)":"var(--color-text-cell)";return{label:wt,text:`${mo(ht,Xt)} passed`,color:ro,weight:600,metrics:xe}}),ys=Uke(ue.rows.map(wt=>F.get(wt.key))),Ti=_Z(ue.rows.map(wt=>O.get(wt.key)));return de.default.createElement("div",{key:Ze||"__ungrouped","data-group":Ze},(Ze||T)&&de.default.createElement("div",{"data-testid":"scenario-group-row","data-group":Ze,"data-collapsed":Je?"true":"false","data-nav":tt,role:"button","aria-expanded":!Je,tabIndex:W===tt?0:-1,onClick:()=>f?.(Ze),onKeyDown:wt=>{(wt.key==="Enter"||wt.key===" "||wt.key==="ArrowLeft"&&!Je||wt.key==="ArrowRight"&&Je)&&(wt.preventDefault(),f?.(Ze))},onFocus:wt=>Y(tt,wt),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:he,zIndex:1}},de.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0}},de.default.createElement(Za,{kind:"chevron",open:!Je}),de.default.createElement("span",{"data-testid":"scenario-group-step",title:Ut.title,style:{...Ur(11,Ut.color),fontWeight:700,flexShrink:0}},Ut.text),de.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},Ze||"ungrouped"),k&&de.default.createElement("span",{style:{...Ur(11),whiteSpace:"nowrap"}},`\xB7 ${At(ue.rows.length,"scenario")}`)),!k&&de.default.createElement("span",{style:Ur(11)},At(ue.rows.length,"scenario")),Po.map(wt=>de.default.createElement("span",{key:wt.label,style:{display:"flex",flexDirection:"column",gap:1,minWidth:0}},de.default.createElement("span",{style:{fontFamily:K,fontSize:11,fontWeight:wt.weight,color:wt.color,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},wt.text),de.default.createElement(O2,{metrics:wt.metrics,testId:"scenario-group-metrics",title:"the group's answers' time added up, and their input\u2192output tokens, on this model"}))),de.default.createElement(IJ,{entry:ys,compact:k,testId:"scenario-group-cost",tokens:Ti}),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"}},f2(CZ(ue.rows,n,t)))),!Je&&ue.rows.map(wt=>{let xe=m===wt.key;return de.default.createElement("div",{key:wt.key},de.default.createElement(Jke,{scenario:wt,results:n[wt.key],columns:t,step:$(wt),current:wt.key===l,open:xe,detail:_,showKey:d,grid:A,inSelection:I(wt),running:a,loading:i,costEntry:F.get(wt.key)??null,tokens:O.get(wt.key)??null,timeMs:HI(n[wt.key],t),tabIndex:W===wt.key?0:-1,onToggle:P,onFocus:Y}),xe&&de.default.createElement("div",{ref:se},b?.(wt)))}))}),e.length===0&&de.default.createElement(Rr,{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"},Rs)))}function Qke(e){let t=[];e.duration_ms!=null&&t.push(jn(e.duration_ms)),(e.input_tokens!=null||e.output_tokens!=null)&&t.push(`${Nn((e.input_tokens||0)+(e.output_tokens||0))} tokens`);let r=N2(e);return r&&t.push(r),t.join(" \xB7 ")}function Rke({label:e,run:t,result:r,expects:n,running:o}){let{short:a}=xD(t,e),i=de.default.createElement("span",{style:{fontFamily:K,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||!xl(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=vl(r)?"success":"error",c=TJ(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=Qke(r);return s(de.default.createElement(de.default.Fragment,null,de.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap",fontFamily:K,fontSize:11}},de.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"tools"),de.default.createElement(DJ,{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:K,fontWeight:700}},`[!] ${Sh(f)}`),m?` \u2014 ${m}`:"",p.suggested_tool?.name&&de.default.createElement("div",{style:{marginTop:4,fontFamily:K,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},Sh(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:MJ(r)},x),r.agent_run_id&&de.default.createElement(Rc,{kind:"scenario_result",id:r.id,title:"Replay this scenario's run",testId:"scenario-result-replay",style:x?void 0:{marginLeft:"auto"}})))}function LJ({scenario:e,run:t,columns:r,resultsByKey:n,running:o,inRun:a=!0,onRerun:i,onToggleEnabled:s,canMutate:l=!0}){let u=yD(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:K,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:K,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(Rke,{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 zJ({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):tf(w.scenario_keys||[],u),[f,m]=(0,de.useState)("all"),y=t.length>1,x=y?f:"all",h=y?nZ(e,i,w=>Pu(a,w)):e,g=LI(h,x),v=y?oZ(h,t):{},b=w=>SJ({item:w,evaluation:s,run:a,runNumber:l,results:i,scenarios:u,agentName:r,dashboardUrl:b2(),labelFor:_=>Pu(a,_)}),S=w=>{let _=At((w.scenario_keys||[]).length,"scenario");if(w.kind==="instruction")return`${(w.scenario_keys||[]).join(", ")} \xB7 judge suggestion`;let k=rd(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=>xo(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(Dn,{square:!0,mono:!0,selected:x==="all",onClick:()=>m("all"),testId:"fix-filter-all"},`all models ${e.length}`),t.map(w=>de.default.createElement(Dn,{key:w,square:!0,mono:!0,selected:x===w,onClick:()=>m(w),title:`Only what ${w} needs fixed`,testId:"fix-filter-model"},`${xo(w).short} ${v[w]??0}`))),g.length===0&&de.default.createElement(Rr,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px"}},`[+] nothing to fix for ${xo(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(Za,{kind:k?"info":"fault"}),de.default.createElement(Ce,{tone:A},`${Sh(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:K,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(fe,{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 ${At(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(I0,{build:()=>b(w),style:{marginLeft:"auto"}}),de.default.createElement(dD,{item:w,evaluation:s,run:a})))})))}var BJ=e=>{let{results:t,fix_items:r,...n}=e;return n},e_e={keys:[],dropped:[]},wD={padding:"6px 10px",borderRadius:8,fontSize:12,fontFamily:K,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"},df={border:"1px solid var(--color-border-light)",borderRadius:10},t_e=(e,t)=>e.size===t.size&&[...e].every(r=>t.has(r)),FJ=()=>typeof localStorage<"u"?localStorage:null,UJ=()=>typeof document<"u"&&document.visibilityState==="hidden";function SD({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??H1,[t]),N=dc(F),O=(0,Se.useMemo)(()=>A0(N,{providers:F}),[N,F]),[j,T]=(0,Se.useState)(null),[D,M]=(0,Se.useState)(!1),[q,V]=(0,Se.useState)([]),[L,G]=(0,Se.useState)(""),[W,ie]=(0,Se.useState)(!1),[Me,he]=(0,Se.useState)(""),[ce,R]=(0,Se.useState)(null),[te,z]=(0,Se.useState)(null),[ee,U]=(0,Se.useState)(!1),[P,Y]=(0,Se.useState)(null),[B,se]=(0,Se.useState)(!0),[ne,ye]=(0,Se.useState)(()=>{let ge=e.scenarios||[],Re=(a==null||a===e.latest_run?.id)&&e.latest_run||null;return WI(ge,new Set(C0(Re,ge)))}),[at,it]=(0,Se.useState)(()=>new Map),[pe,ue]=(0,Se.useState)(()=>yZ(FJ())),[Ze,Je]=(0,Se.useState)("suite"),tt=(0,Se.useRef)(null),_t=(0,Se.useRef)(null),Ut=(0,Se.useRef)(null),tn=(0,Se.useRef)(new Map),Po=(0,Se.useRef)(new Map),ys=(0,Se.useRef)({}),Ti=(0,Se.useRef)(_),wt=(0,Se.useRef)(S),xe=(0,Se.useRef)(null),rt=N0(tt),ht=rt-cZ,Xt=rt===0||ht>=dZ,ro=rt===0?0:ht-(Xt?BI+FI:0),Mo=pe??"steps",Io=ro===0||ro>=mZ,Oi=(0,Se.useCallback)(async()=>{let ge=await fetch(`/api/evaluations/${s}/scenarios`);if(!ge.ok)return;let Re=await ge.json();m(Re.scenarios||[]),x(Re.groups||[])},[s]),no=(0,Se.useCallback)(async()=>{try{let ge=await fetch(`/api/evaluations/${s}`);if(!ge.ok)return p(`Could not load this suite (HTTP ${ge.status})`),null;let Ct=(await ge.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(ge){return p(`Could not load this suite: ${ge.message}`),null}finally{c(!0)}},[s]);Fs(()=>{Ti.current=_,wt.current=S});let oo=(0,Se.useCallback)(ge=>{if(!ge)return Promise.resolve(null);if(tn.current.has(ge))return tn.current.get(ge);let Re=(async()=>{try{let Ct=await fetch(`/api/evaluations/${s}/runs/${ge}`);if(!Ct.ok)return C(Ks=>({...Ks,[ge]:`HTTP ${Ct.status}`})),null;let lr=(await Ct.json()).run;if(!lr)return C(Ks=>({...Ks,[ge]:"no run in the response"})),null;C(Ks=>{if(!(ge in Ks))return Ks;let{[ge]:xs,...bd}=Ks;return bd});let jo=Ti.current[lr.id],{results:_f,changed:$u}=OZ(jo?.results,lr.results);if(!(!!jo&&!$u&&jo.status===lr.status&&jo.completed_at===lr.completed_at&&(jo.fix_items?.length??0)===(lr.fix_items?.length??0))){let Ks=BJ(lr);k(xs=>({...xs,[lr.id]:{...lr,results:_f}})),g(xs=>xs.some(bd=>bd.id===lr.id)?xs.map(bd=>bd.id===lr.id?{...bd,...Ks}:bd):xs),I(xs=>xs&&xs.id===lr.id?{...xs,...Ks}:xs)}return lr}catch(Ct){return C(rr=>({...rr,[ge]:Ct.message})),null}finally{tn.current.delete(ge)}})();return tn.current.set(ge,Re),Re},[s]),kl=ge=>{I(BJ(ge)),w(ge.id),Y(null)};(0,Se.useEffect)(()=>{let ge=!1;return(async()=>{let Re=await no();if(ge)return;let Ct=Re?.runs?.[0]?.id??null,rr=!!(a&&Re?.runs?.some($u=>$u.id===a));if(a&&!rr){let $u=await oo(a);if(ge)return;if($u){kl($u);return}}let lr=rr?a:null,jo=wt.current,_f=lr||(jo&&Re?.runs?.some($u=>$u.id===jo)?jo:Ct);w(_f),_f&&oo(_f)})(),()=>{ge=!0}},[no,oo]);let cd=e.latest_run?.id??null;(0,Se.useEffect)(()=>{!cd||h.some(ge=>ge.id===cd)||no()},[cd,h,no]);let _l=_[S]||h.find(ge=>ge.id===S)||(E?.id===S?E:null),ao=h[0]||null,io=nd(_l)?_l.id:nd(ao)?ao.id:null;(0,Se.useEffect)(()=>{if(!io)return;let ge=!1,Re=()=>TZ(Ti.current[io]?.results?.length??0),Ct=lr=>{clearTimeout(xe.current),xe.current=setTimeout(async()=>{if(ge||UJ())return;let jo=null;try{jo=await oo(io)}catch{jo=null}if(!ge){if(jo&&!nd(jo)){await no(),r?.();return}Ct(Re())}},lr)},rr=()=>{document.visibilityState==="visible"&&Ct(0)};return UJ()||Ct(Re()),typeof document<"u"&&document.addEventListener("visibilitychange",rr),()=>{ge=!0,clearTimeout(xe.current),typeof document<"u"&&document.removeEventListener("visibilitychange",rr)}},[io,oo,no,r]);let dd=(0,Se.useCallback)(async()=>{try{let ge=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!ge.ok)return;let Re=await ge.json(),Ct=c2(Re.sandboxes);V(Ct),G(rr=>d2(rr,Ct))}catch{}},[]);(0,Se.useEffect)(()=>{dd()},[dd]);let Lh=ed(Q),pd=async ge=>{M(!0),T(null);try{let Re=await fetch(`/api/evaluations/${s}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(iZ(ge,Lh,L))}),Ct=await Re.json().catch(()=>({}));if(!Re.ok)throw Ct.code==="sandbox_refused"&&dd(),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),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)}},Cl=ge=>[ge,ao?.id,S].slice(0,fZ),zh=ge=>{w(ge),Y(null),k(Re=>VI(Re,Cl(ge))),_[ge]||oo(ge)},ab=ge=>{zh(ge.id),i?.(ge.id)};(0,Se.useEffect)(()=>{if(!a||a===S)return;if(h.some(Re=>Re.id===a)||E?.id===a){zh(a);return}if(!u)return;let ge=!1;return(async()=>{let Re=await oo(a);ge||!Re||(k(Ct=>VI(Ct,Cl(Re.id))),kl(Re))})(),()=>{ge=!0}},[a]);let ib=async ge=>{ge.id&&(await fetch(`/api/evaluations/${s}/scenarios/${ge.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenario:{enabled:ge.enabled===!1}})}),await Oi())},mA=async()=>{R(null);let ge=await fetch(`/api/evaluations/${s}/scenarios`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarios_text:Me})}),Re=await ge.json().catch(()=>({}));if(!ge.ok){R((Re.errors||[Re.error]).filter(Boolean).join(", ")||"Could not save scenarios");return}m(Re.scenarios||[]),x(Re.groups||[]),ie(!1),r?.()},Qe=_l,Ta=!!Qe&&!Array.isArray(Qe.results),Bh=Qe?A[Qe.id]:null,so=(0,Se.useMemo)(()=>(Qe?.results||[]).filter(ge=>ge&&ge.scenario_key),[Qe]),Fh=L0(Qe,so,e).join("\0"),ya=(0,Se.useMemo)(()=>Fh?Fh.split("\0"):[],[Fh]),Oa=(0,Se.useMemo)(()=>PZ(so,ge=>Pu(Qe,ge),ys.current),[so,Qe]);Fs(()=>{ys.current=Oa});let Sf=(0,Se.useMemo)(()=>new Set(C0(Qe,f)),[Qe,f]),Pa=nd(Qe),Uh=kh(Qe,ya,f),fd=NJ(Qe,so,ya,f),md=(0,Se.useCallback)(ge=>Sf.has(ge.key)||!!Oa[ge.key],[Sf,Oa]),lo=(0,Se.useMemo)(()=>FX(f,Oa,Po.current),[f,Oa]),Al=(0,Se.useMemo)(()=>{let ge={};return lo.forEach(Re=>{let Ct=md(Re);ge[Re.key]=Ta?Ct?"loading":"skipped":Qe?s2(Oa[Re.key],ya,{inRun:Ct,running:Pa}):"none"}),ge},[lo,md,Oa,ya,Qe,Ta,Pa]),sb=(0,Se.useCallback)(ge=>Al[ge.key],[Al]),Wh=(0,Se.useMemo)(()=>Pa?xZ(lo.map(ge=>({key:ge.key,step:Al[ge.key]}))):null,[Pa,lo,Al]),gd=(0,Se.useCallback)(ge=>ya.some(Re=>{let Ct=Oa[ge.key]?.[Re];return xl(Ct)&&!vl(Ct)}),[ya,Oa]),lb=(0,Se.useMemo)(()=>lo.filter(gd).length,[lo,gd]),hd=!!Qe&&Qe.status==="complete"&&!Ta,Hh=(0,Se.useMemo)(()=>wZ(lo.filter(ge=>!te||(ge.group||"")===te).filter(ge=>!ee||gd(ge)),sb,hd?Ze:"suite"),[lo,te,ee,gd,sb,hd,Ze]),gA=new Set(lo.filter(md).map(ge=>ge.group).filter(Boolean)).size,yd=so.filter(xl).length,ub=so.filter(ge=>xl(ge)&&!vl(ge)).length,hA=Uh*Math.max(ya.length,1),qh=new Set(so.filter(ge=>xl(ge)&&!vl(ge)).map(ge=>ge.scenario_key)).size,kf=Qe?.scores?._verdict||null,El=Object.prototype.hasOwnProperty.call(Qe?.scores||{},"_judge_label")?Qe.scores._judge_label||"rules":kf?.judge&&kf.judge!=="pass rate"?kf.judge:e.judge_model||"rules",vd=(0,Se.useMemo)(()=>Qe?OJ(Qe,so):[],[Qe,so]),Kh=(0,Se.useMemo)(()=>Ta?e_e:lZ(so,f),[Ta,so,f]),Vh=Object.keys(Qe?.scores||{}).filter(ge=>!ge.startsWith("_")),ju=(0,Se.useCallback)(ge=>EJ(ge,ge.id===Qe?.id?so:(_[ge.id]?.results||[]).filter(Re=>Re&&Re.scenario_key),e,f),[Qe,so,_,e,f]),cb=(0,Se.useCallback)((ge,Re,Ct)=>{if(!Re||Re.status!=="complete"||ge.status!=="complete")return w0(ge,Re,{olderNumber:Ct});let rr=L0(ge,ge.id===Qe?.id?so:[],e),lr=L0(Re,[],e),jo=kh(Re,lr,f)===kh(ge,rr,f)&&lr.length===rr.length;return w0(ge,Re,{olderNumber:Ct,comparable:jo})},[Qe,so,e,f]),le=(0,Se.useMemo)(()=>y2({runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,previousRun:e.previous_run,barsFor:ju,deltaFor:cb}),[h,v,e,l,Qe?.id,ju,cb]),Ie=le.find(ge=>ge.run.id===Qe?.id)||null,st=Ie?.number??(Number.isFinite(Qe?.number)?Qe.number:null),$t=Ie?.bars??(Qe?ju(Qe):[]),wn=Rp(h,v),ti=!!Qe&&ao?.id===Qe.id,Do=nd(ao)&&ao.id!==Qe?.id?ao:null,Ma=u||f.length>0,vs=Ma?f.length:e.scenario_count??0,xd=Ma?f.filter(ge=>ge.enabled!==!1&&(!te||(ge.group||"")===te)).length:vs,Uee=`Run ${At(xd,"scenario")}${Lh.length?` \xD7 ${At(Lh.length,"model")}`:""}`,Wee=`@${l} \xB7 ${At(vs,"scenario")}${y.length?` in ${At(y.length,"group")}`:""} \xB7 ${d?"not loaded":u?h.length?At(wn,"run"):"no runs yet":"loading\u2026"}`,dj=Qe&&Qe.status==="complete"?`/evaluations/${s}/runs/${Qe.id}/report`:null,Hee=[...new Set([...y,...lo.map(ge=>ge.group).filter(Boolean)])],qee=[{label:`All ${lo.length||vs}`,value:null}].concat(Hee.map(ge=>({label:Ma?`${ge} ${lo.filter(Re=>Re.group===ge).length}`:ge,value:ge}))),Gh=(0,Se.useMemo)(()=>{let ge=[...new Set(lo.map(Re=>Re.group||""))];return ge.some(Boolean)?ge:[]},[lo]),Kee=Gh.some(ge=>!ne.has(ge)),yA=lo.length===0,Vee=ee?"[+] nothing failed in this group":"[ ] no scenarios";(0,Se.useEffect)(()=>{se(!0),it(new Map),Je("suite"),Y(null)},[Qe?.id]),(0,Se.useEffect)(()=>{ye(WI(f,Sf))},[Qe?.id,u]);let pj=(0,Se.useRef)(Qe?.id??null);(0,Se.useEffect)(()=>{if(pj.current!==(Qe?.id??null)){pj.current=Qe?.id??null;return}!Pa||!B||ye(ge=>{let Re=new Set(ge);return Gh.forEach(Ct=>{if(at.has(Ct))return;let rr=lo.filter(lr=>(lr.group||"")===Ct&&md(lr));rr.length&&(rr.every(lr=>Al[lr.key]==="passed")&&Re.add(Ct),rr.some(lr=>lr.key===Wh)&&Re.delete(Ct))}),t_e(Re,ge)?ge:Re})},[Qe?.id,Wh,yd,B,Pa]);let Gee=ge=>{let Re=ne.has(ge);ye(Ct=>{let rr=new Set(Ct);return Re?rr.delete(ge):rr.add(ge),rr}),it(Ct=>new Map(Ct).set(ge,Re))},fj=ge=>{ye(new Set(ge?[]:Gh)),it(new Map(Gh.map(Re=>[Re,ge])))},Yee=ge=>{ue(ge),vZ(FJ(),ge)},Xee=(0,Se.useCallback)(ge=>{Y(Re=>Re===ge?null:ge),se(!1)},[]),Zee=(0,Se.useCallback)(()=>se(!1),[]),Jee=(0,Se.useCallback)(ge=>{let Re=Array.isArray(ge)?ge[0]:ge;if(!Re)return;let Ct=lo.find(rr=>rr.key===Re)?.group||"";z(null),U(!1),ye(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=_t.current;rr&&(rr.scrollIntoView({behavior:"smooth",block:"start"}),rr.querySelector(`[data-scenario-key="${T2(Re)}"]`)?.focus({preventScroll:!0}))})},[lo]),Qee=()=>{Ut.current?.scrollIntoView({behavior:"smooth",block:"start"}),Ut.current?.focus({preventScroll:!0})},Ree=()=>{Qe&&(C(ge=>{let{[Qe.id]:Re,...Ct}=ge;return Ct}),oo(Qe.id))},mj=()=>{ao&&ab(ao)},gj=yA&&d?Se.default.createElement(Rr,{style:df},"[!] suite not loaded"):yA&&!u?Se.default.createElement(Rr,{style:df},"loading\u2026"):yA?Se.default.createElement(Rr,{style:df},"No scenarios yet \u2014 paste some with \u201CEdit scenarios\u201D."):S!=null&&!Qe?Se.default.createElement(Rr,{style:df},"loading\u2026"):Bh&&!Array.isArray(Qe.results)?Se.default.createElement(Rr,{style:df},`[!] results not loaded (${Bh}) \xB7 `,Se.default.createElement(vn,{onClick:Ree,title:"Fetch this run's results again",testId:"suite-detail-retry"},"retry")):Se.default.createElement($J,{rows:Hh,columns:Qe?ya:[],run:Qe,resultsByKey:Oa,runKeys:Sf,running:Pa,loading:Ta,stepsByKey:Al,currentKey:Wh,bars:$t,detail:Mo,showKey:Io,collapsedGroups:ne,onToggleGroup:Gee,openKey:P,onToggleRow:Xee,following:B,onStopFollowing:Zee,emptyLabel:Vee,maxHeight:UI,boxRef:_t,renderDetail:ge=>Se.default.createElement(LJ,{scenario:ge,run:Qe,columns:Qe?ya:[],resultsByKey:Oa,running:Pa,inRun:md(ge),canMutate:!ge.orphan,onRerun:Re=>pd({keys:[Re.key]}),onToggleEnabled:ib})}),hj={rows:le,runs:h,runCount:v,evaluation:e,agentName:l,selectedId:Qe?.id??null,onOpen:ab,noteFor:ge=>zI(ge,f),linkedRun:E,linkedBars:E&&ju(E)};return Se.default.createElement("div",{ref:tt,style:{padding:16,display:"flex",flexDirection:"column",gap:16},"data-testid":"scenario-suite-panel","data-layout":Xt?"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)"}},Wee),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Se.default.createElement(fe,{size:"sm",onClick:()=>{he(JZ(f)),R(null),ie(!W)}},W?"Cancel":"Edit scenarios"),Se.default.createElement(T0,{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:{...wD,minWidth:250,maxWidth:420},testId:"suite-models-picker"}),q.length>0&&Se.default.createElement("select",{value:L,onChange:ge=>G(ge.target.value),style:{...wD,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"),q.map(ge=>Se.default.createElement("option",{key:ge.value,value:ge.value},`Run against sandbox ${ge.label}`))),Se.default.createElement(fe,{variant:"primary",size:"sm",disabled:D||!u||xd===0,onClick:()=>pd(te?{group:te}:{}),testId:"suite-run-button"},D?"Starting\u2026":Uee))),(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:Me,onChange:ge=>he(ge.target.value),rows:Math.min(Math.max(f.length+4,6),24),style:{...wD,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:K}},"# Heading")," starts a group; ",Se.default.createElement("code",{style:{fontFamily:K}},"| tools: a, b"),", ",Se.default.createElement("code",{style:{fontFamily:K}},"| contains: x"),", ",Se.default.createElement("code",{style:{fontFamily:K}},"| not_contains: y")," set expectations. Keep a scenario's ",Se.default.createElement("code",{style:{fontFamily:K}},"key")," to keep its history."),Se.default.createElement(fe,{variant:"primary",size:"sm",onClick:mA},"Save scenarios")),ce&&Se.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},ce)),Qe&&Se.default.createElement(nD,{run:Qe,runNumber:st,latestNumber:wn,isLatest:ti,runningElsewhere:Do,agentName:l,scenarioCount:Uh,groupCount:gA,columns:ya,judgedBy:El,bars:$t,delta:Ie?.delta??null,version:Ie?.version??null,totals:fd,settledCount:yd,settledFailed:ub,expectedResults:hA,running:Pa,loading:Ta,spend:Ai(Qe),fixSummary:{items:vd.length,faults:Math.max(fd.total-fd.passed,0),scenarios:qh},selectionLabel:zI(Qe,f),sandboxLabel:_0(Qe),reportPath:dj,rerun:Kh,onSelectLatest:mj,onWatchLatest:mj,onJumpToFix:Qee,onRerunFailed:()=>pd({keys:Kh.keys}),onRunAgain:()=>pd(uZ(Qe,f))}),!Xt&&Se.default.createElement(tD,{layout:"strip",limit:YX,...hj}),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"),qee.map(ge=>Se.default.createElement(Dn,{key:ge.label,selected:te===ge.value,onClick:()=>z(ge.value)},ge.label)),Se.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Se.default.createElement(Dn,{square:!0,mono:!0,selected:Mo==="tools",onClick:()=>Yee(Mo==="tools"?"steps":"tools"),style:{background:"transparent"},title:"Show the tools each replay called and what each cell cost",testId:"suite-detail-toggle"},Mo==="tools"?"[x] tools":"[ ] tools"),Se.default.createElement(Dn,{square:!0,mono:!0,selected:ee,onClick:()=>U(!ee),style:{background:"transparent"},title:"Hide scenarios that passed on every model",testId:"suite-failed-only"},`${ee?"[x]":"[ ]"} failed only${!Ta&&lb?` \xB7 ${lb}`:""}`),Qe&&Qe.status!=="failed"&&(hd?Se.default.createElement(Dn,{square:!0,mono:!0,selected:Ze==="failed-first",onClick:()=>Je(Ze==="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"},Ze==="failed-first"?"[x] failed first":"[ ] failed first"):Se.default.createElement(Dn,{square:!0,mono:!0,disabled:!0,style:{background:"transparent"},title:"applies once the run completes",testId:"suite-order-toggle"},"[ ] failed first")),Pa&&Se.default.createElement(Dn,{square:!0,mono:!0,selected:B,onClick:()=>se(ge=>!ge),style:{background:"transparent"},title:"Keep the step being replayed in view as the run goes",testId:"suite-follow"},B?"[x] follow":"[ ] follow"),Gh.length>1&&(Kee?Se.default.createElement(vn,{onClick:()=>fj(!1),title:"Fold every group",testId:"suite-collapse-all"},"collapse all"):Se.default.createElement(vn,{onClick:()=>fj(!0),title:"Unfold every group",testId:"suite-collapse-all"},"expand all")))),Xt?Se.default.createElement("div",{style:{display:"grid",gridTemplateColumns:`${BI}px minmax(0, 1fr)`,gap:FI,alignItems:"start"}},Se.default.createElement(tD,{layout:"rail",maxHeight:UI,...hj}),gj):gj),Qe&&Qe.status!=="failed"&&Se.default.createElement(jJ,{run:Qe,columns:ya,results:so,scenarioCount:Uh,judgedBy:El,verdict:kf,evaluation:e,onJudgeChanged:r}),Qe&&Qe.status!=="failed"&&Se.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Se.default.createElement("div",{ref:Ut,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:K,fontSize:11,color:"var(--color-text-muted)"}},Ta?"loading\u2026":`${At(vd.length,"item")} \xB7 ${At(Math.max(fd.total-fd.passed,0),"fault")} across ${At(qh,"scenario")}`)),Ta?Se.default.createElement(Rr,{style:{...df,padding:"14px 12px"}},"[ ] loading\u2026"):vd.length>0?Se.default.createElement(zJ,{items:vd,columns:ya,agentName:l,onNavigate:lt,onOpenScenario:Jee,run:Qe,results:so,evaluation:e,runNumber:st,scenarios:f,onRerun:ge=>pd({keys:tf(ge.scenario_keys||[],f).keys}),runnableFor:ge=>tf(ge.scenario_keys||[],f)}):Se.default.createElement(Rr,{style:{...df,padding:"14px 12px"}},Pa?"[ ] scoring\u2026":"[+] nothing to fix")),Se.default.createElement(lf,{evaluation:e,run:Qe,keys:Vh.length?Vh:null,spend:Ai(Qe),spendTotal:!0,reportPath:dj,onDelete:n,deleting:o,deleteLabel:"Delete suite"}))}var ot=Z(J());var kD=[{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}}],WJ=[{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}}],Mu={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)"},HJ={margin:"6px 0 0",fontSize:12,color:"var(--color-text-muted)"},r_e={openai:"OpenAI",anthropic:"Anthropic",ollama:"Ollama",openrouter:"OpenRouter"};function _D({agents:e,agentId:t,judgeProvider:r,judgeProviderError:n=!1,modelProviders:o,onCreated:a,onCancel:i}){let[s,l]=(0,ot.useState)({agent_id:t?String(t):"",name:"",sample_size:20,criteria:kD.map(C=>C.key),containsPattern:"",llmJudgePrompt:"",judgeKind:"manual",judgeModel:"",compareModels:"",scenariosText:"",compareRestore:new Map}),[u,c]=(0,ot.useState)(null),[d,p]=(0,ot.useState)(!1),f=(0,ot.useId)(),m=(0,ot.useMemo)(()=>o===void 0?[]:o??H1,[o]),y=dc(r&&!m.includes(r)?[...m,r]:m),x=o_e(s.agent_id),h=(0,ot.useMemo)(()=>r?A0(y,{providers:[r],qualify:!1}):[],[y,r]),g=!!s.scenariosText.trim(),v=(0,ot.useMemo)(()=>g?A0(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:$}=LZ(ed(E.compareModels),y,{providers:m,qualify:I,restore:E.compareRestore});return{...E,scenariosText:C,compareModels:E0(Q),compareRestore:$}}),w=(C,E)=>b({criteria:E?[...s.criteria,C]:s.criteria.filter(I=>I!==C)}),_=()=>{let C=[...kD,...WJ].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:ed(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=>ot.default.createElement("label",{key:C.key,style:{display:"flex",alignItems:"center",gap:8,fontSize:13,color:"var(--color-text-primary)"}},ot.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 ot.default.createElement(Be,{testId:"new-evaluation-form"},ot.default.createElement("form",{onSubmit:k,style:{display:"flex",flexDirection:"column",gap:16}},ot.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"Agent"),ot.default.createElement("select",{required:!0,disabled:!!t,value:s.agent_id,onChange:C=>b({agent_id:C.target.value}),style:{...Mu,width:"100%",opacity:t?.7:1}},!t&&ot.default.createElement("option",{value:""},"Select agent\u2026"),e.map(C=>ot.default.createElement("option",{key:C.id,value:C.id},C.name)))),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"Name"),ot.default.createElement("input",{required:!0,type:"text",value:s.name,onChange:C=>b({name:C.target.value}),placeholder:"Response Quality",style:{...Mu,width:"100%"}})),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"Sample size"),ot.default.createElement("input",{type:"number",min:"1",max:"100",value:s.sample_size,onChange:C=>b({sample_size:C.target.value}),style:{...Mu,width:"100%",fontFamily:K}}))),ot.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"KPI definition"),ot.default.createElement("select",{value:s.judgeKind,onChange:C=>b({judgeKind:C.target.value}),style:{...Mu,width:"100%"}},ot.default.createElement("option",{value:"manual"},"Manual criteria"),ot.default.createElement("option",{value:"judge_defined"},"Judge defines KPIs from agent goals"))),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",htmlFor:`${f}-judge`,style:{display:"block",marginBottom:6}},"Judge model (optional)"),ot.default.createElement(Yl,{id:`${f}-judge`,"aria-describedby":r===void 0?void 0:`${f}-judge-provider`,value:s.judgeModel,models:h,onChange:C=>b({judgeModel:C}),style:{...Mu,width:"100%",fontFamily:K,fontSize:12}}),r!==void 0&&ot.default.createElement("p",{id:`${f}-judge-provider`,style:HJ},n_e(r,n))),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",htmlFor:`${f}-compare`,style:{display:"block",marginBottom:6}},"Compare models (optional)"),ot.default.createElement(T0,{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:{...Mu,width:"100%",fontFamily:K,fontSize:12}}),ot.default.createElement("p",{id:`${f}-compare-hint`,style:HJ},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."))),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"Scenarios (optional) \u2014 paste user messages to replay, one per line"),ot.default.createElement("textarea",{value:s.scenariosText,onChange:C=>S(C.target.value),rows:s.scenariosText?8:3,placeholder:`# Open tickets Which open tickets mention a refund? | tools: find_tickets # Change history -Who changed the shipping policy last week?`,style:{...Mu,width:"100%",fontFamily:V,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:V}},"# Heading")," lines group related tasks so they can be run together; ",at.default.createElement("code",{style:{fontFamily:V}},"| 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(Ve,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},iD.map(_))),at.default.createElement("div",null,at.default.createElement(Ve,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),at.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},SJ.map(_))),at.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},at.default.createElement("div",null,at.default.createElement(Ve,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),at.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>x({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Mu,width:"100%"}})),at.default.createElement("div",null,at.default.createElement(Ve,{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=>x({llmJudgePrompt:C.target.value}),placeholder:"e.g. Is the answer helpful and accurate?",style:{...Mu,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(ge,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&at.default.createElement(ge,{onClick:i},"Cancel"))))}function $ke(e,t){return e?`The judge runs on ${jke[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 Lke(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 Ce=Z(J());var zke={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:V,fontSize:12,color:"var(--color-info)"},go=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:V,fontSize:e,color:t,...r});function Bke({stats:e}){if(!e)return Ce.default.createElement("span",{style:go()},"\u2014");if(e.skipped)return Ce.default.createElement("div",null,Ce.default.createElement("span",{style:go(12,"var(--color-text-cell)",{fontWeight:700})},"[-] skipped"),Ce.default.createElement("div",{style:{...go(),marginTop:2,textWrap:"pretty"},title:e.reason},ox(e.reason,90)));let t=Number(e.score),r=po[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${lo(e.passed,e.total)} passed`),e.total>1&&e.min!=null&&n.push(`min ${ea(e.min)} \xB7 max ${ea(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 ${Dn(o.avg_duration_ms)}`)}return Ce.default.createElement("div",null,Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6}},Ce.default.createElement("span",{style:go(12,r,{fontWeight:700})},t>=.7?"[+]":"[!]"," ",ea(t)),e.source==="telemetry"&&Ce.default.createElement("span",{"data-testid":"score-source-telemetry",title:"Aggregate over the agent's telemetry traces",style:go(10,"var(--color-text-muted)",{textTransform:"uppercase",letterSpacing:"0.04em"})},"telemetry")),Ce.default.createElement("div",{style:{...go(),marginTop:2,textWrap:"pretty"}},n.join(" \xB7 ")))}function Fke({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>nJ({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:o2()});return Ce.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}},Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ce.default.createElement(Va,{kind:"fault"}),Ce.default.createElement(Ee,{tone:"error"},e.label),Ce.default.createElement("span",{style:go()},e.scope)),Ce.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},e.text),e.chips?.length>0&&Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:6}},Ce.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},e.chipsLabel),Ce.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},e.chips.map(a=>Ce.default.createElement("span",{key:a,style:{fontFamily:V,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&&Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:3}},e.details.map(a=>Ce.default.createElement("span",{key:a,style:go(11,"var(--color-text-cell)",{textWrap:"pretty"})},a))),Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:"auto",flexWrap:"wrap"}},e.action?.path&&Ce.default.createElement(ge,{size:"sm",onClick:()=>dt(e.action.path)},e.action.label),e.action?.hint&&Ce.default.createElement("span",{style:{...go(),whiteSpace:"nowrap"}},e.action.hint),Ce.default.createElement(bx,{build:o,style:{marginLeft:"auto"}})))}function lD({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,Ce.useState)("all"),[m,y]=(0,Ce.useState)(!1),b=(L,Y)=>Ce.default.createElement("button",{type:"button",onClick:Y,style:zke},L),h=t.findIndex(L=>L.id===n),g=h>=0?t[h]:t[0],v=g?sh(g,Math.max(h,0),t,r):null,x=Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},b("Evaluations",l),Ce.default.createElement("span",{style:go(12)},"/"),b(e?.name||"Evaluation",u),Ce.default.createElement("span",{style:go(12)},"/"),Ce.default.createElement("span",{style:go(12,"var(--color-text-primary)",{fontWeight:700})},g?`Run #${v}`:"Runs"));if(!e)return Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Ce.default.createElement("div",null,b("Evaluations",l)),Ce.default.createElement(Fe,null,Ce.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"This evaluation is not in the list any more.")));if(!g)return Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},x,o?Ce.default.createElement("div",{className:"flex items-center justify-center h-64"},Ce.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):Ce.default.createElement(Fe,null,Ce.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let S=ix(g),w=S.length?S:[null],A=ih(g),k=L=>A.find(Y=>Y.label===L)||(L==null?A[0]:null),_=g.scores?._verdict,C=Array.isArray(g.scores?._missing_models)?g.scores._missing_models:[],E=ah(g).map(([L,Y])=>({key:L,value:Y,criterion:ax(e,L)})),j=L=>E.filter(Y=>hl(Y.criterion)===L).length,X=hI.filter(L=>j(L.id)>0),z=L=>w.some(Y=>{let W=Kp(L.value,Y);return W&&(W.skipped||W.score!=null&&W.score<.7)}),U=E.filter(L=>(p==="all"||hl(L.criterion)===p)&&(!m||z(L))),N=hI.map(L=>({...L,rows:U.filter(Y=>hl(Y.criterion)===L.id)})).filter(L=>L.rows.length),O=YC(e,{...g,number:v}),D=Ci(g),T=fo(g.completed_at||g.created_at),I=g.status==="complete"&&g.samples_evaluated?` \xB7 ${lo(g.samples_passed||0,g.samples_evaluated)} passed`:"",P={fontFamily:V,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 Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"evaluation-run-detail"},x,Ce.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},Ce.default.createElement("div",{style:{minWidth:0}},Ce.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},`Run #${v}`),Ce.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 ${qp(e,g)}${I}`)),Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((L,Y)=>Ce.default.createElement(In,{key:L.id,square:!0,mono:!0,selected:L.id===g.id,onClick:()=>i?.(L),title:`${L.status} \xB7 ${fo(L.completed_at||L.created_at)}`},`#${sh(L,Y,t,r)}`)),Ce.default.createElement(ge,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ce.default.createElement(II,{spend:D,judgedBy:oh(e,g)}),g.status==="failed"?Ce.default.createElement(Fe,{"data-testid":"run-failed",style:{borderColor:"var(--color-error)"},padding:"14px 16px"},Ce.default.createElement("span",{style:go(12,"var(--color-error)",{fontWeight:700})},"[!] run failed"),Ce.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6,lineHeight:"19px"}},g.error_message)):g.status!=="complete"?Ce.default.createElement(Fe,{"data-testid":"run-pending",padding:"14px 16px"},Ce.default.createElement("span",{style:go(12,"var(--color-warning-text)",{fontWeight:700})},`[~] ${g.status}`),Ce.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-cell)",marginTop:6}},"Scores appear once the run completes.")):Ce.default.createElement(Ce.default.Fragment,null,S.length>1&&Ce.default.createElement(xx,{rows:XC(g,{columns:S}),unit:"interaction",judgedBy:_?.judge||null,judgeEstimated:D?.judge?.estimated??!0}),Ce.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:12}},w.map(L=>{let Y=_X(g,L),W=k(L),ie=W?.samples??(L==null?g.samples_evaluated:null),Me=W?.passed??(L==null?g.samples_passed:null),pe=[];return Y.below>0&&pe.push({tone:"error",text:`below pass mark \xD7${Y.below}`}),Y.skipped>0&&pe.push({tone:"warning",text:`skipped \xD7${Y.skipped}`}),Ce.default.createElement(vx,{key:L||"all",label:L,short:L?mo(L).short:"all samples",provider:W?.provider||(L?mo(L).provider:null)||null,winner:!!_?.winner&&_.winner===L,passed:Me,total:ie,avgScore:Y.avg,criteria:{cleared:Y.cleared,scored:Y.scored},latencyMs:W?.avg_duration_ms,inputTokens:W?.input_tokens,outputTokens:W?.output_tokens,cost:W?.cost,perInteraction:Vp(W?.cost,W?.priced),estimated:W?.estimated??!1,unit:"interaction",badges:pe})}))),(_||C.length>0)&&Ce.default.createElement(Fe,{padding:"12px 16px",style:{display:"flex",flexDirection:"column",gap:6},"data-testid":"run-verdict"},_&&Ce.default.createElement(Ce.default.Fragment,null,Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},Ce.default.createElement(Ve,null,"Verdict"),_.judge&&Ce.default.createElement("span",{style:go()},`judged by ${_.judge}`)),Ce.default.createElement("div",{style:{fontSize:13,lineHeight:"19px",color:"var(--color-text-cell)",textWrap:"pretty"}},Ce.default.createElement("strong",{style:{color:"var(--color-text-primary)",fontFamily:V,fontSize:12}},_.winner),_.rationale?` \xB7 ${_.rationale}`:"")),C.length>0&&Ce.default.createElement("span",{style:go(11,"var(--color-warning-text)",{fontWeight:600})},`[!] no generations recorded under ${C.join(", ")}`)),Ce.default.createElement(Fe,{padding:0,style:{overflow:"hidden"},testId:"criteria-matrix"},Ce.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"10px 14px",flexWrap:"wrap"}},Ce.default.createElement(Ve,{style:{marginRight:4}},"Criteria"),Ce.default.createElement(In,{selected:p==="all",onClick:()=>f("all")},`All ${E.length}`),X.map(L=>Ce.default.createElement(In,{key:L.id,selected:p===L.id,onClick:()=>f(L.id)},`${L.label} ${j(L.id)}`)),Ce.default.createElement(In,{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")),Ce.default.createElement("div",{style:{overflowX:"auto"}},Ce.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ce.default.createElement("thead",null,Ce.default.createElement("tr",{style:{background:"var(--color-muted)"}},Ce.default.createElement("th",{style:{...P,width:"34%"}},"Criterion"),Ce.default.createElement("th",{style:P},"Expects"),w.map(L=>Ce.default.createElement("th",{key:L||"score",style:P},L?Ce.default.createElement(Ce.default.Fragment,null,Ce.default.createElement("span",{style:{color:"var(--color-text-primary)",textTransform:"none",letterSpacing:0,fontSize:12}},mo(L).short),(k(L)?.provider||mo(L).provider)&&Ce.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},k(L)?.provider||mo(L).provider)):"Score")))),Ce.default.createElement("tbody",null,N.map(L=>Ce.default.createElement(Ce.default.Fragment,{key:L.id},Ce.default.createElement("tr",{style:{background:"var(--color-background)",borderTop:"1px solid var(--color-border-light)"}},Ce.default.createElement("td",{style:G},Ce.default.createElement("span",{style:{fontWeight:600,fontSize:13,color:"var(--color-text-primary)"}},L.label)),Ce.default.createElement("td",{style:G},Ce.default.createElement("span",{style:go()},`${L.rows.length} ${L.rows.length===1?"criterion":"criteria"}`)),w.map(Y=>{let W=L.rows.filter(pe=>{let ce=Kp(pe.value,Y);return ce&&ce.score!=null}),ie=W.filter(pe=>Kp(pe.value,Y).score>=.7).length,Me=W.length&&ie===W.length?"var(--color-success-text)":ie===0&&W.length?"var(--color-error-text)":"var(--color-text-cell)";return Ce.default.createElement("td",{key:Y||"score",style:G},Ce.default.createElement("span",{style:go(11,Me,{fontWeight:600})},W.length?`${lo(ie,W.length)} passed`:"\u2014"))})),L.rows.map(Y=>Ce.default.createElement("tr",{key:Y.key,"data-testid":"criterion-row",style:{borderTop:"1px solid var(--color-border-light)"}},Ce.default.createElement("td",{style:H},Ce.default.createElement("div",{style:go()},Y.key),Ce.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},KC(Y.criterion))),Ce.default.createElement("td",{style:H},Ce.default.createElement("span",{style:{fontFamily:V,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:nh(Y.criterion)},ox(nh(Y.criterion),40))),w.map(W=>Ce.default.createElement("td",{key:W||"score",style:H},Ce.default.createElement(Bke,{stats:Kp(Y.value,W)}))))))),N.length===0&&Ce.default.createElement("tr",{style:{borderTop:"1px solid var(--color-border-light)"}},Ce.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.")))))),Ce.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Ce.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:10}},Ce.default.createElement(Ve,null,"What to fix"),Ce.default.createElement("span",{style:go()},O.length?Ct(O.length,"item"):"nothing")),O.length?Ce.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:12}},O.map(L=>Ce.default.createElement(Fke,{key:L.kind,item:L,evaluation:e,run:g,number:v}))):Ce.default.createElement(hn,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${T1(.7)}) and nothing was skipped.`)),Ce.default.createElement(tf,{evaluation:e,run:g,spend:D,onDelete:c,deleting:d}))}var ad=null,uD=new Set,_J=()=>uD.forEach(e=>e(ad));function Uke(e={}){let t=e.requireText==null?null:String(e.requireText);return{title:e.title||"Are you sure?",message:e.message||"",confirmLabel:e.confirmLabel||"Confirm",cancelLabel:e.cancelLabel||"Cancel",danger:!!e.danger,requireText:t===""?null:t}}function Jr(e){return ad&&ad.resolve(!1),new Promise(t=>{ad={...Uke(e),resolve:t},_J()})}function CJ(e){if(!ad)return;let{resolve:t}=ad;ad=null,_J(),t(!!e)}function AJ(){return ad}function EJ(e){return uD.add(e),()=>uD.delete(e)}function NJ(e,t){return e?.requireText?t===e.requireText:!0}var TJ=()=>{let e=Vn().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},y2=()=>{let e=Vn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},OJ=()=>pI(window.location.search)?.evaluationId||(y2()?String(y2().evaluationId):null),h2=(e=11,t="var(--color-text-muted)")=>({fontFamily:V,fontSize:e,color:t}),Wke=e=>{let t=lh(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:YC(e,t).length+r:r},Hke={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 Cx({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,je.useState)(()=>e?null:TJ()),a=(0,je.useRef)(null),[i,s]=(0,je.useState)(0),[l,u]=(0,je.useState)(null);(0,je.useEffect)(()=>{let xe=a.current?.contentDocument?.body;if(!xe)return;let rt=()=>u(xe.scrollHeight);if(rt(),typeof ResizeObserver>"u")return window.addEventListener("resize",rt),()=>window.removeEventListener("resize",rt);let ft=new ResizeObserver(rt);return ft.observe(xe),()=>ft.disconnect()},[i,n]),(0,je.useEffect)(()=>u(null),[n]);let[c,d]=(0,je.useState)([]),[p,f]=(0,je.useState)([]),[m,y]=(0,je.useState)(void 0),[b,h]=(0,je.useState)(!1),[g,v]=(0,je.useState)(void 0),[x,S]=(0,je.useState)(!0),[w,A]=(0,je.useState)(null),[k,_]=(0,je.useState)(null),[C,E]=(0,je.useState)(()=>{if(e)return null;let xe=y2();return xe?.runId?xe:null}),[j,X]=(0,je.useState)(()=>e?null:OJ()),[z,U]=(0,je.useState)({}),[N,O]=(0,je.useState)(!1),[D,T]=(0,je.useState)(null),[I,P]=(0,je.useState)(null),[H,G]=(0,je.useState)(null),[L,Y]=(0,je.useState)(!1),[W,ie]=(0,je.useState)(0);(0,je.useEffect)(()=>{if(e)return;let xe=()=>{o(TJ());let rt=y2();E(rt?.runId?rt:null);let ft=OJ();X(ft),ft&&_(Jt=>new Set([...Jt||[],Number(ft)]))};return window.addEventListener("popstate",xe),window.addEventListener("dashboard:navigate",xe),()=>{window.removeEventListener("popstate",xe),window.removeEventListener("dashboard:navigate",xe)}},[e]);let Me=(0,je.useCallback)(async()=>{try{let xe=new URLSearchParams;t&&xe.set("agent_id",t),L&&xe.set("archived","1");let rt=xe.toString(),ft=await fetch(`/api/evaluations${rt?`?${rt}`:""}`);if(!ft.ok)throw new Error(`Request failed (${ft.status})`);let Jt=await ft.json();ie(Number(Jt.archived_count)||0),y(Jt.judge_provider??null),h(Jt.judge_provider_error===!0),v(Array.isArray(Jt.model_providers)?Jt.model_providers:null);let Eo=Jt.evaluations||[],Nn=null;try{Eo=await xX(Eo,j,fetch)}catch(Ja){Nn=Ja.message}d(Eo),_(Ja=>{if(Ja)return Ja;let Qa=j?Eo.find(Fo=>String(Fo.id)===j):Eo.find(Fo=>Fo.scenario_suite)||Eo[0];return new Set(Qa?[Qa.id]:[])}),A(Nn)}catch(xe){A(xe.message),v(rt=>rt===void 0?null:rt)}finally{S(!1)}},[t,j,L]),pe=(0,je.useCallback)(async xe=>{try{let rt=await fetch(`/api/evaluations/${xe}`);if(!rt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${rt.status})`);let ft=await rt.json();U(Jt=>({...Jt,[xe]:{runs:ft.evaluation?.runs||[],runCount:ft.evaluation?.run_count??null}}))}catch(rt){U(ft=>({...ft,[xe]:{runs:null,runCount:null,error:rt.message}})),A(rt.message)}},[]);(0,je.useEffect)(()=>{Me(),fetch("/api/agents").then(xe=>xe.ok?xe.json():{agents:[]}).then(xe=>f(xe.agents||[])).catch(()=>f([]))},[Me]),(0,je.useEffect)(()=>{new Set([...k||[],...C?[C.evaluationId]:[]]).forEach(rt=>{let ft=c.find(Jt=>Jt.id===rt);ft&&!ft.scenario_suite&&!z[rt]&&pe(rt)})},[k,C,c,z,pe]);let ce=xe=>{!e&&Vn()!==xe&&Qc(xe)},Q=xe=>!!k?.has(xe),ee=xe=>{let rt=!Q(xe.id);_(ft=>{let Jt=new Set(ft||[]);return rt?Jt.add(xe.id):Jt.delete(xe.id),Jt}),ce(rt?`/evaluations/${xe.id}`:"/evaluations")},$=(xe,rt)=>{_(ft=>new Set([...ft||[],xe.id])),E({evaluationId:xe.id,runId:rt.id}),ce(`/evaluations/${xe.id}/runs/${rt.id}`)},B=xe=>{E(null),ce(xe?`/evaluations/${xe}`:"/evaluations")},K=async xe=>{T(xe.id),A(null);try{let rt=await fetch(`/api/evaluations/${xe.id}/run`,{method:"POST"}),ft=await rt.json().catch(()=>({}));if(!rt.ok){A((ft.errors||[ft.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${rt.status})`);return}await Promise.all([Me(),pe(xe.id)]),ft.run&&C?.evaluationId===xe.id&&$(xe,ft.run)}finally{T(null)}},M=async(xe,rt)=>{G(xe.id),A(null);try{let ft=await fetch(`/api/evaluations/${xe.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:rt}})}),Jt=await ft.json().catch(()=>({}));if(!ft.ok){A((Jt.errors||[Jt.error]).filter(Boolean).join(", ")||`${rt?"Archive":"Unarchive"} failed (HTTP ${ft.status})`);return}await Me()}finally{G(null)}},ae=async xe=>{if(await Jr({title:`Delete ${xe.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:xe.name})){P(xe.id),A(null);try{let rt=await fetch(`/api/evaluations/${xe.id}`,{method:"DELETE"});rt.ok||rt.status===404?(d(ft=>ft.filter(Jt=>Jt.id!==xe.id)),_(ft=>{let Jt=new Set(ft||[]);return Jt.delete(xe.id),Jt}),C?.evaluationId===xe.id&&B(null)):A(`Delete failed (HTTP ${rt.status})`)}finally{P(null)}}};if(x)return je.default.createElement("div",{className:"flex items-center justify-center h-64"},je.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let F=t?c.filter(xe=>String(xe.agent?.id)===String(t)):c,se=xe=>{let rt=z[xe.id];return rt?.runs?{runs:rt.runs,runCount:xe.run_count??rt.runCount??null,loaded:!0}:{runs:xe.latest_run?[xe.latest_run]:[],runCount:xe.run_count??null,loaded:!1}};if(n){let xe=nt(`/api/evaluations/${n.evaluationId}/runs/${n.runId}/report`),rt=`${xe}?theme=${r?"dark":"light"}`;return je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},je.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},je.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},je.default.createElement(ge,{size:"sm",onClick:()=>{Qc("/evaluations"),o(null)}},je.default.createElement("span",{style:{fontFamily:V}},"<-")," Evaluations"),je.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),je.default.createElement("span",{style:h2(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),je.default.createElement("a",{href:xe,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 ",je.default.createElement("span",{style:{fontFamily:V}},"->"))),je.default.createElement("iframe",{ref:a,src:rt,title:"Evaluation run report",onLoad:()=>s(ft=>ft+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 xe=F.find(rt=>rt.id===C.evaluationId);if(!xe||!xe.scenario_suite){let{runs:rt,runCount:ft,loaded:Jt}=xe?se(xe):{runs:[],runCount:null,loaded:!0};return je.default.createElement(lD,{evaluation:xe,runs:rt,runCount:ft,runId:C.runId,loading:!Jt,running:D===C.evaluationId,onSelectRun:Eo=>$(xe,Eo),onRun:()=>K(xe),onBack:()=>B(null),onOpenEvaluation:()=>B(C.evaluationId),onDelete:xe?()=>ae(xe):void 0,deleting:I===C.evaluationId})}}let oe=PX(F,{focusId:j}),{samplesScored:ve,samplesPassed:Re,passRatio:tt,spend:he}=oe,le=MX(oe),Ze=[...new Set(F.map(xe=>xe.agent?.name).filter(Boolean))],Je=F.reduce((xe,rt)=>Math.max(xe,yI(rt,lh(rt)||rt.latest_run)),0),it=F.map(Wke),wt=it.reduce((xe,rt)=>xe+rt,0),fr=it.filter(Boolean).length,vn=F.length?[`${Ct(Ze.length,"agent")} \xB7 ${Je>1?`${Je} models compared`:"no model comparisons"}`,le].filter(Boolean).join(" \xB7 "):"none defined yet",Ca=oe.focused?"headline run of this evaluation":`headline run of ${Ct(oe.counted,"current evaluation")}${le?` \xB7 ${le}`:""}`,hs=oe.perModel.length>1?oe.perModel.map(xe=>`${xe.label} ${lo(xe.passed,xe.total)}`):[],Aa=he.agentCost!=null&&he.estimated||he.judgeCost!=null&&he.judgeEstimated,It=he.agentCost!=null?je.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:4}},je.default.createElement("span",{"data-testid":"stat-agent-cost-scope"},`over ${Ct(he.interactions,"interaction")}`),je.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},je.default.createElement("span",null,"agent"),je.default.createElement("span",{"data-testid":"stat-agent-cost-agent",style:{color:"var(--color-text-cell)"}},Or(he.agentCost,{estimated:he.estimated})),je.default.createElement("span",null,"judge"),je.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"},he.judgeCost!=null?`${Or(he.judgeCost,{estimated:he.judgeEstimated})} \xB7 offline`:"none")),Aa&&je.default.createElement("span",{title:Rs,style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"~ estimated")):"no priced runs yet";return je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},je.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&je.default.createElement("div",{style:{flex:1,minWidth:260}},je.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),je.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.")),je.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(W>0||L)&&je.default.createElement(ge,{size:"sm",onClick:()=>Y(xe=>!xe),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},L?"Hide archived":`Show archived (${W})`),je.default.createElement(ge,{variant:"primary",onClick:()=>O(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),w&&je.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&&je.default.createElement(sD,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:b,modelProviders:g,onCancel:()=>O(!1),onCreated:async xe=>{O(!1),await Me(),xe?.id!=null&&(_(rt=>new Set([...rt||[],xe.id])),ce(`/evaluations/${xe.id}`))}}),je.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},je.default.createElement(Zg,{label:"Evaluations",value:F.length,sub:vn,testId:"stat-evaluations"}),je.default.createElement(Zg,{label:"Samples scored",value:ve,sub:Ca,testId:"stat-samples-scored"}),je.default.createElement(Zg,{label:"Pass rate",value:fm(tt),valueColor:tt==null?"var(--color-text-muted)":po[Au(tt)].strong,sub:tt==null?le||"no completed runs yet":je.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},je.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${Re}/${ve} passed`),hs.map(xe=>je.default.createElement("span",{key:xe,style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"stat-pass-rate-model"},xe))),testId:"stat-pass-rate"}),je.default.createElement(Zg,{label:"To fix",value:wt,valueColor:wt?"var(--color-error)":void 0,sub:wt?`across ${Ct(fr,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),je.default.createElement(Zg,{label:"Cost / interaction",value:Ou(he.perInteraction,he.estimated),valueColor:he.perInteraction==null?"var(--color-text-muted)":void 0,sub:It,testId:"stat-agent-cost"})),je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},F.map((xe,rt)=>{let ft=xe.latest_run,Jt=lh(xe),Eo=ft&&Jt&&ft.id!==Jt.id?ft:null,Nn=xI(xe),Ja=Hke[Nn],Qa=Nn==="archived",Fo=Q(xe.id),Qo=!!xe.scenario_suite,Ni=it[rt],ju=(xe.criteria||[]).some(to=>hl(to)==="telemetry"),{runs:kl,runCount:pa}=se(xe);return je.default.createElement(Fe,{key:xe.id,padding:0,testId:"evaluation-card","data-telemetry":ju?"true":"false","data-kind":Qo?"suite":"sampling","data-open":Fo?"true":"false","data-standing":Nn,style:{overflow:"hidden",opacity:Qa?.75:1}},je.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":Fo,onClick:()=>ee(xe),onKeyDown:to=>{(to.key==="Enter"||to.key===" ")&&(to.preventDefault(),ee(xe))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},je.default.createElement(Va,{kind:"chevron",open:Fo}),je.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:V,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:Qo?"scenario suite":"sampling evaluation"},Qo?"=":"~"),je.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},xe.name),je.default.createElement("span",{style:h2(11)},`@${xe.agent?.name||"agent"} \xB7 ${qp(xe)}`),je.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},je.default.createElement("span",{style:h2(11)},fo(ft?.completed_at||ft?.created_at||xe.created_at)),Ni>0&&je.default.createElement("span",{style:h2(11,"var(--color-error)")},`${Ni} to fix`),Ja&&je.default.createElement(Ee,{tone:Ja.tone,size:10,style:{padding:"1px 6px"},title:Ja.title,testId:"evaluation-standing"},Ja.text),Eo&&je.default.createElement(Rp,{run:Eo,testId:"evaluation-newer-run-badge"}),je.default.createElement(Rp,{run:Jt||ft,testId:Qo?"suite-pass-badge":"evaluation-pass-badge"}),je.default.createElement("button",{type:"button",onClick:to=>{to.stopPropagation(),M(xe,!Qa)},disabled:H===xe.id,title:Qa?"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===xe.id?"not-allowed":"pointer",fontFamily:V,fontSize:11,color:"var(--color-text-muted)",opacity:H===xe.id?.5:1}},H===xe.id?"\u2026":Qa?"unarchive":"archive"))),Fo&&je.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Qo?je.default.createElement(aD,{evaluation:xe,modelProviders:g,onChanged:Me,onDelete:()=>ae(xe),deleting:I===xe.id,initialRunId:C?.evaluationId===xe.id?C.runId:null,onRunSelected:to=>ce(`/evaluations/${xe.id}/runs/${to}`)}):je.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},je.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},je.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},kl.length?EZ(kl,pa):`@${xe.agent?.name||"agent"} \xB7 no runs yet`),je.default.createElement(ge,{variant:"primary",size:"sm",disabled:D===xe.id,onClick:to=>{to.stopPropagation(),K(xe)},testId:"evaluation-run-button"},D===xe.id?"Running\u2026":`Run ${qp(xe)}`)),je.default.createElement(LI,{runs:kl,runCount:pa,evaluation:xe,agentName:xe.agent?.name,previousRun:xe.previous_run,onOpen:to=>$(xe,to),testId:"evaluation-runs-panel"}),je.default.createElement(tf,{evaluation:xe,run:ft,spend:Ci(ft),onDelete:()=>ae(xe),deleting:I===xe.id}))))})),F.length===0&&!N&&je.default.createElement(Fe,{style:{textAlign:"center",padding:"48px 20px"}},je.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),je.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 Ue=Z(J());var qke=e=>new Date(`${e}T00:00:00`),Kke=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function cD({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=Ui(n),[a,i]=(0,Ue.useState)(null),[s,l]=(0,Ue.useState)(!0),{timeWindow:u,days:c}=pl(),[d,p]=(0,Ue.useState)("overview");(0,Ue.useEffect)(()=>{f()},[e?.id,c]);let f=async()=>{if(e?.id){l(!0);try{let x=await(await fetch(`/api/agents/${e.id}/analytics?days=${c}`)).json();i(x)}catch(v){console.error("Failed to load analytics:",v)}finally{l(!1)}}},m=v=>v?v<1e3?`${v}ms`:`${(v/1e3).toFixed(2)}s`:"-",y=v=>v?v>=1e6?`${(v/1e6).toFixed(1)}M`:v>=1e3?`${(v/1e3).toFixed(1)}K`:v.toString():"0",b=v=>{switch(v){case"complete":return"bg-green-500";case"failed":return"bg-red-500";case"running":return"bg-blue-500";case"pending":return"bg-yellow-500";case"cancelled":return"bg-gray-500";default:return"bg-gray-400"}};if(s&&!a)return Ue.default.createElement("div",{className:"flex items-center justify-center h-64"},Ue.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return Ue.default.createElement("div",{className:"space-y-6"},r?Ue.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&Ue.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ue.default.createElement(fl,null)):Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",{className:"flex items-center space-x-4"},Ue.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},Ue.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),Ue.default.createElement("div",null,Ue.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),Ue.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&Ue.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ue.default.createElement(fl,null))),!r&&Ue.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},Kke.map(v=>Ue.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"&&Ue.default.createElement($p,{agentId:e.id,embedded:!0}),g==="interactions"&&Ue.default.createElement(Tu,{agentId:e.id,embedded:!0}),g==="overview"&&Ue.default.createElement(Ue.default.Fragment,null,Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ue.default.createElement(v2,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),Ue.default.createElement(v2,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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}),Ue.default.createElement(v2,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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}),Ue.default.createElement(v2,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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})),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ue.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,x)=>Ue.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(x===0||x===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&Ue.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},qke(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),Ue.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?Ue.default.createElement("div",{className:"space-y-3"},Object.entries(a.status_breakdown).map(([v,x])=>{let S=a?.summary?.total_runs||1,w=(x/S*100).toFixed(1);return Ue.default.createElement("div",{key:v},Ue.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ue.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),Ue.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},x," (",w,"%)")),Ue.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},Ue.default.createElement("div",{className:`h-full ${b(v)} rounded-full transition-all`,style:{width:`${w}%`}})))})):Ue.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&Ue.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),Ue.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>Ue.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"}},Ue.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"},Ue.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"})),Ue.default.createElement("div",{className:"flex-1 min-w-0"},Ue.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),Ue.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var PJ={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 v2({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=PJ[n]||PJ.rose;return Ue.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",null,Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),Ue.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),Ue.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var me=Z(J());var Vke={active:"success",configured:"info",available:"warning",idle:"muted"},Gke={agent_defined:"success",dashboard:"success",mcp:"info"},MJ="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",IJ="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",Yke=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],DJ={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:V,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},bl={fontFamily:V,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},x2={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function LJ({on:e,onClick:t,title:r}){return me.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"}},me.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 jJ({on:e,dim:t=!1}){return me.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:V,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 Xke({tool:e,state:t,onToggle:r}){if(!t)return me.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.`),me.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"}},me.default.createElement(LJ,{on:n,title:o,onClick:()=>r(e)}))}function b2({children:e,onClick:t,disabled:r,title:n}){return me.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:V,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 $J({children:e}){return me.default.createElement("div",{style:{overflowX:"auto"}},me.default.createElement("div",{style:{minWidth:800}},e))}function dD({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,me.useState)(null),[l,u]=(0,me.useState)(null),[c,d]=(0,me.useState)("7d"),[p,f]=(0,me.useState)(""),[m,y]=(0,me.useState)(null),[b,h]=(0,me.useState)(null),[g,v]=(0,me.useState)(!1),[x,S]=(0,me.useState)(null),[w,A]=(0,me.useState)({}),k=(CC.find(B=>B.value===c)||CC[1]).hours;(0,me.useEffect)(()=>{let B=!1;return u(null),fetch(`/api/agents/${e.id}/tool_roster?hours=${k}`).then(K=>{if(!K.ok)throw new Error(`Request failed (${K.status})`);return K.json()}).then(K=>{B||s(K)}).catch(K=>{B||u(K.message)}),()=>{B=!0}},[e.id,k]);let _=(0,me.useMemo)(()=>({services:[],tools:[]}),[]),C=i||_,E=(0,me.useMemo)(()=>t.tools||[],[t.tools]),j=(0,me.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),X=(0,me.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),z=(0,me.useMemo)(()=>_C(C,j),[C,j]),U=(0,me.useMemo)(()=>kG(C,z,{query:p,filter:m}),[C,z,p,m]),N=(0,me.useMemo)(()=>CG(C,z,E,{query:p,source:b,enabledOnly:g}),[C,z,E,p,b,g]),O=(0,me.useMemo)(()=>AG(C,z,E,{range:c}),[C,z,E,c]),D=(0,me.useMemo)(()=>TG(C,{tools:E,mcpServers:j,approvalRequiredTools:X},{tools:e.tools||[],mcpServers:e.mcp_servers||[],approvalRequiredTools:e.approval_required_tools||[]}),[C,E,j,X,e]),T=C.usage_available!==!1,I=B=>T?B:"\u2014",P=(0,me.useCallback)(B=>{r("mcp_servers",OG(C,B,j))},[C,j,r]),H=(0,me.useCallback)(B=>{let K=z[B.key];P({...z,[B.key]:{...K,on:!K.on}})},[z,P]),G=(0,me.useCallback)((B,K)=>{let M=z[B.key];M.on&&P({...z,[B.key]:{...M,tools:{...M.tools,[K.name]:!M.tools[K.name]}}})},[z,P]),L=(0,me.useCallback)((B,K)=>{let M=z[B.key],ae=Object.fromEntries((B.tools||[]).map(F=>[F.name,K]));P({...z,[B.key]:{on:K||M.on,tools:ae}})},[z,P]),Y=(0,me.useCallback)(B=>{if(!B.editable)return;let K=B.on?E.filter(M=>M!==B.key):[...E,B.key];r("tools",FM(C,K))},[C,E,r]),W=(0,me.useCallback)((B,K)=>{if(!B.editable)return;let M=K?[...E,...B.keys.filter(ae=>!E.includes(ae))]:E.filter(ae=>!B.keys.includes(ae));r("tools",FM(C,M))},[C,E,r]),ie=(0,me.useCallback)(B=>{r("approval_required_tools",NG(X,B,e.approval_required_tools||[]))},[X,e,r]),Me=(0,me.useCallback)(()=>{r("tools",e.tools||[]),r("mcp_servers",e.mcp_servers||[]),r("approval_required_tools",e.approval_required_tools||[])},[e,r]),pe=(C.services||[]).filter(B=>z[B.key]?.on),ce=N.find(B=>B.source==="mcp"),ee=N.filter(B=>B.source!=="mcp").reduce((B,K)=>B+K.enabledCount,0)+(ce?ce.total:0),$=N.reduce((B,K)=>B+K.total,0);return l?me.default.createElement(Fe,null,me.default.createElement(Ve,null,"Tools & MCP services"),me.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},me.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},me.default.createElement("div",{style:{flex:1,minWidth:260}},me.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),me.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.")),me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.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)"}},me.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-muted)"}},"?"),me.default.createElement("input",{value:p,onChange:B=>f(B.target.value),placeholder:"Filter tools and services\u2026","aria-label":"Filter tools and services",style:{border:"none",outline:"none",background:"transparent",color:"var(--color-text-primary)",fontSize:13,width:180}})),me.default.createElement(us,{options:CC,value:c,onChange:d}))),me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},O.map(B=>me.default.createElement(Fe,{key:B.key,padding:"14px 16px",testId:`roster-stat-${B.key}`},me.default.createElement(Ve,{size:11,spacing:"0.05em"},B.label),me.default.createElement("div",{style:{marginTop:6,fontFamily:V,fontSize:26,fontWeight:700,lineHeight:1.1,color:B.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},B.value),me.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},B.sub)))),me.default.createElement(Fe,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},me.default.createElement(Ve,null,"MCP services"),me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},pe.length," of ",(C.services||[]).length," enabled \xB7 ",ce?ce.total:0," tools offered"),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},me.default.createElement(In,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),Yke.map(B=>me.default.createElement(In,{key:B.value,selected:m===B.value,onClick:()=>y(m===B.value?null:B.value)},B.label,B.value==="enabled"?` ${pe.length}`:"")),me.default.createElement(gn,{href:nt("/mcp"),onClick:()=>dt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),me.default.createElement($J,null,me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:MJ,...DJ}},me.default.createElement("span",null,"On"),me.default.createElement("span",null,"Service"),me.default.createElement("span",null,"Status"),me.default.createElement("span",{style:{textAlign:"right"}},"Tools"),me.default.createElement("span",{style:{textAlign:"right"}},"Calls"),me.default.createElement("span",{style:{textAlign:"right"}},"Errors"),me.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),me.default.createElement("span",null)),U.map(B=>{let K=x===B.key;return me.default.createElement("div",{key:B.key},me.default.createElement("div",{className:"aa-roster-row","data-on":B.on?"true":"false","data-testid":`service-row-${B.key}`,style:{display:"grid",gridTemplateColumns:MJ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},me.default.createElement(LJ,{on:B.on,onClick:()=>H(B),title:`${B.on?"Disable":"Enable"} ${B.name} for this agent`}),me.default.createElement("div",{onClick:()=>S(K?null:B.key),style:{minWidth:0,cursor:"pointer"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},B.name),B.first_party&&me.default.createElement(Ee,{tone:"accent",size:10},"first-party"),zp(B)&&me.default.createElement(Ee,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),z0(B)&&me.default.createElement(Ee,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),AC(B)&&me.default.createElement(Ee,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),B.partial&&me.default.createElement(Ee,{tone:"warning",size:10},B.partialLabel)),me.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...x2}},B.description)),me.default.createElement("span",null,me.default.createElement(Ee,{tone:Vke[B.status]||"muted"},B.status)),me.default.createElement("span",{style:{...bl,color:B.on?"var(--color-text-primary)":"var(--color-text-muted)"}},B.toolsLabel),me.default.createElement("span",{style:bl},I(B.calls)),me.default.createElement("span",{style:{...bl,color:B.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(B.errors)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-muted)"}},I(L0(B.last_seen))),me.default.createElement("span",{onClick:()=>S(K?null:B.key),style:{cursor:"pointer",textAlign:"center"}},me.default.createElement(Va,{kind:"chevron",open:K}))),K&&me.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},me.default.createElement(Ve,{size:10,color:"var(--color-text-muted)"},"Tools offered"),me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},B.transport),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},me.default.createElement(b2,{onClick:()=>L(B,!0),title:`Offer every tool ${B.name} serves`},"all"),me.default.createElement(b2,{onClick:()=>L(B,!1),disabled:!B.on,title:`Offer none of ${B.name}'s tools`},"none"))),B.tools.length===0?me.default.createElement(hn,{style:{padding:"10px 0"}},wG(B)):me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},B.tools.map(M=>me.default.createElement("div",{key:M.name,className:"aa-roster-row",onClick:()=>G(B,M),style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr) 46px 52px",gap:10,alignItems:"center",padding:"6px 8px",borderRadius:8,cursor:B.on?"pointer":"default",opacity:B.on?1:.55}},me.default.createElement(jJ,{on:M.on,dim:!B.on}),me.default.createElement("span",{style:{minWidth:0}},me.default.createElement("span",{style:{display:"block",fontFamily:V,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)",...x2}},M.name),me.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...x2}},M.description)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-secondary)"}},I(M.calls)),me.default.createElement("span",{style:{...bl,color:M.errors?"var(--color-error-text)":"var(--color-text-muted)"}},I(M.errors?`${M.errors} err`:zM(M.avg_duration_ms)))))),!B.on&&me.default.createElement("div",{style:{marginTop:8,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},"Turning ",B.name," on offers these ",B.tools.length," tools to the agent and starts recording traces and metrics for every call.")))}),U.length===0&&me.default.createElement(hn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),me.default.createElement(Fe,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},me.default.createElement(Ve,null,"Tools"),me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},ee," enabled of ",$," available"),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},me.default.createElement(In,{selected:!b,onClick:()=>h(null)},"All ",$),N.map(B=>me.default.createElement(In,{key:B.source,selected:b===B.source,onClick:()=>h(b===B.source?null:B.source)},B.name," ",B.total)),me.default.createElement(In,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),me.default.createElement($J,null,me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:IJ,...DJ}},me.default.createElement("span",null),me.default.createElement("span",null,"Tool"),me.default.createElement("span",null,"Source"),me.default.createElement("span",{style:{textAlign:"right"}},"Calls"),me.default.createElement("span",{style:{textAlign:"right"}},"Errors"),me.default.createElement("span",{style:{textAlign:"right"}},"Avg"),me.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),me.default.createElement("span",{style:{textAlign:"center"},title:"Pause the run for a person to approve each call before the tool runs"},"Approval")),N.map(B=>{let K=w[B.source]!==!0;return me.default.createElement("div",{key:B.source},me.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"}},me.default.createElement("span",{onClick:()=>A({...w,[B.source]:K}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},me.default.createElement(Va,{kind:"chevron",open:K}),me.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},B.name)),me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},B.meta),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-cell)"}},B.countLabel),B.editable&&me.default.createElement(me.default.Fragment,null,me.default.createElement(b2,{onClick:()=>W(B,!0)},"all"),me.default.createElement(b2,{onClick:()=>W(B,!1)},"none")))),K&&B.rows.map(M=>me.default.createElement("div",{key:M.key,className:"aa-roster-row","data-on":M.on?"true":"false","data-testid":`tool-row-${M.key}`,onClick:()=>Y(M),style:{display:"grid",gridTemplateColumns:IJ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:M.editable?"pointer":"default",opacity:M.editable?1:.75}},me.default.createElement(jJ,{on:M.on,dim:!M.editable}),me.default.createElement("div",{style:{minWidth:0}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:600,color:M.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},M.name),M.source==="mcp"&&me.default.createElement(Ee,{size:10},"via ",M.server),M.source==="agent_defined"&&(M.editable?me.default.createElement(Ee,{size:10,title:"Generated from the host's schema tools; offered to this agent only while its roster names it"},"from schema"):me.default.createElement(Ee,{size:10,title:"Declared by the agent class in code, so the roster reports it rather than selecting it"},"from code")),T&&M.on&&!M.calls&&me.default.createElement(Ee,{size:10},"unused")),me.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...x2}},M.description)),me.default.createElement("span",null,me.default.createElement(Ee,{tone:Gke[M.source]||"muted"},LM[M.source])),me.default.createElement("span",{style:bl},I(M.calls)),me.default.createElement("span",{style:{...bl,color:M.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},I(M.errors)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-secondary)"}},I(zM(M.avg_duration_ms))),me.default.createElement("span",{style:{...bl,color:"var(--color-text-muted)"}},I(L0(M.last_seen))),me.default.createElement(Xke,{tool:M,state:BM(M,X),onToggle:ie}))))}),N.every(B=>B.rows.length===0)&&me.default.createElement(hn,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),me.default.createElement(Fe,{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"},me.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},me.default.createElement(Ve,{size:11,spacing:"0.05em"},ee," tools \xB7 ",pe.length," services"),me.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.")),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},D>0&&me.default.createElement(me.default.Fragment,null,me.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-warning-text)"}},D," change",D===1?"":"s"," pending"),me.default.createElement(ge,{variant:"secondary",onClick:Me},"Discard")),me.default.createElement(ge,{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")))):me.default.createElement(Fe,null,me.default.createElement(hn,null,"loading the roster\u2026"))}var Zt=Z(J());function pD({agentId:e,colors:t}){let[r,n]=(0,Zt.useState)(""),[o,a]=(0,Zt.useState)(""),[i,s]=(0,Zt.useState)(""),[l,u]=(0,Zt.useState)(1),[c,d]=(0,Zt.useState)(null),[p,f]=(0,Zt.useState)(null),[m,y]=(0,Zt.useState)(0);(0,Zt.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(nt(`/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 b=h=>g=>{h(g.target.value),u(1)};return Zt.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},Zt.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},Zt.default.createElement("label",null,"Rating ",Zt.default.createElement("select",{value:r,onChange:b(n),style:{color:t.textPrimary,background:t.cardBg}},Zt.default.createElement("option",{value:""},"All ratings"),Zt.default.createElement("option",{value:"positive"},"Thumbs up"),Zt.default.createElement("option",{value:"negative"},"Thumbs down"))),Zt.default.createElement("label",null,"From ",Zt.default.createElement("input",{type:"date",value:o,onChange:b(a),style:{color:t.textPrimary,background:t.cardBg}})),Zt.default.createElement("label",null,"To ",Zt.default.createElement("input",{type:"date",value:i,onChange:b(s),style:{color:t.textPrimary,background:t.cardBg}})),Zt.default.createElement("button",{type:"button",onClick:()=>y(h=>h+1)},"Refresh")),p&&Zt.default.createElement("p",{role:"alert"},p),!c&&!p&&Zt.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&Zt.default.createElement(Zt.default.Fragment,null,Zt.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&&Zt.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),Zt.default.createElement("ul",null,c.feedback.map(h=>Zt.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},Zt.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),Zt.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&Zt.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&Zt.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),Zt.default.createElement("a",{className:"underline",href:nt(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&Zt.default.createElement("p",null,"Response span: ",Zt.default.createElement("code",null,h.span_id))))),Zt.default.createElement("div",{className:"flex gap-4 mt-4"},Zt.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),Zt.default.createElement("span",null,"Page ",l),Zt.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var Zke=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],FJ=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],Jke=FJ.map(e=>e.id),zJ={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"]}},Qke={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function id({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(zJ[e]||zJ.neutral)[r?"dark":"light"];return ke.default.createElement("span",{style:{background:o,color:a,borderRadius:"999px",padding:"2px 8px",fontSize:"11px",fontWeight:600,fontFamily:t?Ot.mono:void 0,whiteSpace:"nowrap"}},n)}function la({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:Vo,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 ke.default.createElement("button",{type:"button",onClick:r,disabled:n,title:a,"data-testid":i,style:{...u,...c[e]||c.secondary}},s)}function BJ({tabs:e,active:t,onChange:r,colors:n}){return ke.default.createElement("div",{style:{display:"flex",alignItems:"center"}},e.map(o=>{let a=t===o.id;return ke.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?Vo:"transparent"}`,color:a?Vo:n.textSecondary,fontSize:"13px",fontWeight:a?600:500,cursor:"pointer",whiteSpace:"nowrap"}},o.label)}))}function w2({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=Ui(c),[p,f]=(0,ke.useState)(u||"config"),[m,y]=(0,ke.useState)({name:e.name||"",description:e.description||"",provider:e.provider||"openai",model:e.model||"gpt-4o-mini",instructions:e.instructions||"",action_prompts:e.actionPrompts||e.action_prompts||[],preset_type:e.presetType||e.preset_type||"terminal",appearance:e.appearance||{},instruction_sets:e.instructionSets||e.instruction_sets||[],tools:e.tools||[],approval_required_tools:e.approvalRequiredTools||e.approval_required_tools||[],mcp_servers:e.mcpServers||e.mcp_servers||[],model_config:e.modelConfig||e.model_config||{temperature:.7},status:e.status||"draft"}),[b,h]=(0,ke.useState)([]),[g,v]=(0,ke.useState)(!1),[x,S]=(0,ke.useState)(""),w=pc([m.provider]);(0,ke.useEffect)(()=>{let z=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(z)},[m,e]),(0,ke.useEffect)(()=>{p==="versions"?A():p==="code"&&k()},[p]);let A=async()=>{try{let U=await(await fetch(`/api/agents/${e.id}/versions`)).json();h(U.versions)}catch(z){console.error("Failed to load versions:",z)}},k=async()=>{try{let U=await(await fetch(`/api/agents/${e.id}/export`)).json();S(U.code)}catch(z){console.error("Failed to load code preview:",z)}},_=(z,U)=>{y(N=>({...N,[z]:U}))},C=(z,U)=>{y(N=>{let O=N[z]||[],D=O.includes(U)?O.filter(T=>T!==U):[...O,U];return{...N,[z]:D}})},E=()=>{r(m)},j=Jke.includes(p),X=p==="tools";return ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ke.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:"12px"}},ke.default.createElement("button",{type:"button",onClick:s,title:"Back to agents",style:{fontFamily:Ot.mono,fontSize:"13px",color:d.textSecondary,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",marginTop:"10px"}},"<-"),ke.default.createElement(Tn,{size:44}),ke.default.createElement("div",{style:{flex:1,minWidth:0}},ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},ke.default.createElement("h1",{style:{fontSize:"20px",fontWeight:700,color:d.textPrimary,margin:0}},m.name||"Untitled agent"),ke.default.createElement(id,{tone:Qke[m.status]||"neutral",darkMode:c},m.status),g&&ke.default.createElement(id,{tone:"info",darkMode:c},"unsaved")),ke.default.createElement("p",{style:{fontSize:"13px",color:d.textSecondary,margin:"4px 0 0"}},m.description||"No description")),ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexShrink:0}},a&&ke.default.createElement(la,{variant:"secondary",colors:d,onClick:a},"Duplicate"),ke.default.createElement(la,{variant:"primary",colors:d,onClick:o},"Run Agent"))),ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"20px",borderBottom:`1px solid ${d.cardBorder}`,overflowX:"auto"}},ke.default.createElement(BJ,{tabs:Zke,active:p,onChange:f,colors:d}),ke.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),ke.default.createElement(BJ,{tabs:FJ,active:p,onChange:f,colors:d})),X?ke.default.createElement(dD,{agent:e,formData:m,updateField:_,onSave:E,hasChanges:g,isLoading:l}):j?ke.default.createElement("div",null,p==="traces"&&ke.default.createElement($p,{agentId:e.id,embedded:!0}),p==="metrics"&&ke.default.createElement(cD,{agent:e,embedded:!0}),p==="interactions"&&ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},i&&ke.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},ke.default.createElement("button",{type:"button",onClick:i,style:{background:"none",border:"none",cursor:"pointer",fontFamily:Ot.mono,fontSize:"11px",color:"#3b82f6"}},"run report ->")),ke.default.createElement(Tu,{agentId:e.id,embedded:!0})),p==="evals"&&ke.default.createElement(Cx,{embedded:!0,agentId:e.id}),p==="feedback"&&ke.default.createElement(pD,{agentId:e.id,colors:d})):ke.default.createElement("div",{style:{background:d.cardBg,border:`1px solid ${d.cardBorder}`,borderRadius:"12px",padding:"20px"}},p==="config"&&ke.default.createElement(e_e,{formData:m,updateField:_,providerModels:w,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&ke.default.createElement(t_e,{formData:m,updateField:_,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&ke.default.createElement(r_e,{versions:b,agentId:e.id,onRestore:A,colors:d,darkMode:c}),p==="code"&&ke.default.createElement(n_e,{code:x,colors:d})),g&&!X&&ke.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)"}},ke.default.createElement("span",{style:{fontSize:"13px",color:d.textSecondary}},"Unsaved changes"),ke.default.createElement("div",{style:{display:"flex",gap:"8px"}},ke.default.createElement(la,{variant:"primary",size:"sm",colors:d,onClick:E,disabled:l},l?"Saving\u2026":"Save Changes"))))}var wl=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Iu=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),Rke=e=>({fontFamily:Ot.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function e_e({formData:e,updateField:t,providerModels:r,colors:n,darkMode:o,onDelete:a}){return ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Agent Name"),ke.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Iu(n)})),ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Preset Type"),ke.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Iu(n)},Object.keys(dm).map(i=>ke.default.createElement("option",{key:i,value:i},i))))),ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Description"),ke.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Iu(n),resize:"vertical"}})),ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Provider"),ke.default.createElement("select",{value:e.provider,onChange:i=>{t("provider",i.target.value),t("model",r[i.target.value][0])},className:"aa-field",style:Iu(n)},Object.keys(r).map(i=>ke.default.createElement("option",{key:i,value:i},i.charAt(0).toUpperCase()+i.slice(1))))),ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Model"),ke.default.createElement(Yl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Iu(n),fontFamily:Ot.mono}}))),ke.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"16px"}},ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Temperature"," ",ke.default.createElement("span",{style:{fontFamily:Ot.mono,color:n.textSecondary}},e.model_config.temperature)),ke.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:Vo}})),ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(n)},"Status"),ke.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Iu(n)},ke.default.createElement("option",{value:"draft"},"Draft"),ke.default.createElement("option",{value:"active"},"Active"),ke.default.createElement("option",{value:"archived"},"Archived")))),a&&ke.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",borderTop:`1px solid ${n.cardBorder}`,paddingTop:"16px"}},ke.default.createElement("div",null,ke.default.createElement("div",{style:Rke(n)},"Danger zone"),ke.default.createElement("p",{style:{fontSize:"13px",color:n.textMuted,margin:"4px 0 0"}},"Deleting an agent removes its configuration and version history.")),ke.default.createElement(la,{variant:"danger",size:"sm",colors:n,onClick:a},"Delete Agent")))}function t_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 ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(o)},"System Instructions"),ke.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:{...Iu(o),fontFamily:Ot.mono,resize:"vertical"}})),ke.default.createElement("div",null,ke.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}},ke.default.createElement("label",{style:{...wl(o),marginBottom:0}},"Action Prompts"),ke.default.createElement(la,{variant:"secondary",size:"sm",colors:o,onClick:s},"+ Add action")),ke.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 ",ke.default.createElement("span",{style:{fontFamily:Ot.mono}},"#ask")," action uses the system instructions alone."),a.length>0&&ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},a.map((u,c)=>ke.default.createElement("div",{key:c,style:{border:`1px solid ${o.cardBorder}`,borderRadius:"10px",padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},ke.default.createElement("span",{style:{fontFamily:Ot.mono,fontSize:"13px",color:o.textMuted}},"#"),ke.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:{...Iu(o),flex:1,padding:"6px 10px",fontFamily:Ot.mono}}),ke.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:"6px",fontSize:"12px",color:o.textSecondary,whiteSpace:"nowrap"}},ke.default.createElement("input",{type:"checkbox",checked:!!u.expose_as_tool,onChange:d=>i(c,{expose_as_tool:d.target.checked}),style:{accentColor:Vo}}),"Expose as tool"),ke.default.createElement("button",{type:"button",onClick:()=>l(c),title:"Remove action",style:{fontFamily:Ot.mono,fontSize:"12px",color:o.textMuted,background:"none",border:"none",cursor:"pointer",padding:"4px"}},"[x]")),ke.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:{...Iu(o),fontFamily:Ot.mono,resize:"vertical"}}))))),ke.default.createElement("div",null,ke.default.createElement("label",{style:wl(o)},"Instruction Sets"),ke.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px"}},r.instructionSets?.map(u=>{let c=e.instruction_sets.includes(u);return ke.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?Vo:o.inputBorder}`,background:c?Vo:"transparent",color:c?"#ffffff":o.textCell}},u)}))))}function r_e({versions:e,agentId:t,onRestore:r,colors:n,darkMode:o}){let a=async i=>{if(await Jr({title:"Restore this version?",message:"A new version is created with the restored configuration. The current version stays in the history.",confirmLabel:"Restore"}))try{await fetch(`/api/agents/${t}/restore`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({version_id:i})}),r()}catch(s){console.error("Failed to restore version:",s)}};return ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"16px"}},ke.default.createElement("p",{style:{fontSize:"13px",color:n.textSecondary,margin:0}},"View and restore previous versions of this agent."),e.length>0?ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"10px"}},e.map(i=>{let s=i.is_latest||i.isLatest;return ke.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?Vo:n.cardBorder}`,background:s?"rgba(239,68,68,0.06)":"transparent"}},ke.default.createElement("div",{style:{minWidth:0}},ke.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},ke.default.createElement("span",{style:{fontFamily:Ot.mono,fontSize:"13px",fontWeight:600,color:n.textPrimary}},"v",i.version_number||i.versionNumber),s&&ke.default.createElement(id,{tone:"error",darkMode:o},"current")),ke.default.createElement("p",{style:{fontSize:"13px",color:n.textCell,margin:"4px 0 0"}},i.change_summary||i.changeSummary),ke.default.createElement("p",{style:{fontFamily:Ot.mono,fontSize:"11px",color:n.textMuted,margin:"4px 0 0"}},new Date(i.created_at||i.createdAt).toLocaleString())),!s&&ke.default.createElement(la,{variant:"secondary",size:"sm",colors:n,onClick:()=>a(i.id)},"Restore"))})):ke.default.createElement(o_e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function n_e({code:e,colors:t}){let r=()=>{navigator.clipboard.writeText(e)};return ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:"12px"}},ke.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},ke.default.createElement("p",{style:{fontSize:"13px",color:t.textSecondary,margin:0}},"Generated Ruby code for this agent."),ke.default.createElement(la,{variant:"secondary",size:"sm",colors:t,onClick:r},"Copy")),ke.default.createElement("pre",{style:{padding:"16px",background:"#111827",color:"#e5e7eb",borderRadius:"10px",overflowX:"auto",fontFamily:Ot.mono,fontSize:"12px",lineHeight:1.6,margin:0}},ke.default.createElement("code",null,e||"Loading...")))}function o_e({colors:e,glyph:t,title:r,hint:n}){return ke.default.createElement("div",{style:{textAlign:"center",padding:"40px 20px"}},ke.default.createElement("div",{style:{fontFamily:Ot.mono,fontSize:"20px",color:e.textMuted}},t),ke.default.createElement("div",{style:{fontSize:"14px",fontWeight:600,color:e.textPrimary,marginTop:"10px"}},r),ke.default.createElement("p",{style:{fontSize:"13px",color:e.textMuted,margin:"6px auto 0",maxWidth:"420px"}},n))}var R=Z(J());async function hh(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var S2=Z(J());var a_e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var WJ=Object.freeze({events:500,chars:262144}),i_e=16*1024,s_e=3;function l_e(e){return{emit:e,maskAllInputs:!0,blockSelector:a_e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function u_e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function c_e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function d_e(e,t=WJ){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 UJ(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function HJ({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=WJ,flushIntervalMs:l=5e3}){let u=[],c=0,d="idle",p=null,f=null,m=null,y=null,b=!1,h=!1,g=null,v=0;function x(U){d!==U&&(d=U,i(U))}function S(){u.length=0,c=0}function w(){f&&f(),f=null,m=null,y!==null&&o.clearInterval(y),y=null,a?.removeEventListener?.("pagehide",j)}function A(U){h=!0,S(),w(),x(U)}function k(U){if(b||h)return;let N=u_e(U);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function _(U,N){let O=c_e(U,n());try{let D=await r(`/api/session_recordings/${encodeURIComponent(p)}/events`,{method:"POST",headers:{"Content-Type":"text/plain"},body:O,keepalive:N&&O.length<=i_e});return UJ(D.status)}catch{return"retry"}}async function C(U){for(;u.length>0&&!h;){let N=u.splice(0,d_e(u,s)),O=N.reduce((T,I)=>T+I.length+1,0);c-=O;let D=await _(N,U);if(D==="sent"){v=0;continue}if(D!=="retry"){A(D);return}if(v+=1,U||v>=s_e){v=0,S(),m&&m();return}u.unshift(...N),c+=O;return}}function E({final:U=!1}={}){return p===null||h?Promise.resolve():(g||(g=C(U).finally(()=>{g=null})),g)}function j(){E({final:!0})}async function X(){if(d!=="idle"||b)return;x("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{b||A("failed");return}if(b)return;if(!U.ok){A(UJ(U.status)==="off"?"off":"failed");return}let N=await U.json().catch(()=>null);if(b)return;if(p=N?.recording?.id??null,p===null){A("failed");return}let O;try{({record:O}=await t())}catch{b||A("failed");return}if(b)return;let D=null;try{D=typeof O=="function"?O(l_e(k)):null}catch{D=null}if(typeof D!="function"){A("failed");return}f=D,m=()=>O.takeFullSnapshot?.(),y=o.setInterval(()=>E(),l),a?.addEventListener?.("pagehide",j),x("recording")}async function z(){b||(b=!0,w(),!h&&(x("stopped"),g&&await g,await E({final:!0})))}return{start:X,stop:z,flush:E,get state(){return d}}}function fD(e,t){let[r,n]=(0,S2.useState)("idle");return(0,S2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=HJ({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 p_e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},f_e=(e,t)=>{let r=p_e[e]||{role:e,label:e};return{...Pn(r.role,t),label:r.label}},mD={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},m_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"],g_e=["user","assistant","tool"],h_e=1200,y_e=600*1e3,k2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",qJ=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()]},ms=e=>e?.context_id??e?.output_metadata?.context_id??null,Ax=e=>e.json().catch(()=>({})),KJ=({open:e,color:t})=>R.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}},R.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}));function v_e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=gD(e),i=hC(t);return R.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=f_e(s.kind,t);return R.default.createElement("div",{key:s.eid,"data-testid":"runner-activity-event"},R.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)"}:{}},R.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),R.default.createElement("div",{className:"min-w-0 flex-1"},R.default.createElement("div",{className:"text-sm break-words",style:{color:r.textPrimary}},s.label,s.output&&!l&&R.default.createElement("span",{style:{color:r.textMuted}}," \u201C",s.output.slice(0,160),s.output.length>160?"\u2026":"","\u201D")),R.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"?R.default.createElement("span",{className:"animate-pulse",style:{color:"#3b82f6"}},"running\u2026"):s.status==="awaiting"?R.default.createElement("span",{"data-testid":"runner-activity-awaiting",style:{color:"var(--color-warning-text)"}},"waiting for input"):R.default.createElement("span",{style:s.status==="error"?{color:"#ef4444"}:void 0},s.status==="error"?"failed":"\u2713",s.duration_ms!=null&&` ${k2(s.duration_ms)}`),s.at&&R.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&R.default.createElement(KJ,{open:l,color:r.textMuted})),l&&R.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&&R.default.createElement("div",null,R.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},"Input"),R.default.createElement("pre",{style:{...i,whiteSpace:"pre-wrap",maxHeight:"160px",overflowY:"auto"}},qJ(s.input))),s.output&&R.default.createElement("div",null,R.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:r.textMuted}},s.status==="error"?"Error":s.status==="awaiting"?"Asked":"Result"),R.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"}:{}}},qJ(s.output)))))}))}function x_e({run:e,darkMode:t,colors:r}){return e?R.default.createElement("div",{className:"flex items-center gap-3 flex-wrap text-xs",style:{color:r.textMuted}},R.default.createElement("span",{"data-testid":"runner-status",style:{display:"inline-flex"}},R.default.createElement(id,{tone:mD[e.status]||"neutral",darkMode:t},e.status)),e.output_metadata?.model&&R.default.createElement("span",{className:"font-mono",title:"Model that generated this run"},e.output_metadata.provider,"/",e.output_metadata.model),e.duration_ms?R.default.createElement("span",null,k2(e.duration_ms)):null,e.total_tokens?R.default.createElement("span",null,e.total_tokens," tokens"):null,e.trace_id&&R.default.createElement("a",{href:nt(`/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 hD({agent:e,onBack:t,recorderUrl:r=null}){let{darkMode:n}=ut(),o=Ui(n),a=e.action_prompts||e.actionPrompts||[],i=["ask",...a.map(de=>de.name).filter(Boolean)],[s,l]=(0,R.useState)("ask"),[u,c]=(0,R.useState)(""),[d,p]=(0,R.useState)([]),[f,m]=(0,R.useState)(!1),[y,b]=(0,R.useState)([]),[h,g]=(0,R.useState)(null),[v,x]=(0,R.useState)(null),[S,w]=(0,R.useState)(null),[A,k]=(0,R.useState)([]),[_,C]=(0,R.useState)(!1),[E,j]=(0,R.useState)(null),[X,z]=(0,R.useState)(null),[U,N]=(0,R.useState)(null),[O,D]=(0,R.useState)(null),[T,I]=(0,R.useState)({}),[P,H]=(0,R.useState)([]),[G,L]=(0,R.useState)(null),[Y,W]=(0,R.useState)(!1),[ie,Me]=(0,R.useState)(null),[pe,ce]=(0,R.useState)(!1),[Q,ee]=(0,R.useState)(!1),[$,B]=(0,R.useState)(null),[K,M]=(0,R.useState)(""),[ae,F]=(0,R.useState)(!1),[se,oe]=(0,R.useState)(null),ve=(0,R.useRef)(null),Re=(0,R.useRef)(null),tt=(0,R.useRef)(0),he=(0,R.useRef)(null),le=(0,R.useRef)(!1),Ze=(0,R.useRef)(!0),Je=(0,R.useRef)(null),it=(0,R.useRef)([]),wt=(0,R.useRef)(null),fr=(0,R.useRef)(null),vn=(0,R.useRef)(null),Ca=(0,R.useRef)(null),hs=fD(h,r),Aa=(v?.messages||[]).filter(de=>g_e.includes(de.role));(0,R.useEffect)(()=>{Je.current=X},[X]),(0,R.useEffect)(()=>{it.current=d},[d]),(0,R.useEffect)(()=>{Ze.current=!0,It();let de=VG(window.location.search);return de&&Q2(de),()=>{Ze.current=!1,tt.current+=1,Ni(Je.current),Ni({attachments:it.current}),z(null),p([])}},[e.id]),(0,R.useEffect)(()=>{xe(s)},[e.id,s]),(0,R.useEffect)(()=>{Re.current=h,h?rt(h):(x(null),w(null))},[h]),(0,R.useEffect)(()=>{let de=fr.current;de&&(de.scrollTop=de.scrollHeight)},[Aa.length,X,E?.logs?.length,E?.input_requests?.length,$,U]),(0,R.useEffect)(()=>{if(!Q)return;let de=Ie=>{Ca.current&&!Ca.current.contains(Ie.target)&&ee(!1)};return document.addEventListener("mousedown",de),()=>document.removeEventListener("mousedown",de)},[Q]);let It=async()=>{try{let Ie=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();k(Ie.runs||[])}catch(de){console.error("Failed to load runs:",de)}},xe=async de=>{try{let Ie=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(de)}`);if(!Ie.ok)throw new Error(`HTTP ${Ie.status}`);let $t=(await Ie.json()).conversations||[];b($t),g(xn=>xn&&(ve.current===xn||$t.some(Na=>Na.id===xn))?xn:$t[0]?.id??null)}catch(Ie){console.error("Failed to load conversations:",Ie),b([])}},rt=async de=>{try{let Ie=await fetch(`/api/interactions/${de}`);if(!Ie.ok)throw new Error(Ie.status===404?"Conversation not found":`HTTP ${Ie.status}`);let mt=await Ie.json();if(Re.current!==de)return;x(mt.interaction),w(null)}catch(Ie){if(Re.current!==de)return;x(null),w(Ie.message)}},ft=async()=>{let de=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:s})}),Ie=await Ax(de);if(!de.ok||!Ie.conversation)throw new Error(Ie.error||`Could not start a conversation (HTTP ${de.status})`);let mt=Ie.conversation;return b($t=>[mt,...$t.filter(xn=>xn.id!==mt.id)]),ve.current=mt.id,g(mt.id),mt.id},Jt=()=>Re.current?Promise.resolve(Re.current):ft(),Eo=de=>{ve.current=null,l(de)},Nn=de=>{le.current=de,C(de)},Ja=()=>{he.current?.waiting&&(he.current=null,Nn(!1))},Qa=()=>{Ja(),j(null),D(null),I({}),H([])},Fo=de=>{let Ie=de?Number(de):null;Ie!==Re.current&&Qa(),ve.current=Ie,g(Ie),N(null)},Qo=async()=>{if(!_)try{await ft(),w(null),N(null),Qa(),Ni(Je.current),z(null),B(null)}catch(de){w(de.message)}},Ni=de=>{(de?.attachments||[]).forEach(Ie=>{Ie.url&&Ie.url.startsWith("blob:")&&URL.revokeObjectURL(Ie.url)})},ju=de=>{let Ie=Array.from(de||[]).filter(Boolean);Ie.length!==0&&p(mt=>[...mt,...Ie.map($t=>({file:$t,filename:$t.name,content_type:$t.type||"application/octet-stream",byte_size:$t.size,kind:ZV($t),url:$t.type&&$t.type.startsWith("image/")?URL.createObjectURL($t):null}))])},kl=de=>{p(Ie=>{let mt=Ie[de];return mt?.url&&URL.revokeObjectURL(mt.url),Ie.filter(($t,xn)=>xn!==de)})},pa=(de,Ie)=>{Ni(Je.current),z(null),It();let mt=ms(de)??Ie;mt&&(mt!==Re.current?(ve.current=mt,g(mt)):rt(mt),xe(s))},to=(de,Ie)=>{he.current=null,Nn(!1),H([]),pa(de,Ie)},hf=(de,Ie)=>{he.current={id:de.id,contextId:ms(de)??Ie,waiting:!0},pa(de,Ie),NC()},dd=(de,Ie)=>{if(!Ze.current)return;let mt=++tt.current,$t=Date.now(),xn=async()=>{if(tt.current===mt){try{let Na=await fetch(`/api/runs/${de}`);if(Na.ok){let no=await Na.json();if(tt.current!==mt)return;j(no.run);let ei=WM(no.run);if(ei==="finished"){to(no.run,Ie);return}if(ei==="awaiting"){hf(no.run,Ie);return}}}catch{}Date.now()-$tNa&&{...Na,status:"failed",error_message:"Timed out waiting for the run to finish."}),D("Timed out waiting for the run to finish."))}};xn()},$u=async({text:de,files:Ie,fromComposer:mt=!1})=>{let $t=(de||"").trim();if(!$t&&Ie.length===0||_)return;D(null),N(null),B(null),Nn(!0),I({}),H([]),j({status:"pending",input_prompt:$t,output:"",logs:[],started_at:new Date().toISOString()}),Ni(Je.current),z({content:$t||"(see attached files)",attachments:Ie.map(({file:no,...ei})=>ei)}),mt&&(c(""),p([]));let xn=Re.current;if(!xn)try{xn=await ft()}catch(no){D(`${no.message} \u2014 running without a pinned conversation.`)}let Na=()=>{mt&&(c($t),p(Ie)),z(null)};try{let no=new FormData;no.append("prompt",$t),no.append("action_name",s),xn&&no.append("params[context_id]",String(xn)),Ie.forEach(({file:El})=>no.append("attachments[]",El,El.name));let ei=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:no}),Al=await Ax(ei);if(ei.status===402&&Al.upgrade_required){L(Al.usage),j(El=>({...El,status:"failed",error_message:Al.message||"Plan limit reached"})),Nn(!1),Na();return}if(!ei.ok)throw new Error(Al.error||"Run failed");dd(Al.run.id,ms(Al.run)??xn)}catch(no){j(ei=>({...ei,status:"failed",error_message:no.message})),Nn(!1),Na()}},Th=()=>$u({text:u,files:d,fromComposer:!0}),Vx=(de,Ie)=>{let mt=he.current;!mt||String(mt.id)!==String(de.run_id)||(H($t=>[...$t.filter(xn=>xn.request.id!==de.id),{request:de,outcome:Ie}]),he.current={...mt,waiting:!1},dd(mt.id,mt.contextId))},Oh=de=>{let Ie=WM(de);Ie==="finished"||le.current||(D(null),I({}),H([]),j(de),Nn(!0),Ie==="awaiting"?hf(de,ms(de)):dd(de.id,ms(de)))},Gx=(de,Ie)=>{ve.current=de,Ie&&i.includes(Ie)&&Ie!==s&&l(Ie),g(de)},Q2=async de=>{try{let Ie=await fetch(`/api/runs/${de}`);if(!Ie.ok)return;let mt=await Ie.json();if(!Ze.current||!mt.run||String(mt.agent?.id)!==String(e.id))return;let $t=ms(mt.run);$t&&Gx($t,mt.run.action_name),Oh(mt.run)}catch(Ie){console.error("Failed to open the linked run:",Ie)}},Qe=de=>{!de||!de.text||$u({text:de.text,files:[]})},Ti=de=>{de.key==="Enter"&&(de.metaKey||de.ctrlKey)&&(de.preventDefault(),Th())},Yx=async(de,Ie)=>{let mt=Re.current,$t=await fetch(`/api/interactions/${mt}/messages/${de.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:Ie})}),xn=await Ax($t);if(!$t.ok)throw new Error(xn.error||`Could not save the message (HTTP ${$t.status})`);await rt(mt)},ho=async de=>{let Ie=Re.current;try{let mt=await fetch(`/api/interactions/${Ie}/messages/${de.id}`,{method:"DELETE"});if(!mt.ok){let $t=await Ax(mt);throw new Error($t.error||`Could not delete the message (HTTP ${mt.status})`)}w(null),await rt(Ie),xe(s)}catch(mt){w(mt.message)}},Ph=de=>{ee(!1),B(de),M(""),oe(null)},fa=async()=>{let de=K.trim();if(!(!de||ae)){F(!0),oe(null);try{let Ie=await Jt(),mt=await fetch(`/api/interactions/${Ie}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:$,content:de})}),$t=await Ax(mt);if(!mt.ok)throw new Error($t.error||`Could not add the message (HTTP ${mt.status})`);M(""),B(null),await rt(Ie),xe(s)}catch(Ie){oe(Ie.message)}finally{F(!1)}}},Ra=async de=>{let Ie=de;if(ms(de)==null||de.status==="awaiting_input")try{let $t=await fetch(`/api/runs/${de.id}`);$t.ok&&(Ie=(await $t.json()).run)}catch($t){console.error("Failed to load run details:",$t)}let mt=ms(Ie);mt?(N(null),mt!==Re.current&&Qa(),Gx(mt,Ie.action_name||de.action_name),Oh(Ie)):N({...Ie,output:Ie.output??Ie.output_preview,error_message:Ie.error_message??Ie.error}),wt.current?.scrollIntoView({behavior:"smooth",block:"start"})},yf=async()=>{W(!0),Me(null);try{await hh({planSlug:"pro"})}catch(de){Me(de.message),W(!1)}},Ea=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,Mh=a.find(de=>de.name===s)?.prompt,_l=[e.instructions,s==="ask"?null:Mh].map(de=>(de||"").trim()).filter(Boolean).join(` +Who changed the shipping policy last week?`,style:{...Mu,width:"100%",fontFamily:K,fontSize:12,lineHeight:"18px"}}),ot.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. ",ot.default.createElement("code",{style:{fontFamily:K}},"# Heading")," lines group related tasks so they can be run together; ",ot.default.createElement("code",{style:{fontFamily:K}},"| tools: a, b")," names the tool a task should call.")),s.judgeKind==="judge_defined"?ot.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."):ot.default.createElement(ot.default.Fragment,null,ot.default.createElement("div",null,ot.default.createElement(We,{style:{display:"block",marginBottom:8}},"Rule-based criteria (sampled generations)"),ot.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},kD.map(A))),ot.default.createElement("div",null,ot.default.createElement(We,{style:{display:"block",marginBottom:8}},"Telemetry criteria (trace aggregates)"),ot.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:12}},WJ.map(A))),ot.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4"},ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"Must contain (optional pattern)"),ot.default.createElement("input",{type:"text",value:s.containsPattern,onChange:C=>b({containsPattern:C.target.value}),placeholder:"e.g. password reset",style:{...Mu,width:"100%"}})),ot.default.createElement("div",null,ot.default.createElement(We,{as:"label",style:{display:"block",marginBottom:6}},"LLM judge criterion (optional, needs provider credentials)"),ot.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:{...Mu,width:"100%"}})))),u&&ot.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},u),ot.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},ot.default.createElement(fe,{variant:"primary",type:"submit",disabled:d},d?s.scenariosText.trim()?"Creating & starting run\u2026":"Creating & running\u2026":"Create & Run"),i&&ot.default.createElement(fe,{onClick:i},"Cancel"))))}function n_e(e,t){return e?`The judge runs on ${r_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 o_e(e){let[t,r]=(0,ot.useState)([]);return(0,ot.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 a_e={background:"none",border:"none",padding:0,cursor:"pointer",fontFamily:K,fontSize:12,color:"var(--color-info)"},bo=(e=11,t="var(--color-text-muted)",r={})=>({fontFamily:K,fontSize:e,color:t,...r});function i_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},y0(e.reason,90)));let t=Number(e.score),r=yo[t>=.85?"success":t>=.7?"warning":"error"].strong,n=[];if(e.total!=null&&n.push(`${mo(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 ${jn(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 s_e({item:e,evaluation:t=null,run:r=null,number:n=null}){let o=()=>kJ({item:e,evaluation:t,run:r,runNumber:n,agentName:t?.agent?.name,dashboardUrl:b2()});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(Za,{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:K,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(fe,{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(I0,{build:o,style:{marginLeft:"auto"}})))}function CD({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:a_e},L),h=t.findIndex(L=>L.id===n),g=h>=0?t[h]:t[0],v=g?gh(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(Be,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(Be,null,Ae.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-muted)"}},"No runs recorded yet.")));let S=x0(g),w=S.length?S:[null],_=mh(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=fh(g).map(([L,G])=>({key:L,value:G,criterion:v0(e,L)})),I=L=>E.filter(G=>hl(G.criterion)===L).length,Q=II.filter(L=>I(L.id)>0),$=L=>w.some(G=>{let W=Jp(L.value,G);return W&&(W.skipped||W.score!=null&&W.score<.7)}),F=E.filter(L=>(p==="all"||hl(L.criterion)===p)&&(!m||$(L))),N=II.map(L=>({...L,rows:F.filter(G=>hl(G.criterion)===L.id)})).filter(L=>L.rows.length),O=l2(e,{...g,number:v}),j=Ai(g),T=vo(g.completed_at||g.created_at),D=g.status==="complete"&&g.samples_evaluated?` \xB7 ${mo(g.samples_passed||0,g.samples_evaluated)} passed`:"",M={fontFamily:K,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)",padding:"8px 12px",textAlign:"left",verticalAlign:"top",whiteSpace:"nowrap"},q={padding:"10px 12px",verticalAlign:"top"},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 ${Zp(e,g)}${D}`)),Ae.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},t.map((L,G)=>Ae.default.createElement(Dn,{key:L.id,square:!0,mono:!0,selected:L.id===g.id,onClick:()=>i?.(L),title:`${L.status} \xB7 ${vo(L.completed_at||L.created_at)}`},`#${gh(L,G,t,r)}`)),Ae.default.createElement(fe,{variant:"primary",disabled:a,onClick:s,testId:"run-again-button"},a?"Running\u2026":"Run again"))),Ae.default.createElement(ZI,{spend:j,judgedBy:ph(e,g)}),g.status==="failed"?Ae.default.createElement(Be,{"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(Be,{"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(M0,{rows:u2(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=VX(g,L),W=k(L),ie=W?.samples??(L==null?g.samples_evaluated:null),Me=W?.passed??(L==null?g.samples_passed:null),he=[];return G.below>0&&he.push({tone:"error",text:`below pass mark \xD7${G.below}`}),G.skipped>0&&he.push({tone:"warning",text:`skipped \xD7${G.skipped}`}),Ae.default.createElement(P0,{key:L||"all",label:L,short:L?xo(L).short:"all samples",provider:W?.provider||(L?xo(L).provider:null)||null,winner:!!A?.winner&&A.winner===L,passed:Me,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:Qp(W?.cost,W?.priced),estimated:W?.estimated??!1,unit:"interaction",badges:he})}))),(A||C.length>0)&&Ae.default.createElement(Be,{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:K,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(Be,{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(Dn,{selected:p==="all",onClick:()=>f("all")},`All ${E.length}`),Q.map(L=>Ae.default.createElement(Dn,{key:L.id,selected:p===L.id,onClick:()=>f(L.id)},`${L.label} ${I(L.id)}`)),Ae.default.createElement(Dn,{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}},xo(L).short),(k(L)?.provider||xo(L).provider)&&Ae.default.createElement("span",{style:{display:"block",fontWeight:400,textTransform:"none",letterSpacing:0}},k(L)?.provider||xo(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(he=>{let ce=Jp(he.value,G);return ce&&ce.score!=null}),ie=W.filter(he=>Jp(he.value,G).score>=.7).length,Me=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,Me,{fontWeight:600})},W.length?`${mo(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:q},Ae.default.createElement("div",{style:bo()},G.key),Ae.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)"}},a2(G.criterion))),Ae.default.createElement("td",{style:q},Ae.default.createElement("span",{style:{fontFamily:K,fontSize:11,padding:"2px 6px",border:"1px solid var(--color-border)",borderRadius:4,color:"var(--color-text-cell)",whiteSpace:"nowrap"},title:dh(G.criterion)},y0(dh(G.criterion),40))),w.map(W=>Ae.default.createElement("td",{key:W||"score",style:q},Ae.default.createElement(i_e,{stats:Jp(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?At(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(s_e,{key:L.kind,item:L,evaluation:e,run:g,number:v}))):Ae.default.createElement(Rr,{style:{border:"1px solid var(--color-border-light)",borderRadius:10,padding:"14px 12px",color:"var(--color-success-text)"}},`[+] Every criterion cleared the pass mark (${W1(.7)}) and nothing was skipped.`)),Ae.default.createElement(lf,{evaluation:e,run:g,spend:j,onDelete:c,deleting:d}))}var od=null,AD=new Set,qJ=()=>AD.forEach(e=>e(od));function l_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 od&&od.resolve(!1),new Promise(t=>{od={...l_e(e),resolve:t},qJ()})}function KJ(e){if(!od)return;let{resolve:t}=od;od=null,qJ(),t(!!e)}function VJ(){return od}function GJ(e){return AD.add(e),()=>AD.delete(e)}function YJ(e,t){return e?.requireText?t===e.requireText:!0}var XJ=()=>{let e=Gn().match(/^\/evaluations\/(\d+)\/runs\/(\d+)\/report/);if(e)return{evaluationId:e[1],runId:e[2]};let t=TI(window.location.search);return t?.runId?t:null},I2=()=>{let e=Gn().match(/^\/evaluations\/(\d+)(?:\/runs\/(\d+))?\/?$/);return e?{evaluationId:Number(e[1]),runId:e[2]?Number(e[2]):null}:null},ZJ=()=>TI(window.location.search)?.evaluationId||(I2()?String(I2().evaluationId):null),M2=(e=11,t="var(--color-text-muted)")=>({fontFamily:K,fontSize:e,color:t}),u_e=e=>{let t=hh(e),r=e.latest_run?.status==="failed"?1:0;return t?e.scenario_suite?(t.scores?._recommendations||[]).length+r:l2(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 z0({embedded:e=!1,agentId:t=null}){let{darkMode:r}=ut(),[n,o]=(0,je.useState)(()=>e?null:XJ()),a=(0,je.useRef)(null),[i,s]=(0,je.useState)(0),[l,u]=(0,je.useState)(null);(0,je.useEffect)(()=>{let xe=a.current?.contentDocument?.body;if(!xe)return;let rt=()=>u(xe.scrollHeight);if(rt(),typeof ResizeObserver>"u")return window.addEventListener("resize",rt),()=>window.removeEventListener("resize",rt);let ht=new ResizeObserver(rt);return ht.observe(xe),()=>ht.disconnect()},[i,n]),(0,je.useEffect)(()=>u(null),[n]);let[c,d]=(0,je.useState)([]),[p,f]=(0,je.useState)([]),[m,y]=(0,je.useState)(void 0),[x,h]=(0,je.useState)(!1),[g,v]=(0,je.useState)(void 0),[b,S]=(0,je.useState)(!0),[w,_]=(0,je.useState)(null),[k,A]=(0,je.useState)(null),[C,E]=(0,je.useState)(()=>{if(e)return null;let xe=I2();return xe?.runId?xe:null}),[I,Q]=(0,je.useState)(()=>e?null:ZJ()),[$,F]=(0,je.useState)({}),[N,O]=(0,je.useState)(!1),[j,T]=(0,je.useState)(null),[D,M]=(0,je.useState)(null),[q,V]=(0,je.useState)(null),[L,G]=(0,je.useState)(!1),[W,ie]=(0,je.useState)(0);(0,je.useEffect)(()=>{if(e)return;let xe=()=>{o(XJ());let rt=I2();E(rt?.runId?rt:null);let ht=ZJ();Q(ht),ht&&A(Xt=>new Set([...Xt||[],Number(ht)]))};return window.addEventListener("popstate",xe),window.addEventListener("dashboard:navigate",xe),()=>{window.removeEventListener("popstate",xe),window.removeEventListener("dashboard:navigate",xe)}},[e]);let Me=(0,je.useCallback)(async()=>{try{let xe=new URLSearchParams;t&&xe.set("agent_id",t),L&&xe.set("archived","1");let rt=xe.toString(),ht=await fetch(`/api/evaluations${rt?`?${rt}`:""}`);if(!ht.ok)throw new Error(`Request failed (${ht.status})`);let Xt=await ht.json();ie(Number(Xt.archived_count)||0),y(Xt.judge_provider??null),h(Xt.judge_provider_error===!0),v(Array.isArray(Xt.model_providers)?Xt.model_providers:null);let ro=Xt.evaluations||[],Mo=null;try{ro=await UX(ro,I,fetch)}catch(Io){Mo=Io.message}d(ro),A(Io=>{if(Io)return Io;let Oi=I?ro.find(no=>String(no.id)===I):ro.find(no=>no.scenario_suite)||ro[0];return new Set(Oi?[Oi.id]:[])}),_(Mo)}catch(xe){_(xe.message),v(rt=>rt===void 0?null:rt)}finally{S(!1)}},[t,I,L]),he=(0,je.useCallback)(async xe=>{try{let rt=await fetch(`/api/evaluations/${xe}`);if(!rt.ok)throw new Error(`Could not load this evaluation's runs (HTTP ${rt.status})`);let ht=await rt.json();F(Xt=>({...Xt,[xe]:{runs:ht.evaluation?.runs||[],runCount:ht.evaluation?.run_count??null}}))}catch(rt){F(ht=>({...ht,[xe]:{runs:null,runCount:null,error:rt.message}})),_(rt.message)}},[]);(0,je.useEffect)(()=>{Me(),fetch("/api/agents").then(xe=>xe.ok?xe.json():{agents:[]}).then(xe=>f(xe.agents||[])).catch(()=>f([]))},[Me]),(0,je.useEffect)(()=>{new Set([...k||[],...C?[C.evaluationId]:[]]).forEach(rt=>{let ht=c.find(Xt=>Xt.id===rt);ht&&!ht.scenario_suite&&!$[rt]&&he(rt)})},[k,C,c,$,he]);let ce=xe=>{!e&&Gn()!==xe&&Jc(xe)},R=xe=>!!k?.has(xe),te=xe=>{let rt=!R(xe.id);A(ht=>{let Xt=new Set(ht||[]);return rt?Xt.add(xe.id):Xt.delete(xe.id),Xt}),ce(rt?`/evaluations/${xe.id}`:"/evaluations")},z=(xe,rt)=>{A(ht=>new Set([...ht||[],xe.id])),E({evaluationId:xe.id,runId:rt.id}),ce(`/evaluations/${xe.id}/runs/${rt.id}`)},ee=xe=>{E(null),ce(xe?`/evaluations/${xe}`:"/evaluations")},U=async xe=>{T(xe.id),_(null);try{let rt=await fetch(`/api/evaluations/${xe.id}/run`,{method:"POST"}),ht=await rt.json().catch(()=>({}));if(!rt.ok){_((ht.errors||[ht.error]).filter(Boolean).join(", ")||`Run failed (HTTP ${rt.status})`);return}await Promise.all([Me(),he(xe.id)]),ht.run&&C?.evaluationId===xe.id&&z(xe,ht.run)}finally{T(null)}},P=async(xe,rt)=>{V(xe.id),_(null);try{let ht=await fetch(`/api/evaluations/${xe.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({evaluation:{archived:rt}})}),Xt=await ht.json().catch(()=>({}));if(!ht.ok){_((Xt.errors||[Xt.error]).filter(Boolean).join(", ")||`${rt?"Archive":"Unarchive"} failed (HTTP ${ht.status})`);return}await Me()}finally{V(null)}},Y=async xe=>{if(await Wr({title:`Delete ${xe.name}?`,message:"Its runs are deleted with it. This cannot be undone.",confirmLabel:"Delete evaluation",danger:!0,requireText:xe.name})){M(xe.id),_(null);try{let rt=await fetch(`/api/evaluations/${xe.id}`,{method:"DELETE"});rt.ok||rt.status===404?(d(ht=>ht.filter(Xt=>Xt.id!==xe.id)),A(ht=>{let Xt=new Set(ht||[]);return Xt.delete(xe.id),Xt}),C?.evaluationId===xe.id&&ee(null)):_(`Delete failed (HTTP ${rt.status})`)}finally{M(null)}}};if(b)return je.default.createElement("div",{className:"flex items-center justify-center h-64"},je.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}}));let B=t?c.filter(xe=>String(xe.agent?.id)===String(t)):c,se=xe=>{let rt=$[xe.id];return rt?.runs?{runs:rt.runs,runCount:xe.run_count??rt.runCount??null,loaded:!0}:{runs:xe.latest_run?[xe.latest_run]:[],runCount:xe.run_count??null,loaded:!1}};if(n){let xe=et(`/api/evaluations/${n.evaluationId}/runs/${n.runId}/report`),rt=`${xe}?theme=${r?"dark":"light"}`;return je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},je.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},je.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12}},je.default.createElement(fe,{size:"sm",onClick:()=>{Jc("/evaluations"),o(null)}},je.default.createElement("span",{style:{fontFamily:K}},"<-")," Evaluations"),je.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Run report"),je.default.createElement("span",{style:M2(11)},`evaluation ${n.evaluationId} \xB7 run ${n.runId}`)),je.default.createElement("a",{href:xe,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 ",je.default.createElement("span",{style:{fontFamily:K}},"->"))),je.default.createElement("iframe",{ref:a,src:rt,title:"Evaluation run report",onLoad:()=>s(ht=>ht+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 xe=B.find(rt=>rt.id===C.evaluationId);if(!xe||!xe.scenario_suite){let{runs:rt,runCount:ht,loaded:Xt}=xe?se(xe):{runs:[],runCount:null,loaded:!0};return je.default.createElement(CD,{evaluation:xe,runs:rt,runCount:ht,runId:C.runId,loading:!Xt,running:j===C.evaluationId,onSelectRun:ro=>z(xe,ro),onRun:()=>U(xe),onBack:()=>ee(null),onOpenEvaluation:()=>ee(C.evaluationId),onDelete:xe?()=>Y(xe):void 0,deleting:D===C.evaluationId})}}let ne=RX(B,{focusId:I}),{samplesScored:ye,samplesPassed:at,passRatio:it,spend:pe}=ne,ue=eZ(ne),Ze=[...new Set(B.map(xe=>xe.agent?.name).filter(Boolean))],Je=B.reduce((xe,rt)=>Math.max(xe,DI(rt,hh(rt)||rt.latest_run)),0),tt=B.map(u_e),_t=tt.reduce((xe,rt)=>xe+rt,0),Ut=tt.filter(Boolean).length,tn=B.length?[`${At(Ze.length,"agent")} \xB7 ${Je>1?`${Je} models compared`:"no model comparisons"}`,ue].filter(Boolean).join(" \xB7 "):"none defined yet",Po=ne.focused?"headline run of this evaluation":`headline run of ${At(ne.counted,"current evaluation")}${ue?` \xB7 ${ue}`:""}`,ys=ne.perModel.length>1?ne.perModel.map(xe=>`${xe.label} ${mo(xe.passed,xe.total)}`):[],Ti=pe.agentCost!=null&&pe.estimated||pe.judgeCost!=null&&pe.judgeEstimated,wt=pe.agentCost!=null?je.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:4}},je.default.createElement("span",{"data-testid":"stat-agent-cost-scope"},`over ${At(pe.interactions,"interaction")}`),je.default.createElement("span",{style:{display:"grid",gridTemplateColumns:"max-content minmax(0, 1fr)",columnGap:10,rowGap:2,fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},je.default.createElement("span",null,"agent"),je.default.createElement("span",{"data-testid":"stat-agent-cost-agent",style:{color:"var(--color-text-cell)"}},Pr(pe.agentCost,{estimated:pe.estimated})),je.default.createElement("span",null,"judge"),je.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"},pe.judgeCost!=null?`${Pr(pe.judgeCost,{estimated:pe.judgeEstimated})} \xB7 offline`:"none")),Ti&&je.default.createElement("span",{title:Rs,style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},"~ estimated")):"no priced runs yet";return je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:20}},je.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},!e&&je.default.createElement("div",{style:{flex:1,minWidth:260}},je.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Evaluations"),je.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.")),je.default.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12}},(W>0||L)&&je.default.createElement(fe,{size:"sm",onClick:()=>G(xe=>!xe),testId:"show-archived-toggle",title:"Archived evaluations keep their runs but leave the list and the tiles"},L?"Hide archived":`Show archived (${W})`),je.default.createElement(fe,{variant:"primary",onClick:()=>O(!N),testId:"new-evaluation-button"},N?"Cancel":"New Evaluation"))),w&&je.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&&je.default.createElement(_D,{agents:p,agentId:t,judgeProvider:m,judgeProviderError:x,modelProviders:g,onCancel:()=>O(!1),onCreated:async xe=>{O(!1),await Me(),xe?.id!=null&&(A(rt=>new Set([...rt||[],xe.id])),ce(`/evaluations/${xe.id}`))}}),je.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16}},je.default.createElement(oh,{label:"Evaluations",value:B.length,sub:tn,testId:"stat-evaluations"}),je.default.createElement(oh,{label:"Samples scored",value:ye,sub:Po,testId:"stat-samples-scored"}),je.default.createElement(oh,{label:"Pass rate",value:xm(it),valueColor:it==null?"var(--color-text-muted)":yo[Au(it)].strong,sub:it==null?ue||"no completed runs yet":je.default.createElement("span",{style:{display:"flex",flexDirection:"column",gap:2}},je.default.createElement("span",{"data-testid":"stat-pass-rate-fraction"},`${at}/${ye} passed`),ys.map(xe=>je.default.createElement("span",{key:xe,style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"},"data-testid":"stat-pass-rate-model"},xe))),testId:"stat-pass-rate"}),je.default.createElement(oh,{label:"To fix",value:_t,valueColor:_t?"var(--color-error)":void 0,sub:_t?`across ${At(Ut,"evaluation")}`:"nothing outstanding",testId:"stat-to-fix"}),je.default.createElement(oh,{label:"Cost / interaction",value:Ou(pe.perInteraction,pe.estimated),valueColor:pe.perInteraction==null?"var(--color-text-muted)":void 0,sub:wt,testId:"stat-agent-cost"})),je.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},B.map((xe,rt)=>{let ht=xe.latest_run,Xt=hh(xe),ro=ht&&Xt&&ht.id!==Xt.id?ht:null,Mo=$I(xe),Io=c_e[Mo],Oi=Mo==="archived",no=R(xe.id),oo=!!xe.scenario_suite,kl=tt[rt],cd=(xe.criteria||[]).some(io=>hl(io)==="telemetry"),{runs:_l,runCount:ao}=se(xe);return je.default.createElement(Be,{key:xe.id,padding:0,testId:"evaluation-card","data-telemetry":cd?"true":"false","data-kind":oo?"suite":"sampling","data-open":no?"true":"false","data-standing":Mo,style:{overflow:"hidden",opacity:Oi?.75:1}},je.default.createElement("div",{role:"button",tabIndex:0,"aria-expanded":no,onClick:()=>te(xe),onKeyDown:io=>{(io.key==="Enter"||io.key===" ")&&(io.preventDefault(),te(xe))},className:"hover:bg-[var(--color-hover)]",style:{display:"flex",alignItems:"center",gap:10,rowGap:8,padding:"12px 16px",cursor:"pointer",flexWrap:"wrap"}},je.default.createElement(Za,{kind:"chevron",open:no}),je.default.createElement("span",{style:{width:22,height:22,borderRadius:6,background:"var(--color-muted)",display:"inline-flex",alignItems:"center",justifyContent:"center",fontFamily:K,fontSize:11,fontWeight:700,color:"var(--color-text-secondary)",flexShrink:0},title:oo?"scenario suite":"sampling evaluation"},oo?"=":"~"),je.default.createElement("span",{style:{fontSize:15,fontWeight:700,color:"var(--color-text-primary)"}},xe.name),je.default.createElement("span",{style:M2(11)},`@${xe.agent?.name||"agent"} \xB7 ${Zp(xe)}`),je.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:12,flexShrink:0}},je.default.createElement("span",{style:M2(11)},vo(ht?.completed_at||ht?.created_at||xe.created_at)),kl>0&&je.default.createElement("span",{style:M2(11,"var(--color-error)")},`${kl} to fix`),Io&&je.default.createElement(Ce,{tone:Io.tone,size:10,style:{padding:"1px 6px"},title:Io.title,testId:"evaluation-standing"},Io.text),ro&&je.default.createElement(af,{run:ro,testId:"evaluation-newer-run-badge"}),je.default.createElement(af,{run:Xt||ht,testId:oo?"suite-pass-badge":"evaluation-pass-badge"}),je.default.createElement("button",{type:"button",onClick:io=>{io.stopPropagation(),P(xe,!Oi)},disabled:q===xe.id,title:Oi?"Bring this evaluation back into the list and the tiles":"Archive: keep its runs, leave it out of the list and the tiles","data-testid":"evaluation-archive-toggle",style:{background:"transparent",border:"none",padding:0,cursor:q===xe.id?"not-allowed":"pointer",fontFamily:K,fontSize:11,color:"var(--color-text-muted)",opacity:q===xe.id?.5:1}},q===xe.id?"\u2026":Oi?"unarchive":"archive"))),no&&je.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},oo?je.default.createElement(SD,{evaluation:xe,modelProviders:g,onChanged:Me,onDelete:()=>Y(xe),deleting:D===xe.id,initialRunId:C?.evaluationId===xe.id?C.runId:null,onRunSelected:io=>ce(`/evaluations/${xe.id}/runs/${io}`)}):je.default.createElement("div",{style:{padding:16,display:"flex",flexDirection:"column",gap:12},"data-testid":"sampling-evaluation-panel"},je.default.createElement("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},je.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},_l.length?GZ(_l,ao):`@${xe.agent?.name||"agent"} \xB7 no runs yet`),je.default.createElement(fe,{variant:"primary",size:"sm",disabled:j===xe.id,onClick:io=>{io.stopPropagation(),U(xe)},testId:"evaluation-run-button"},j===xe.id?"Running\u2026":`Run ${Zp(xe)}`)),je.default.createElement(eD,{runs:_l,runCount:ao,evaluation:xe,agentName:xe.agent?.name,previousRun:xe.previous_run,onOpen:io=>z(xe,io),testId:"evaluation-runs-panel"}),je.default.createElement(lf,{evaluation:xe,run:ht,spend:Ai(ht),onDelete:()=>Y(xe),deleting:D===xe.id}))))})),B.length===0&&!N&&je.default.createElement(Be,{style:{textAlign:"center",padding:"48px 20px"}},je.default.createElement("div",{style:{fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"No evaluations yet"),je.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 Ue=Z(J());var d_e=e=>new Date(`${e}T00:00:00`),p_e=[{id:"overview",label:"Overview"},{id:"traces",label:"Traces"},{id:"interactions",label:"Interactions"}];function ED({agent:e,onBack:t,embedded:r=!1}){let{darkMode:n}=ut(),o=Wi(n),[a,i]=(0,Ue.useState)(null),[s,l]=(0,Ue.useState)(!0),{timeWindow:u,days:c}=pl(),[d,p]=(0,Ue.useState)("overview");(0,Ue.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 Ue.default.createElement("div",{className:"flex items-center justify-center h-64"},Ue.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let h=a?.runs_by_day?.length>0?Math.max(...a.runs_by_day.map(v=>v.count)):1,g=r?"overview":d;return Ue.default.createElement("div",{className:"space-y-6"},r?Ue.default.createElement("div",{className:"flex items-center justify-end gap-2"},u.minutes<1440&&Ue.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ue.default.createElement(fl,null)):Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",{className:"flex items-center space-x-4"},Ue.default.createElement("button",{onClick:t,className:"p-2 transition-colors",style:{color:o.textMuted}},Ue.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),Ue.default.createElement("div",null,Ue.default.createElement("h1",{className:"text-2xl font-bold",style:{color:o.textPrimary}},e.name," Analytics"),Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Performance metrics and usage data"))),Ue.default.createElement("div",{className:"flex items-center gap-2"},u.minutes<1440&&Ue.default.createElement("span",{className:"text-xs",style:{color:o.textMuted},title:"This view aggregates by day"},"showing 1 day"),Ue.default.createElement(fl,null))),!r&&Ue.default.createElement("div",{className:"flex rounded-lg p-1 w-fit",style:{background:o.mutedBg}},p_e.map(v=>Ue.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"&&Ue.default.createElement(Hp,{agentId:e.id,embedded:!0}),g==="interactions"&&Ue.default.createElement(Tu,{agentId:e.id,embedded:!0}),g==="overview"&&Ue.default.createElement(Ue.default.Fragment,null,Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ue.default.createElement(D2,{title:"Total Runs",value:a?.summary?.total_runs||0,icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})),color:"rose",colors:o,darkMode:n}),Ue.default.createElement(D2,{title:"Success Rate",value:`${a?.summary?.success_rate||0}%`,icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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}),Ue.default.createElement(D2,{title:"Avg Duration",value:m(a?.summary?.avg_duration_ms),icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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}),Ue.default.createElement(D2,{title:"Total Tokens",value:y(a?.summary?.total_tokens),icon:Ue.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},Ue.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})),Ue.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ue.default.createElement("div",{className:"lg:col-span-2 rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Runs Over Time"),a?.runs_by_day?.length>0?Ue.default.createElement("div",{className:"h-48"},Ue.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},a.runs_by_day.map((v,b)=>Ue.default.createElement("div",{key:v.date,className:"flex-1 flex flex-col items-center group"},Ue.default.createElement("div",{className:"relative w-full"},Ue.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${v.count/h*150}px`,minHeight:v.count>0?"4px":"0"}}),Ue.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap"},v.count," runs")),(b===0||b===a.runs_by_day.length-1||a.runs_by_day.length<=7)&&Ue.default.createElement("span",{className:"text-xs mt-2 transform -rotate-45 origin-left",style:{color:o.textMuted}},d_e(v.date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))))):Ue.default.createElement("div",{className:"h-48 flex items-center justify-center",style:{color:o.textMuted}},"No data for this period")),Ue.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Status Breakdown"),Object.keys(a?.status_breakdown||{}).length>0?Ue.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 Ue.default.createElement("div",{key:v},Ue.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ue.default.createElement("span",{className:"capitalize",style:{color:o.textSecondary}},v),Ue.default.createElement("span",{className:"font-medium",style:{color:o.textPrimary}},b," (",w,"%)")),Ue.default.createElement("div",{className:"h-2 rounded-full overflow-hidden",style:{background:o.trackBg}},Ue.default.createElement("div",{className:`h-full ${x(v)} rounded-full transition-all`,style:{width:`${w}%`}})))})):Ue.default.createElement("div",{className:"h-32 flex items-center justify-center",style:{color:o.textMuted}},"No runs yet"))),a?.recent_errors?.length>0&&Ue.default.createElement("div",{className:"rounded-xl border p-6",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("h3",{className:"font-semibold mb-4",style:{color:o.textPrimary}},"Recent Errors"),Ue.default.createElement("div",{className:"space-y-3"},a.recent_errors.map(v=>Ue.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"}},Ue.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"},Ue.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"})),Ue.default.createElement("div",{className:"flex-1 min-w-0"},Ue.default.createElement("p",{className:"text-sm",style:{color:n?"#fca5a5":"#991b1b"}},v.error||"Unknown error"),Ue.default.createElement("p",{className:"text-xs mt-1",style:{color:n?"#f87171":"#dc2626"}},new Date(v.created_at).toLocaleString())))))),Ue.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Completed Runs"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.completed_runs||0)),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Failed Runs"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.summary?.failed_runs||0)),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Avg Tokens/Run"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},y(a?.summary?.avg_tokens_per_run))),Ue.default.createElement("div",{className:"rounded-lg p-4",style:{background:o.innerBg}},Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},"Period"),Ue.default.createElement("p",{className:"text-2xl font-bold",style:{color:o.textPrimary}},a?.period_days||30," days")))))}var JJ={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 D2({title:e,value:t,icon:r,color:n,colors:o,darkMode:a}){let[i,s,l]=JJ[n]||JJ.rose;return Ue.default.createElement("div",{className:"rounded-xl border p-4",style:{background:o.cardBg,borderColor:o.cardBorder}},Ue.default.createElement("div",{className:"flex items-center justify-between"},Ue.default.createElement("div",null,Ue.default.createElement("p",{className:"text-sm",style:{color:o.textSecondary}},e),Ue.default.createElement("p",{className:"text-2xl font-bold mt-1",style:{color:o.textPrimary}},t)),Ue.default.createElement("div",{className:"p-3 rounded-lg",style:{background:a?s:l,color:i}},r)))}var me=Z(J());var f_e={active:"success",configured:"info",available:"warning",idle:"muted"},m_e={agent_defined:"success",dashboard:"success",mcp:"info"},QJ="44px minmax(0, 1fr) 108px 60px 52px 58px 74px 26px",RJ="26px minmax(0, 1fr) 108px 52px 52px 52px 74px 64px",g_e=[{value:"enabled",label:"Enabled"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],eQ={padding:"7px 16px",gap:10,alignItems:"end",background:"var(--color-muted)",fontFamily:K,fontSize:10,fontWeight:600,letterSpacing:"0.05em",textTransform:"uppercase",color:"var(--color-text-muted)"},bl={fontFamily:K,fontSize:11,textAlign:"right",color:"var(--color-text-primary)"},j2={whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"};function nQ({on:e,onClick:t,title:r}){return me.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"}},me.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 tQ({on:e,dim:t=!1}){return me.default.createElement("span",{"aria-hidden":"true",style:{width:16,height:16,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontFamily:K,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 h_e({tool:e,state:t,onToggle:r}){if(!t)return me.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.`),me.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"}},me.default.createElement(nQ,{on:n,title:o,onClick:()=>r(e)}))}function $2({children:e,onClick:t,disabled:r,title:n}){return me.default.createElement("button",{type:"button",onClick:t,disabled:r,title:n,style:{padding:"3px 9px",borderRadius:6,background:"transparent",fontFamily:K,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 rQ({children:e}){return me.default.createElement("div",{style:{overflowX:"auto"}},me.default.createElement("div",{style:{minWidth:800}},e))}function ND({agent:e,formData:t,updateField:r,onSave:n,hasChanges:o=!1,isLoading:a}){let[i,s]=(0,me.useState)(null),[l,u]=(0,me.useState)(null),[c,d]=(0,me.useState)("7d"),[p,f]=(0,me.useState)(""),[m,y]=(0,me.useState)(null),[x,h]=(0,me.useState)(null),[g,v]=(0,me.useState)(!1),[b,S]=(0,me.useState)(null),[w,_]=(0,me.useState)({}),k=(V1.find(U=>U.value===c)||V1[1]).hours;(0,me.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,me.useMemo)(()=>({services:[],tools:[]}),[]),C=i||A,E=(0,me.useMemo)(()=>t.tools||[],[t.tools]),I=(0,me.useMemo)(()=>t.mcp_servers||[],[t.mcp_servers]),Q=(0,me.useMemo)(()=>t.approval_required_tools||[],[t.approval_required_tools]),$=(0,me.useMemo)(()=>K1(C,I),[C,I]),F=(0,me.useMemo)(()=>h6(C,$,{query:p,filter:m}),[C,$,p,m]),N=(0,me.useMemo)(()=>v6(C,$,E,{query:p,source:x,enabledOnly:g}),[C,$,E,p,x,g]),O=(0,me.useMemo)(()=>x6(C,$,E,{range:c}),[C,$,E,c]),j=(0,me.useMemo)(()=>S6(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,me.useCallback)(U=>{r("mcp_servers",k6(C,U,I))},[C,I,r]),q=(0,me.useCallback)(U=>{let P=$[U.key];M({...$,[U.key]:{...P,on:!P.on}})},[$,M]),V=(0,me.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,me.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,me.useCallback)(U=>{r("tools",_6(C,U));let P=km(U.filter(Y=>!E.includes(Y)));P.length>0&&r("approval_required_tools",cT(Q,P,!0))},[C,E,Q,r]),W=(0,me.useCallback)(U=>{U.editable&&G(U.on?E.filter(P=>P!==U.key):[...E,U.key])},[E,G]),ie=(0,me.useCallback)((U,P)=>{U.editable&&G(P?[...E,...U.keys.filter(Y=>!E.includes(Y))]:E.filter(Y=>!U.keys.includes(Y)))},[E,G]),Me=(0,me.useCallback)(U=>{r("approval_required_tools",w6(Q,U,e.approval_required_tools||[]))},[Q,e,r]),he=(0,me.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),ee=N.reduce((U,P)=>U+P.total,0);return l?me.default.createElement(Be,null,me.default.createElement(We,null,"Tools & MCP services"),me.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-error-text)"}},"Could not load the roster: ",l)):i?me.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},me.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},me.default.createElement("div",{style:{flex:1,minWidth:260}},me.default.createElement("h2",{style:{margin:0,fontSize:16,fontWeight:600,color:"var(--color-text-primary)"}},"Tools & MCP services"),me.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.")),me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.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)"}},me.default.createElement("span",{style:{fontFamily:K,fontSize:12,color:"var(--color-text-muted)"}},"?"),me.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}})),me.default.createElement(cs,{options:V1,value:c,onChange:d}))),me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:12}},O.map(U=>me.default.createElement(Be,{key:U.key,padding:"14px 16px",testId:`roster-stat-${U.key}`},me.default.createElement(We,{size:11,spacing:"0.05em"},U.label),me.default.createElement("div",{style:{marginTop:6,fontFamily:K,fontSize:26,fontWeight:700,lineHeight:1.1,color:U.tone==="warning"?"var(--color-warning)":"var(--color-text-primary)"}},U.value),me.default.createElement("div",{style:{marginTop:5,fontSize:12,color:"var(--color-text-secondary)",textWrap:"pretty"}},U.sub)))),me.default.createElement(Be,{padding:0,style:{overflow:"hidden"},testId:"mcp-services-card"},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},me.default.createElement(We,null,"MCP services"),me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},ce.length," of ",(C.services||[]).length," enabled \xB7 ",R?R.total:0," tools offered"),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},me.default.createElement(Dn,{selected:!m,onClick:()=>y(null)},"All ",(C.services||[]).length),g_e.map(U=>me.default.createElement(Dn,{key:U.value,selected:m===U.value,onClick:()=>y(m===U.value?null:U.value)},U.label,U.value==="enabled"?` ${ce.length}`:"")),me.default.createElement(vn,{href:et("/mcp"),onClick:()=>lt("/mcp"),title:"Every MCP service this workspace knows",style:{marginLeft:4}},"manage servers"))),me.default.createElement(rQ,null,me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:QJ,...eQ}},me.default.createElement("span",null,"On"),me.default.createElement("span",null,"Service"),me.default.createElement("span",null,"Status"),me.default.createElement("span",{style:{textAlign:"right"}},"Tools"),me.default.createElement("span",{style:{textAlign:"right"}},"Calls"),me.default.createElement("span",{style:{textAlign:"right"}},"Errors"),me.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),me.default.createElement("span",null)),F.map(U=>{let P=b===U.key;return me.default.createElement("div",{key:U.key},me.default.createElement("div",{className:"aa-roster-row","data-on":U.on?"true":"false","data-testid":`service-row-${U.key}`,style:{display:"grid",gridTemplateColumns:QJ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)"}},me.default.createElement(nQ,{on:U.on,onClick:()=>q(U),title:`${U.on?"Disable":"Enable"} ${U.name} for this agent`}),me.default.createElement("div",{onClick:()=>S(P?null:U.key),style:{minWidth:0,cursor:"pointer"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},U.name),U.first_party&&me.default.createElement(Ce,{tone:"accent",size:10},"first-party"),Wd(U)&&me.default.createElement(Ce,{tone:"info",size:10,title:"The app runtime of a checkout sandbox started from Settings \u2192 Integrations"},"sandbox runtime"),Qy(U)&&me.default.createElement(Ce,{tone:"warning",size:10,title:"This checkout sandbox has stopped; the agent still names its runtime"},"not running"),G1(U)&&me.default.createElement(Ce,{size:10,title:"Seen in your traffic but not in the platform catalog"},"undocumented"),U.partial&&me.default.createElement(Ce,{tone:"warning",size:10},U.partialLabel)),me.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...j2}},U.description)),me.default.createElement("span",null,me.default.createElement(Ce,{tone:f_e[U.status]||"muted"},U.status)),me.default.createElement("span",{style:{...bl,color:U.on?"var(--color-text-primary)":"var(--color-text-muted)"}},U.toolsLabel),me.default.createElement("span",{style:bl},D(U.calls)),me.default.createElement("span",{style:{...bl,color:U.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},D(U.errors)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-muted)"}},D(Jy(U.last_seen))),me.default.createElement("span",{onClick:()=>S(P?null:U.key),style:{cursor:"pointer",textAlign:"center"}},me.default.createElement(Za,{kind:"chevron",open:P}))),P&&me.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)",background:"var(--color-background)",padding:"10px 16px 12px"}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginBottom:8}},me.default.createElement(We,{size:10,color:"var(--color-text-muted)"},"Tools offered"),me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},U.transport),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},me.default.createElement($2,{onClick:()=>L(U,!0),title:`Offer every tool ${U.name} serves`},"all"),me.default.createElement($2,{onClick:()=>L(U,!1),disabled:!U.on,title:`Offer none of ${U.name}'s tools`},"none"))),U.tools.length===0?me.default.createElement(Rr,{style:{padding:"10px 0"}},m6(U)):me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:"6px 14px"}},U.tools.map(Y=>me.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}},me.default.createElement(tQ,{on:Y.on,dim:!U.on}),me.default.createElement("span",{style:{minWidth:0}},me.default.createElement("span",{style:{display:"block",fontFamily:K,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)",...j2}},Y.name),me.default.createElement("span",{style:{display:"block",fontSize:11,color:"var(--color-text-muted)",...j2}},Y.description)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-secondary)"}},D(Y.calls)),me.default.createElement("span",{style:{...bl,color:Y.errors?"var(--color-error-text)":"var(--color-text-muted)"}},D(Y.errors?`${Y.errors} err`:lT(Y.avg_duration_ms)))))),!U.on&&me.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&&me.default.createElement(Rr,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no services match "${p}"`:"no MCP services yet"))),me.default.createElement(Be,{padding:0,style:{overflow:"hidden"},testId:"tools-card"},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"12px 16px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},me.default.createElement(We,null,"Tools"),me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},z," enabled of ",ee," available"),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},me.default.createElement(Dn,{selected:!x,onClick:()=>h(null)},"All ",ee),N.map(U=>me.default.createElement(Dn,{key:U.source,selected:x===U.source,onClick:()=>h(x===U.source?null:U.source)},U.name," ",U.total)),me.default.createElement(Dn,{square:!0,mono:!0,selected:g,onClick:()=>v(!g),style:{marginLeft:4}},g?"[x] enabled only":"[ ] enabled only"))),me.default.createElement(rQ,null,me.default.createElement("div",{style:{display:"grid",gridTemplateColumns:RJ,...eQ}},me.default.createElement("span",null),me.default.createElement("span",null,"Tool"),me.default.createElement("span",null,"Source"),me.default.createElement("span",{style:{textAlign:"right"}},"Calls"),me.default.createElement("span",{style:{textAlign:"right"}},"Errors"),me.default.createElement("span",{style:{textAlign:"right"}},"Avg"),me.default.createElement("span",{style:{textAlign:"right"}},"Last seen"),me.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 me.default.createElement("div",{key:U.source},me.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"}},me.default.createElement("span",{onClick:()=>_({...w,[U.source]:P}),style:{cursor:"pointer",display:"inline-flex",alignItems:"center",gap:10}},me.default.createElement(Za,{kind:"chevron",open:P}),me.default.createElement("span",{style:{fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},U.name)),me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},U.meta),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:8}},me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-cell)"}},U.countLabel),U.editable&&me.default.createElement(me.default.Fragment,null,me.default.createElement($2,{onClick:()=>ie(U,!0)},"all"),me.default.createElement($2,{onClick:()=>ie(U,!1)},"none")))),P&&U.rows.map(Y=>me.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:RJ,gap:10,alignItems:"center",padding:"10px 16px",borderTop:"1px solid var(--color-border-light)",cursor:Y.editable?"pointer":"default",opacity:Y.editable?1:.75}},me.default.createElement(tQ,{on:Y.on,dim:!Y.editable}),me.default.createElement("div",{style:{minWidth:0}},me.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},me.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:600,color:Y.on?"var(--color-text-primary)":"var(--color-text-secondary)"}},Y.name),Y.source==="mcp"&&me.default.createElement(Ce,{size:10},"via ",Y.server),Y.source==="agent_defined"&&(Y.editable?me.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"):me.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&&me.default.createElement(Ce,{size:10},"unused")),me.default.createElement("div",{style:{marginTop:2,fontSize:12,lineHeight:"17px",color:"var(--color-text-secondary)",...j2}},Y.description)),me.default.createElement("span",null,me.default.createElement(Ce,{tone:m_e[Y.source]||"muted"},sT[Y.source])),me.default.createElement("span",{style:bl},D(Y.calls)),me.default.createElement("span",{style:{...bl,color:Y.errors?"var(--color-error-text)":"var(--color-text-secondary)"}},D(Y.errors)),me.default.createElement("span",{style:{...bl,color:"var(--color-text-secondary)"}},D(lT(Y.avg_duration_ms))),me.default.createElement("span",{style:{...bl,color:"var(--color-text-muted)"}},D(Jy(Y.last_seen))),me.default.createElement(h_e,{tool:Y,state:uT(Y,Q),onToggle:Me}))))}),N.every(U=>U.rows.length===0)&&me.default.createElement(Rr,{style:{borderTop:"1px solid var(--color-border-light)",padding:"18px 16px"}},p?`no tools match "${p}"`:"nothing enabled yet"))),me.default.createElement(Be,{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"},me.default.createElement("div",{style:{minWidth:0,display:"flex",flexDirection:"column",gap:3}},me.default.createElement(We,{size:11,spacing:"0.05em"},z," tools \xB7 ",ce.length," services"),me.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.")),me.default.createElement("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},j>0&&me.default.createElement(me.default.Fragment,null,me.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-warning-text)"}},j," change",j===1?"":"s"," pending"),me.default.createElement(fe,{variant:"secondary",onClick:he},"Discard")),me.default.createElement(fe,{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")))):me.default.createElement(Be,null,me.default.createElement(Rr,null,"loading the roster\u2026"))}var Qt=Z(J());function TD({agentId:e,colors:t}){let[r,n]=(0,Qt.useState)(""),[o,a]=(0,Qt.useState)(""),[i,s]=(0,Qt.useState)(""),[l,u]=(0,Qt.useState)(1),[c,d]=(0,Qt.useState)(null),[p,f]=(0,Qt.useState)(null),[m,y]=(0,Qt.useState)(0);(0,Qt.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(et(`/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 Qt.default.createElement("section",{"aria-label":"User feedback",style:{color:t.textPrimary,background:t.cardBg,border:`1px solid ${t.cardBorder}`,borderRadius:12,padding:20}},Qt.default.createElement("div",{className:"flex flex-wrap items-center gap-4 mb-4"},Qt.default.createElement("label",null,"Rating ",Qt.default.createElement("select",{value:r,onChange:x(n),style:{color:t.textPrimary,background:t.cardBg}},Qt.default.createElement("option",{value:""},"All ratings"),Qt.default.createElement("option",{value:"positive"},"Thumbs up"),Qt.default.createElement("option",{value:"negative"},"Thumbs down"))),Qt.default.createElement("label",null,"From ",Qt.default.createElement("input",{type:"date",value:o,onChange:x(a),style:{color:t.textPrimary,background:t.cardBg}})),Qt.default.createElement("label",null,"To ",Qt.default.createElement("input",{type:"date",value:i,onChange:x(s),style:{color:t.textPrimary,background:t.cardBg}})),Qt.default.createElement("button",{type:"button",onClick:()=>y(h=>h+1)},"Refresh")),p&&Qt.default.createElement("p",{role:"alert"},p),!c&&!p&&Qt.default.createElement("p",{role:"status"},"Loading feedback\u2026"),c&&Qt.default.createElement(Qt.default.Fragment,null,Qt.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&&Qt.default.createElement("p",null,"No feedback recorded for these filters. Submit feedback from your application after the trace is ingested."),Qt.default.createElement("ul",null,c.feedback.map(h=>Qt.default.createElement("li",{key:h.id,className:"py-4",style:{borderTop:`1px solid ${t.cardBorder}`}},Qt.default.createElement("strong",null,h.rating==="positive"?"\u{1F44D} Thumbs up":"\u{1F44E} Thumbs down"),Qt.default.createElement("span",null," \xB7 ",new Date(h.created_at).toLocaleString()),h.user_reference&&Qt.default.createElement("span",null," \xB7 ",h.user_reference),h.comment&&Qt.default.createElement("p",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere"}},h.comment),Qt.default.createElement("a",{className:"underline",href:et(`/traces?trace=${encodeURIComponent(h.trace_id)}`)},"Open interaction trace"),h.span_id&&Qt.default.createElement("p",null,"Response span: ",Qt.default.createElement("code",null,h.span_id))))),Qt.default.createElement("div",{className:"flex gap-4 mt-4"},Qt.default.createElement("button",{disabled:l===1,onClick:()=>u(h=>h-1)},"Previous"),Qt.default.createElement("span",null,"Page ",l),Qt.default.createElement("button",{disabled:l*50>=c.total,onClick:()=>u(h=>h+1)},"Next"))))}var y_e=[{id:"config",label:"Configuration"},{id:"instructions",label:"Instructions"},{id:"tools",label:"Tools"},{id:"versions",label:"Versions"},{id:"code",label:"Code"}],iQ=[{id:"traces",label:"Traces"},{id:"metrics",label:"Metrics"},{id:"interactions",label:"Interactions"},{id:"evals",label:"Evals"},{id:"feedback",label:"Feedback"}],v_e=iQ.map(e=>e.id),oQ={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"]}},x_e={active:"success",draft:"warning",archived:"neutral",failed:"error",trial:"info"};function ad({tone:e="neutral",mono:t=!1,darkMode:r,children:n}){let[o,a]=(oQ[e]||oQ.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 aQ({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 L2({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=Wi(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=dc([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=v_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(On,{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(ad,{tone:x_e[m.status]||"neutral",darkMode:c},m.status),g&&_e.default.createElement(ad,{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(aQ,{tabs:y_e,active:p,onChange:f,colors:d}),_e.default.createElement("div",{style:{width:"1px",height:"18px",background:d.borderStrong,flexShrink:0}}),_e.default.createElement(aQ,{tabs:iQ,active:p,onChange:f,colors:d})),Q?_e.default.createElement(ND,{agent:e,formData:m,updateField:A,onSave:E,hasChanges:g,isLoading:l}):I?_e.default.createElement("div",null,p==="traces"&&_e.default.createElement(Hp,{agentId:e.id,embedded:!0}),p==="metrics"&&_e.default.createElement(ED,{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(Tu,{agentId:e.id,embedded:!0})),p==="evals"&&_e.default.createElement(z0,{embedded:!0,agentId:e.id}),p==="feedback"&&_e.default.createElement(TD,{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(w_e,{formData:m,updateField:A,providerModels:w,colors:d,darkMode:c,onDelete:n}),p==="instructions"&&_e.default.createElement(S_e,{formData:m,updateField:A,meta:t,toggleArrayItem:C,colors:d}),p==="versions"&&_e.default.createElement(k_e,{versions:x,agentId:e.id,onRestore:_,colors:d,darkMode:c}),p==="code"&&_e.default.createElement(__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 wl=e=>({display:"block",fontSize:"13px",fontWeight:500,color:e.textCell,marginBottom:"6px"}),Iu=e=>({width:"100%",padding:"8px 12px",borderRadius:"8px",border:`1px solid ${e.inputBorder}`,background:e.inputBg,color:e.textPrimary,fontFamily:"inherit",fontSize:"13px"}),b_e=e=>({fontFamily:Pt.mono,fontSize:"11px",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:e.textSecondary});function w_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:wl(n)},"Agent Name"),_e.default.createElement("input",{type:"text",value:e.name,onChange:i=>t("name",i.target.value),className:"aa-field",style:Iu(n)})),_e.default.createElement("div",null,_e.default.createElement("label",{style:wl(n)},"Preset Type"),_e.default.createElement("select",{value:e.preset_type,onChange:i=>t("preset_type",i.target.value),className:"aa-field",style:Iu(n)},Object.keys(ym).map(i=>_e.default.createElement("option",{key:i,value:i},i))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:wl(n)},"Description"),_e.default.createElement("textarea",{value:e.description,onChange:i=>t("description",i.target.value),rows:3,className:"aa-field",style:{...Iu(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:wl(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:Iu(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:wl(n)},"Model"),_e.default.createElement(Yl,{value:e.model,models:r[e.provider],onChange:i=>t("model",i),className:"aa-field",style:{...Iu(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:wl(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:wl(n)},"Status"),_e.default.createElement("select",{value:e.status,onChange:i=>t("status",i.target.value),className:"aa-field",style:Iu(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:b_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 S_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:wl(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:{...Iu(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:{...wl(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:{...Iu(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:{...Iu(o),fontFamily:Pt.mono,resize:"vertical"}}))))),_e.default.createElement("div",null,_e.default.createElement("label",{style:wl(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 k_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(ad,{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(C_e,{colors:n,glyph:"[#]",title:"No version history",hint:"Saving a change records a new version."}))}function __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 C_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 _h(){let e=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl;if(!e)throw new Error("This dashboard has no billing configured.");window.location.href=e}var z2=Z(J());var A_e='[data-aa-secret], meta[name="csrf-token"], input[type="hidden"]';var lQ=Object.freeze({events:500,chars:262144}),E_e=16*1024,N_e=3;function T_e(e){return{emit:e,maskAllInputs:!0,blockSelector:A_e,slimDOMOptions:"all",sampling:{scroll:150,input:"last"}}}function O_e(e){return JSON.stringify({kind:"rrweb",timestamp:e.timestamp,data:e})}function P_e(e,t){return`{"sent_at":${Math.floor(t)},"recording_events":[${e.join(",")}]}`}function M_e(e,t=lQ){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 sQ(e){return e>=200&&e<300?"sent":e===403?"off":e===413?"limit":e===429||e>=500?"retry":"failed"}function uQ({contextId:e,loadRecorder:t,fetch:r,now:n=Date.now,timers:o=globalThis,target:a=globalThis,onStateChange:i=()=>{},limits:s=lQ,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=O_e(F);u.push(N),c+=N.length+1,(u.length>=s.events||c>=s.chars)&&E()}async function A(F,N){let O=P_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_e});return sQ(j.status)}catch{return"retry"}}async function C(F){for(;u.length>0&&!h;){let N=u.splice(0,M_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>=N_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){_(sQ(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(T_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 OD(e,t){let[r,n]=(0,z2.useState)("idle");return(0,z2.useLayoutEffect)(()=>{if(!e||!t){n("idle");return}let o=!0,a=uQ({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 I_e={llm:{role:"assistant",label:"LLM"},tool:{role:"tool",label:"Tool"},agent:{role:"developer",label:"Agent"},mcp:{role:"system",label:"MCP"}},D_e=(e,t)=>{let r=I_e[e]||{role:e,label:e};return{...Mn(r.role,t),label:r.label}},PD={complete:"success",failed:"error",running:"info",pending:"warning",cancelled:"neutral",awaiting_input:"warning"},j_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"],$_e=["user","assistant","tool"],L_e=1200,z_e=600*1e3,B2=e=>e?e<1e3?`${e}ms`:`${(e/1e3).toFixed(2)}s`:"-",cQ=e=>{if(!e)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},MD=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()]},gs=e=>e?.context_id??e?.output_metadata?.context_id??null,B0=e=>e.json().catch(()=>({})),pQ=({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"})),B_e=e=>typeof e=="string"?e:e?.name||e?.key||"?";function dQ({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 F_e({run:e,darkMode:t,colors:r,expanded:n,onToggle:o}){let a=MD(e),i=IC(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=D_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&&` ${B2(s.duration_ms)}`),s.at&&X.default.createElement("span",null,new Date(s.at).toLocaleTimeString()))),u&&X.default.createElement(pQ,{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"}},cQ(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"}:{}}},cQ(s.output)))))}))}function U_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(ad,{tone:PD[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,B2(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:et(`/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 ID({agent:e,onBack:t,recorderUrl:r=null,freshConversation:n=!1}){let{darkMode:o}=ut(),a=Wi(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)({}),[q,V]=(0,X.useState)([]),[L,G]=(0,X.useState)([]),[W,ie]=(0,X.useState)(""),Me=(0,X.useCallback)(async()=>{try{let le=await fetch("/api/sandboxes?sandbox_type=app_runtime");if(!le.ok)return;let Ie=await le.json(),st=c2(Ie.sandboxes);G(st),ie($t=>d2($t,st)||(st.length===1?st[0].value:""))}catch{}},[]);(0,X.useEffect)(()=>{Me()},[Me]);let he=Y1(e.tools||[]),[ce,R]=(0,X.useState)(null),[te,z]=(0,X.useState)(!1),[ee,U]=(0,X.useState)(null),[P,Y]=(0,X.useState)(!1),[B,se]=(0,X.useState)(!1),[ne,ye]=(0,X.useState)(null),[at,it]=(0,X.useState)(""),[pe,ue]=(0,X.useState)(!1),[Ze,Je]=(0,X.useState)(null),tt=(0,X.useRef)(null),_t=(0,X.useRef)(!n),Ut=(0,X.useRef)(null),tn=(0,X.useRef)(0),Po=(0,X.useRef)(null),ys=(0,X.useRef)(!1),Ti=(0,X.useRef)(!0),wt=(0,X.useRef)(null),xe=(0,X.useRef)([]),rt=(0,X.useRef)(null),ht=(0,X.useRef)(null),Xt=(0,X.useRef)(null),ro=(0,X.useRef)(null),Mo=OD(g,r),Io=(b?.messages||[]).filter(le=>$_e.includes(le.role));(0,X.useEffect)(()=>{wt.current=$},[$]),(0,X.useEffect)(()=>{xe.current=p},[p]),(0,X.useEffect)(()=>{Ti.current=!0,Oi();let le=pY(window.location.search);return le&&Sf(le),()=>{Ti.current=!1,tn.current+=1,Cl(wt.current),Cl({attachments:xe.current}),F(null),f([])}},[e.id]),(0,X.useEffect)(()=>{no(l)},[e.id,l]),(0,X.useEffect)(()=>{Ut.current=g,g?oo(g):(S(null),_(null))},[g]),(0,X.useEffect)(()=>{let le=ht.current;le&&(le.scrollTop=le.scrollHeight)},[Io.length,$,I?.logs?.length,I?.input_requests?.length,ne,N]),(0,X.useEffect)(()=>{if(!B)return;let le=Ie=>{ro.current&&!ro.current.contains(Ie.target)&&se(!1)};return document.addEventListener("mousedown",le),()=>document.removeEventListener("mousedown",le)},[B]);let Oi=async()=>{try{let Ie=await(await fetch(`/api/agents/${e.id}/runs?per_page=10`)).json();A(Ie.runs||[])}catch(le){console.error("Failed to load runs:",le)}},no=async le=>{try{let Ie=await fetch(`/api/agents/${e.id}/conversations?action_name=${encodeURIComponent(le)}`);if(!Ie.ok)throw new Error(`HTTP ${Ie.status}`);let $t=(await Ie.json()).conversations||[];h($t),v(wn=>wn&&(tt.current===wn||$t.some(ti=>ti.id===wn))?wn:_t.current?$t[0]?.id??null:null)}catch(Ie){console.error("Failed to load conversations:",Ie),h([])}},oo=async le=>{try{let Ie=await fetch(`/api/interactions/${le}`);if(!Ie.ok)throw new Error(Ie.status===404?"Conversation not found":`HTTP ${Ie.status}`);let st=await Ie.json();if(Ut.current!==le)return;S(st.interaction),_(null)}catch(Ie){if(Ut.current!==le)return;S(null),_(Ie.message)}},kl=async()=>{let le=await fetch(`/api/agents/${e.id}/conversations`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action_name:l})}),Ie=await B0(le);if(!le.ok||!Ie.conversation)throw new Error(Ie.error||`Could not start a conversation (HTTP ${le.status})`);let st=Ie.conversation;return h($t=>[st,...$t.filter(wn=>wn.id!==st.id)]),tt.current=st.id,v(st.id),st.id},cd=()=>Ut.current?Promise.resolve(Ut.current):kl(),_l=le=>{tt.current=null,u(le)},ao=le=>{ys.current=le,E(le)},io=()=>{Po.current?.waiting&&(Po.current=null,ao(!1))},dd=()=>{io(),Q(null),T(null),M({}),V([])},Lh=le=>{let Ie=le?Number(le):null;Ie!==Ut.current&&dd(),tt.current=Ie,v(Ie),O(null)},pd=async()=>{if(!C)try{await kl(),_(null),O(null),dd(),Cl(wt.current),F(null),ye(null)}catch(le){_(le.message)}},Cl=le=>{(le?.attachments||[]).forEach(Ie=>{Ie.url&&Ie.url.startsWith("blob:")&&URL.revokeObjectURL(Ie.url)})},zh=le=>{let Ie=Array.from(le||[]).filter(Boolean);Ie.length!==0&&f(st=>[...st,...Ie.map($t=>({file:$t,filename:$t.name,content_type:$t.type||"application/octet-stream",byte_size:$t.size,kind:AG($t),url:$t.type&&$t.type.startsWith("image/")?URL.createObjectURL($t):null}))])},ab=le=>{f(Ie=>{let st=Ie[le];return st?.url&&URL.revokeObjectURL(st.url),Ie.filter(($t,wn)=>wn!==le)})},ib=(le,Ie)=>{Cl(wt.current),F(null),Oi();let st=gs(le)??Ie;st&&(st!==Ut.current?(tt.current=st,v(st)):oo(st),no(l))},mA=(le,Ie)=>{Po.current=null,ao(!1),V([]),ib(le,Ie)},Qe=(le,Ie)=>{Po.current={id:le.id,contextId:gs(le)??Ie,waiting:!0},ib(le,Ie),WC()},Ta=(le,Ie)=>{if(!Ti.current)return;let st=++tn.current,$t=Date.now(),wn=async()=>{if(tn.current===st){try{let ti=await fetch(`/api/runs/${le}`);if(ti.ok){let Do=await ti.json();if(tn.current!==st)return;Q(Do.run);let Ma=aI(Do.run);if(Ma==="finished"){mA(Do.run,Ie);return}if(Ma==="awaiting"){Qe(Do.run,Ie);return}}}catch{}Date.now()-$tti&&{...ti,status:"failed",error_message:"Timed out waiting for the run to finish."}),T("Timed out waiting for the run to finish."))}};wn()},Bh=async({text:le,files:Ie,fromComposer:st=!1})=>{let $t=(le||"").trim();if(!$t&&Ie.length===0||C)return;T(null),O(null),ye(null),ao(!0),M({}),V([]),Q({status:"pending",input_prompt:$t,output:"",logs:[],started_at:new Date().toISOString()}),Cl(wt.current),F({content:$t||"(see attached files)",attachments:Ie.map(({file:Do,...Ma})=>Ma)}),st&&(d(""),f([]));let wn=Ut.current;if(!wn)try{wn=await kl()}catch(Do){T(`${Do.message} \u2014 running without a pinned conversation.`)}let ti=()=>{st&&(d($t),f(Ie)),F(null)};try{let Do=new FormData;Do.append("prompt",$t),Do.append("action_name",l),wn&&Do.append("params[context_id]",String(wn)),W&&Do.append("sandbox_id",W),Ie.forEach(({file:xd})=>Do.append("attachments[]",xd,xd.name));let Ma=await fetch(`/api/agents/${e.id}/execute`,{method:"POST",body:Do}),vs=await B0(Ma);if(vs.code==="sandbox_refused"&&Me(),Ma.status===402&&vs.upgrade_required){R(vs.usage),Q(xd=>({...xd,status:"failed",error_message:vs.message||"Plan limit reached"})),ao(!1),ti();return}if(!Ma.ok)throw new Error(vs.error||"Run failed");Ta(vs.run.id,gs(vs.run)??wn)}catch(Do){Q(Ma=>({...Ma,status:"failed",error_message:Do.message})),ao(!1),ti()}},so=()=>Bh({text:c,files:p,fromComposer:!0}),Fh=(le,Ie)=>{let st=Po.current;!st||String(st.id)!==String(le.run_id)||(V($t=>[...$t.filter(wn=>wn.request.id!==le.id),{request:le,outcome:Ie}]),Po.current={...st,waiting:!1},Ta(st.id,st.contextId))},ya=le=>{let Ie=aI(le);Ie==="finished"||ys.current||(T(null),M({}),V([]),Q(le),ao(!0),Ie==="awaiting"?Qe(le,gs(le)):Ta(le.id,gs(le)))},Oa=(le,Ie)=>{tt.current=le,Ie&&s.includes(Ie)&&Ie!==l&&u(Ie),v(le)},Sf=async le=>{try{let Ie=await fetch(`/api/runs/${le}`);if(!Ie.ok)return;let st=await Ie.json();if(!Ti.current||!st.run||String(st.agent?.id)!==String(e.id))return;let $t=gs(st.run);$t&&Oa($t,st.run.action_name),ya(st.run)}catch(Ie){console.error("Failed to open the linked run:",Ie)}},Pa=le=>{!le||!le.text||Bh({text:le.text,files:[]})},Uh=le=>{le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&(le.preventDefault(),so())},fd=async(le,Ie)=>{let st=Ut.current,$t=await fetch(`/api/interactions/${st}/messages/${le.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:Ie})}),wn=await B0($t);if(!$t.ok)throw new Error(wn.error||`Could not save the message (HTTP ${$t.status})`);await oo(st)},md=async le=>{let Ie=Ut.current;try{let st=await fetch(`/api/interactions/${Ie}/messages/${le.id}`,{method:"DELETE"});if(!st.ok){let $t=await B0(st);throw new Error($t.error||`Could not delete the message (HTTP ${st.status})`)}_(null),await oo(Ie),no(l)}catch(st){_(st.message)}},lo=le=>{se(!1),ye(le),it(""),Je(null)},Al=async()=>{let le=at.trim();if(!(!le||pe)){ue(!0),Je(null);try{let Ie=await cd(),st=await fetch(`/api/interactions/${Ie}/messages`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:ne,content:le})}),$t=await B0(st);if(!st.ok)throw new Error($t.error||`Could not add the message (HTTP ${st.status})`);it(""),ye(null),await oo(Ie),no(l)}catch(Ie){Je(Ie.message)}finally{ue(!1)}}},sb=async le=>{let Ie=le;if(gs(le)==null||le.status==="awaiting_input")try{let $t=await fetch(`/api/runs/${le.id}`);$t.ok&&(Ie=(await $t.json()).run)}catch($t){console.error("Failed to load run details:",$t)}let st=gs(Ie);st?(O(null),st!==Ut.current&&dd(),Oa(st,Ie.action_name||le.action_name),ya(Ie)):O({...Ie,output:Ie.output??Ie.output_preview,error_message:Ie.error_message??Ie.error}),rt.current?.scrollIntoView({behavior:"smooth",block:"start"})},Wh=async()=>{z(!0),U(null);try{await _h({planSlug:"pro"})}catch(le){U(le.message),z(!1)}},gd=window.ACTIVE_AGENT_DASHBOARD?.meta?.upgradeUrl,lb=i.find(le=>le.name===l)?.prompt,hd=[e.instructions,l==="ask"?null:lb].map(le=>(le||"").trim()).filter(Boolean).join(` -`)||v?.instructions||"",Cl=y.slice();h&&!Cl.some(de=>de.id===h)&&Cl.unshift({id:h,message_count:Aa.length});let ro=(u.trim().length>0||d.length>0)&&!_,ys=E?.status==="awaiting_input",Ih=ys?Qg(E.input_requests):[],Dh=new Set(P.map(({request:de})=>de.id)),pd=E&&!_&&E.status==="failed",Xx=E&&!_&&E.status==="complete"&&!ms(E)&&!h,qs={background:o.cardBg,border:`1px solid ${o.cardBorder}`,borderRadius:"12px"},Zx={borderBottom:`1px solid ${o.cardBorder}`},Jx={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontSize:"13px",fontFamily:Ot.mono,maxWidth:"260px"},jh={width:"100%",padding:"10px 12px",borderRadius:"8px",border:`1px solid ${f?Vo:o.inputBorder}`,background:o.inputBg,color:o.textPrimary,fontFamily:"inherit",fontSize:"13px",resize:"vertical"},$h=Pn("system",n),R2=hC(n);return R.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},R.default.createElement("div",{className:"col-span-2 flex flex-col gap-4 min-w-0"},G&&R.default.createElement("div",{className:"bg-amber-50 border border-amber-200 rounded-xl p-4 flex items-center justify-between gap-4"},R.default.createElement("div",null,R.default.createElement("p",{className:"font-medium text-amber-900"},"Monthly run limit reached"),R.default.createElement("p",{className:"text-sm text-amber-700 mt-0.5"},"You've used ",G.runs_used," of ",G.runs_limit," runs on the"," ",G.plan||"free"," plan. Upgrade to keep running agents."),ie&&R.default.createElement("p",{className:"text-sm text-red-600 mt-1"},ie)),R.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},Ea&&R.default.createElement("a",{href:Ea,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),R.default.createElement("button",{onClick:yf,disabled:Y,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},Y?"Redirecting\u2026":"Upgrade to Pro"))),R.default.createElement("div",{"data-testid":"runner-toolbar",style:qs,className:"p-4 flex items-center gap-3 flex-wrap"},R.default.createElement(Tn,{size:40}),R.default.createElement("div",{className:"min-w-0"},R.default.createElement("div",{className:"font-semibold truncate",style:{color:o.textPrimary}},e.name),R.default.createElement("div",{className:"text-xs font-mono",style:{color:o.textSecondary}},e.provider," / ",e.model)),R.default.createElement("div",{className:"flex items-center gap-2 flex-wrap ml-auto"},R.default.createElement("select",{"data-testid":"runner-action-select",value:s,onChange:de=>Eo(de.target.value),disabled:_,className:"aa-field",style:Jx,title:"Agent action to invoke"},i.map(de=>R.default.createElement("option",{key:de,value:de},"#",de))),R.default.createElement("select",{"data-testid":"runner-conversation-select",value:h??"",onChange:de=>Fo(de.target.value),disabled:_,className:"aa-field",style:Jx,title:"Conversation to continue"},R.default.createElement("option",{value:""},"New conversation on first run"),Cl.map(de=>R.default.createElement("option",{key:de.id,value:de.id},"Conversation #",de.id," \xB7 ",de.message_count??0," message",de.message_count===1?"":"s"))),R.default.createElement(la,{testId:"runner-new-conversation",variant:"secondary",size:"sm",colors:o,onClick:Qo,disabled:_,title:"Start an empty conversation for this action"},"+ New conversation"),R.default.createElement(la,{testId:"runner-back",variant:"secondary",size:"sm",colors:o,onClick:t},"\u2190 Back to editor"))),R.default.createElement("div",{"data-testid":"runner-context",ref:wt,style:qs,className:"flex flex-col overflow-hidden"},R.default.createElement("div",{className:"px-4 py-3 flex items-center justify-between gap-3 flex-wrap",style:Zx},R.default.createElement("div",{className:"flex items-center gap-2 min-w-0"},R.default.createElement("h3",{className:"font-medium",style:{color:o.textPrimary}},"Context"),v&&R.default.createElement("span",{className:"text-xs font-mono",style:{color:o.textMuted}},"#",v.id," \xB7 ",Aa.length," message",Aa.length===1?"":"s"),hs==="recording"&&R.default.createElement("span",{"data-testid":"runner-recording-notice",className:"text-xs inline-flex items-center gap-1",style:{color:o.textMuted},title:"This view is recorded for the conversation's replay. Field values are masked and keys are left out; the conversation is recorded as shown."},R.default.createElement("span",{"aria-hidden":"true",style:{color:"#ef4444"}},"\u25CF"),"Recording"),hs==="limit"&&R.default.createElement("span",{"data-testid":"runner-recording-stopped",className:"text-xs",style:{color:o.textMuted},title:"This visit reached the size limit for a recording, so the rest of it is not recorded. Open the conversation again to start a new recording."},"Recording stopped")),R.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},R.default.createElement(x_e,{run:E,darkMode:n,colors:o}),v&&R.default.createElement(la,{testId:"runner-replay",variant:"secondary",size:"sm",colors:o,onClick:()=>dt(Jg("context",v.id)),disabled:_,title:"Replay this conversation: its messages, model calls and tool calls on one timeline"},"Replay"),R.default.createElement("div",{className:"relative",ref:Ca},R.default.createElement(la,{testId:"runner-add-message",variant:"secondary",size:"sm",colors:o,onClick:()=>ee(de=>!de),disabled:_,title:"Insert a message into the context without running"},"+ Add message"),Q&&R.default.createElement("div",{className:"absolute right-0 mt-1 z-10 py-1 rounded-lg shadow-lg",style:{background:o.cardBg,border:`1px solid ${o.borderStrong}`,minWidth:"180px"}},[["user","runner-add-user-message","User message"],["assistant","runner-add-assistant-message","Assistant message"]].map(([de,Ie,mt])=>R.default.createElement("button",{key:de,type:"button","data-testid":Ie,onClick:()=>Ph(de),className:"w-full text-left px-3 py-1.5 text-sm hover:bg-black/5",style:{color:o.textCell,background:"none",border:"none",cursor:"pointer"}},mt)))))),R.default.createElement("div",{ref:fr,className:"p-4 overflow-auto",style:{maxHeight:"60vh"}},R.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:()=>ce(de=>!de),title:pe?"Collapse system instructions":"Show system instructions"},R.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},R.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:$h.background,color:$h.color,textAlign:"center"}},$h.label)),R.default.createElement("div",{className:"min-w-0 flex-1"},_l?pe?R.default.createElement("pre",{style:{...R2,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},_l):R.default.createElement("div",{className:"text-sm truncate",style:{color:o.textSecondary}},_l.split(` -`).find(de=>de.trim())||""):R.default.createElement("div",{className:"text-sm",style:{color:o.textMuted}},"No system instructions"),R.default.createElement("div",{className:"text-xs mt-0.5 font-mono",style:{color:o.textMuted}},"read-only \xB7 Edit in the Instructions tab")),R.default.createElement(KJ,{open:pe,color:o.textMuted})),S&&R.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},S),Aa.length>0?R.default.createElement("div",{className:"mt-3"},R.default.createElement(ls,{messages:Aa,darkMode:n,testIdPrefix:"runner-message",onUiAction:Qe,onEditMessage:Yx,onDeleteMessage:ho})):!X&&!U&&!pd&&R.default.createElement("div",{"data-testid":"runner-context-empty",className:"text-sm text-center py-8",style:{color:o.textMuted}},"No messages yet \u2014 say something below to test the agent as a user."),X&&R.default.createElement("div",{"data-testid":"runner-pending-turn",className:"flex gap-3 items-start rounded-lg -mx-2 px-2 py-1 mt-3"},R.default.createElement("span",{className:"flex flex-col gap-1 flex-shrink-0 mt-0.5",style:{minWidth:"72px"}},R.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Pn("user",n).background,color:Pn("user",n).color,textAlign:"center"}},"User")),R.default.createElement("div",{className:"min-w-0 flex-1"},R.default.createElement("div",{className:"text-sm break-words whitespace-pre-wrap",style:{color:o.textPrimary}},X.content),R.default.createElement(yC,{attachments:X.attachments,darkMode:n}))),E&&(_||gD(E).length>0)&&R.default.createElement("div",{className:"mt-3 space-y-2"},R.default.createElement(v_e,{run:E,darkMode:n,colors:o,expanded:T,onToggle:de=>I(Ie=>({...Ie,[de]:!Ie[de]}))}),_&&!ys&&R.default.createElement("div",{className:"flex items-center gap-2 text-sm",style:{color:o.textSecondary}},R.default.createElement("span",{className:"animate-pulse"},"\u25CF"),R.default.createElement("span",null,gD(E).length>0?"Working\u2026":"Starting run\u2026"))),(Ih.length>0||P.length>0)&&R.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},ys&&R.default.createElement("div",{className:"text-sm",style:{color:o.textSecondary}},"Paused for input: answer to continue this run."),Ih.filter(de=>!Dh.has(de.id)).map(de=>R.default.createElement(Bp,{key:de.id,request:de,showRunLink:!1,onSettled:Vx})),P.map(({request:de,outcome:Ie})=>R.default.createElement(Bp,{key:de.id,request:de,initialOutcome:Ie,showRunLink:!1}))),O&&R.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},O),pd&&E.error_message&&R.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:n?"rgba(239,68,68,0.12)":"#fef2f2",color:n?"#fca5a5":"#b91c1c"}},R.default.createElement("div",{className:"font-semibold mb-1"},"Run failed"),R.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0}},E.error_message)),Xx&&R.default.createElement("div",{className:"mt-3 rounded-lg p-3 text-sm",style:{background:o.innerBg,color:o.textPrimary}},R.default.createElement("div",{className:"text-xs uppercase tracking-wide mb-1",style:{color:o.textMuted}},"Output"),R.default.createElement(Ds,{text:E.output||"No output",darkMode:n,onUiAction:Qe})),U&&R.default.createElement("div",{"data-testid":"runner-inspected-run",className:"mt-3 rounded-lg p-3",style:{background:o.innerBg,border:`1px solid ${o.cardBorder}`}},R.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mb-2"},R.default.createElement("div",{className:"flex items-center gap-2 text-xs font-mono",style:{color:o.textMuted}},R.default.createElement("span",{style:{color:o.textPrimary}},"Run #",U.id),R.default.createElement(id,{tone:mD[U.status]||"neutral",darkMode:n},U.status),U.output_metadata?.model&&R.default.createElement("span",null,U.output_metadata.provider,"/",U.output_metadata.model),U.duration_ms?R.default.createElement("span",null,k2(U.duration_ms)):null,U.trace_id&&R.default.createElement("a",{href:nt(`/traces?trace=${U.trace_id}`),className:"hover:underline",style:{color:o.textSecondary}},"trace:",U.trace_id.slice(0,8)," \u2192"),R.default.createElement("span",null,"\xB7 no conversation attached")),R.default.createElement("button",{type:"button",onClick:()=>N(null),className:"text-xs font-mono",style:{color:o.textMuted,background:"none",border:"none",cursor:"pointer"},title:"Close"},"[x]")),(U.input_prompt||U.input_preview)&&R.default.createElement("div",{className:"text-sm mb-2 whitespace-pre-wrap",style:{color:o.textSecondary}},U.input_prompt||U.input_preview),U.error_message?R.default.createElement("pre",{className:"whitespace-pre-wrap font-mono text-xs",style:{margin:0,color:n?"#fca5a5":"#b91c1c"}},U.error_message):R.default.createElement("div",{className:"text-sm",style:{color:o.textPrimary}},R.default.createElement(Ds,{text:U.output||"No output",darkMode:n}))),$&&R.default.createElement("div",{className:"mt-3 rounded-lg p-3",style:{border:`1px dashed ${o.borderStrong}`}},R.default.createElement("div",{className:"flex items-center gap-2 mb-2"},R.default.createElement("span",{className:"px-2 py-0.5 rounded text-xs font-medium",style:{background:Pn($,n).background,color:Pn($,n).color}},Pn($,n).label),R.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Added to the context without running the agent")),R.default.createElement("textarea",{"data-testid":"runner-inline-composer",value:K,onChange:de=>M(de.target.value),onKeyDown:de=>{de.key==="Escape"&&B(null),de.key==="Enter"&&(de.metaKey||de.ctrlKey)&&fa()},placeholder:$==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...jh,border:`1px solid ${o.inputBorder}`}}),R.default.createElement("div",{className:"flex items-center gap-2 mt-2 flex-wrap"},R.default.createElement(la,{testId:"runner-inline-submit",variant:"primary",size:"sm",colors:o,onClick:fa,disabled:ae||!K.trim()},ae?"Adding\u2026":`Add ${$} message`),R.default.createElement(la,{variant:"secondary",size:"sm",colors:o,onClick:()=>B(null),disabled:ae},"Cancel"),se&&R.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},se))))),R.default.createElement("div",{style:qs,className:"p-4"},R.default.createElement("div",{onDragOver:de=>{de.preventDefault(),f||m(!0)},onDragLeave:()=>m(!1),onDrop:de=>{de.preventDefault(),m(!1),_||ju(de.dataTransfer?.files)}},R.default.createElement("textarea",{"data-testid":"runner-prompt",value:u,onChange:de=>c(de.target.value),onKeyDown:Ti,placeholder:"Message the agent as a user\u2026 (\u2318/Ctrl+Enter to run \xB7 drop files here to attach)",rows:3,disabled:_,className:"aa-field",style:jh})),R.default.createElement(yC,{attachments:d,darkMode:n,testId:"runner-attachment-chip",onRemove:(de,Ie)=>kl(Ie),removeTestId:"runner-attachment-remove"}),R.default.createElement("div",{className:"flex items-center justify-between gap-3 flex-wrap mt-3"},R.default.createElement("div",{className:"flex items-center gap-3 flex-wrap"},R.default.createElement("input",{ref:vn,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:de=>{ju(de.target.files),de.target.value=""}}),R.default.createElement(la,{testId:"runner-attach",variant:"secondary",size:"sm",colors:o,onClick:()=>vn.current?.click(),disabled:_,title:"Attach images, PDFs, or text files to this message"},"\u{1F4CE} Attach files"),R.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},"Press ",R.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"\u2318")," + ",R.default.createElement("kbd",{className:"px-1.5 py-0.5 rounded",style:{background:o.mutedBg,color:o.textSecondary}},"Enter")," to run")),R.default.createElement(la,{testId:"runner-run",variant:"primary",colors:o,onClick:Th,disabled:!ro},_&&ys?R.default.createElement(R.default.Fragment,null,R.default.createElement("span",{style:{fontFamily:Ot.mono}},"[?]")," Waiting for input"):_?R.default.createElement(R.default.Fragment,null,R.default.createElement("span",{className:"animate-spin inline-block",style:{fontFamily:Ot.mono}},"[~]")," Running\u2026"):R.default.createElement(R.default.Fragment,null,R.default.createElement("span",{style:{fontFamily:Ot.mono}},"[>]")," Run"))))),R.default.createElement("div",{className:"space-y-4 min-w-0"},R.default.createElement("div",{style:qs,className:"p-4"},R.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Configuration"),R.default.createElement("dl",{className:"space-y-2 text-sm"},R.default.createElement("div",{className:"flex justify-between"},R.default.createElement("dt",{style:{color:o.textSecondary}},"Temperature"),R.default.createElement("dd",{style:{color:o.textPrimary}},e.modelConfig?.temperature||e.model_config?.temperature||.7)),R.default.createElement("div",{className:"flex justify-between"},R.default.createElement("dt",{style:{color:o.textSecondary}},"Tools"),R.default.createElement("dd",{style:{color:o.textPrimary}},e.tools?.length||0)),R.default.createElement("div",{className:"flex justify-between items-center"},R.default.createElement("dt",{style:{color:o.textSecondary}},"Status"),R.default.createElement("dd",null,R.default.createElement(id,{tone:e.status==="active"?"success":"neutral",darkMode:n},e.status)))),e.instructions&&R.default.createElement("div",{className:"mt-3 pt-3",style:{borderTop:`1px solid ${o.cardBorder}`}},R.default.createElement("div",{className:"text-xs mb-1.5",style:{color:o.textSecondary}},"System Instructions"),R.default.createElement("p",{className:"text-xs whitespace-pre-wrap max-h-44 overflow-y-auto font-mono leading-relaxed",style:{color:o.textCell}},e.instructions))),R.default.createElement("div",{style:qs,className:"overflow-hidden"},R.default.createElement("div",{className:"px-4 py-3",style:Zx},R.default.createElement("h4",{className:"font-medium",style:{color:o.textPrimary}},"Recent Runs")),R.default.createElement("div",{className:"max-h-64 overflow-auto"},A.length>0?R.default.createElement("div",null,A.map(de=>R.default.createElement("div",{key:de.id,"data-testid":"runner-recent-run",className:"px-4 py-3 cursor-pointer hover:bg-black/5",style:{borderBottom:`1px solid ${o.cardBorder}`},onClick:()=>Ra(de),title:ms(de)?"Open this run\u2019s conversation":"Show this run\u2019s output"},R.default.createElement("div",{className:"flex items-center justify-between mb-1"},R.default.createElement(id,{tone:mD[de.status]||"neutral",darkMode:n},de.status),R.default.createElement("span",{className:"text-xs",style:{color:o.textMuted}},k2(de.duration_ms))),R.default.createElement("p",{className:"text-sm truncate",style:{color:o.textCell}},de.input_preview||de.input_prompt?.substring(0,50)),R.default.createElement("p",{className:"text-xs mt-1 flex items-center gap-2 flex-wrap",style:{color:o.textMuted}},de.model&&R.default.createElement("span",{className:"px-1.5 py-0.5 rounded font-mono",style:{background:o.mutedBg,color:o.textSecondary}},de.model),ms(de)&&R.default.createElement("span",{className:"font-mono"},"#",ms(de)),R.default.createElement("span",null,new Date(de.created_at).toLocaleString()))))):R.default.createElement("div",{className:"px-4 py-8 text-center text-sm",style:{color:o.textMuted}},"No runs yet"))),R.default.createElement("div",{style:qs,className:"p-4"},R.default.createElement("h4",{className:"font-medium mb-3",style:{color:o.textPrimary}},"Example Prompts"),R.default.createElement("div",{className:"space-y-2"},m_e.map(de=>R.default.createElement("button",{key:de,type:"button","data-testid":"runner-example-prompt",onClick:()=>c(de),className:"w-full text-left px-3 py-2 text-sm rounded-lg transition-colors hover:bg-black/5",style:{color:o.textCell,border:`1px solid ${o.cardBorder}`,background:"transparent",cursor:"pointer"}},de))))))}var Ke=Z(J()),_2=e=>new Date(`${e}T00:00:00`),b_e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function yD({onSelectAgent:e}){let[t,r]=(0,Ke.useState)(null),[n,o]=(0,Ke.useState)(!0),[a,i]=(0,Ke.useState)(30);(0,Ke.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 Ke.default.createElement("div",{className:"flex items-center justify-center h-64"},Ke.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));let 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 Ke.default.createElement("div",{className:"space-y-6"},Ke.default.createElement("div",{className:"flex items-center justify-between"},Ke.default.createElement("div",null,Ke.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ke.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ke.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"},b_e.map(p=>Ke.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Ke.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ke.default.createElement(Ex,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ke.default.createElement(Ex,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ke.default.createElement(Ex,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ke.default.createElement(Ex,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ke.default.createElement(Ex,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ke.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ke.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ke.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ke.default.createElement("div",{className:"h-48"},Ke.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Ke.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ke.default.createElement("div",{className:"relative w-full"},Ke.default.createElement("div",{className:"w-full bg-red-500 rounded-t transition-all hover:bg-red-600",style:{height:`${p.count/c*150}px`,minHeight:p.count>0?"4px":"0"}}),Ke.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},p.count," runs"))))),Ke.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ke.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&_2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ke.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&_2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ke.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ke.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ke.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ke.default.createElement("div",{className:"h-48"},Ke.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Ke.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ke.default.createElement("div",{className:"relative w-full"},Ke.default.createElement("div",{className:"w-full bg-purple-500 rounded-t transition-all hover:bg-purple-600",style:{height:`${p.tokens/d*150}px`,minHeight:p.tokens>0?"4px":"0"}}),Ke.default.createElement("div",{className:"absolute -top-8 left-1/2 transform -translate-x-1/2 bg-gray-800 text-white text-xs px-2 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap z-10"},l(p.tokens)," tokens"))))),Ke.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ke.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&_2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ke.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&_2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ke.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ke.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ke.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ke.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ke.default.createElement("div",{className:"space-y-3"},t.top_agents.map((p,f)=>Ke.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"},Ke.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),Ke.default.createElement("div",{className:"flex-1 min-w-0"},Ke.default.createElement("p",{className:"font-medium text-gray-900 truncate"},p.name),Ke.default.createElement("p",{className:"text-sm text-gray-500"},p.run_count," runs")),Ke.default.createElement("div",{className:"text-right"},Ke.default.createElement("p",{className:"font-medium text-gray-900"},l(p.total_tokens)),Ke.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ke.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ke.default.createElement("div",{className:"space-y-6"},Ke.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ke.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ke.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 Ke.default.createElement("div",{key:p},Ke.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ke.default.createElement("span",{className:"capitalize text-gray-600"},p),Ke.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Ke.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ke.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ke.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ke.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ke.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ke.default.createElement("div",{className:"space-y-4"},Ke.default.createElement("div",{className:"flex justify-between items-center"},Ke.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ke.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ke.default.createElement("div",{className:"flex justify-between items-center"},Ke.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ke.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ke.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ke.default.createElement("div",{className:"flex justify-between items-center"},Ke.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ke.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function Ex({title:e,value:t,subtitle:r,color:n}){return Ke.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`},Ke.default.createElement("p",{className:"text-sm text-gray-500"},e),Ke.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ke.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var re=Z(J());function vD({agent:e,onBack:t}){let{timeWindow:r}=pl(),[n,o]=(0,re.useState)([]),[a,i]=(0,re.useState)([]),[s,l]=(0,re.useState)(null),[u,c]=(0,re.useState)(null),[d,p]=(0,re.useState)([]),[f,m]=(0,re.useState)("run"),[y,b]=(0,re.useState)(!1),[h,g]=(0,re.useState)(!1),v=(0,re.useRef)(!1),x=(0,re.useRef)(!1),[S,w]=(0,re.useState)("recent"),[A,k]=(0,re.useState)({}),[_,C]=(0,re.useState)(!0),[E,j]=(0,re.useState)(1),[X,z]=(0,re.useState)(!0),[U,N]=(0,re.useState)(""),[O,D]=(0,re.useState)(""),[T,I]=(0,re.useState)("recent"),P=(0,re.useRef)(null),H=nt(`/agents/${e.id}/interactions`);(0,re.useEffect)(()=>{G()},[e.id,E,U,O,T,r.minutes]),(0,re.useEffect)(()=>{j(1)},[r.minutes]),(0,re.useEffect)(()=>{fetch(`/api/interactions?agent_id=${e.id}`).then(M=>M.json()).then(M=>i(M.interactions||[])).catch(()=>{}).finally(()=>g(!0))},[e.id]),(0,re.useEffect)(()=>{let M=()=>{let ae=Vn(),F=ae.match(/\/interactions\/runs\/(\d+)/),se=ae.match(/\/interactions\/sessions\/(\d+)/);if(F)m("run"),c(null),Y(parseInt(F[1],10),{updateUrl:!1});else if(se)m("all"),c({id:parseInt(se[1],10)});else if(ae.endsWith("/interactions/sessions")||ae.endsWith("/interactions/all"))ae.endsWith("/all")&&window.history.replaceState({},"",ae.replace(/\/all$/,"/sessions")),m("all"),c(null);else{v.current=!1,l(null),c(null),p([]);return}v.current=!0};return M(),window.addEventListener("popstate",M),()=>window.removeEventListener("popstate",M)},[e.id]),(0,re.useEffect)(()=>{v.current||x.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 M=new URLSearchParams({page:E.toString(),per_page:"20",minutes:String(r.minutes)});U&&M.append("status",U),O&&M.append("source",O),T!=="recent"&&M.append("sort",T);let F=await(await fetch(`/api/agents/${e.id}/runs?${M}`)).json();o(E===1?F.runs:se=>[...se,...F.runs]),z(F.runs.length===20)}catch(M){console.error("Failed to load runs:",M)}finally{C(!1),b(!0)}},L=M=>{window.location.pathname!==M&&window.history.pushState({},"",M)},Y=async(M,{updateUrl:ae=!0}={})=>{try{let se=await(await fetch(`/api/runs/${M}`)).json();l(se.run),p(se.messages||[]),m("run"),c(null),ae&&L(`${H}/runs/${M}`)}catch(F){console.error("Failed to load run details:",F)}},W=M=>{if(M.source==="reported"){let ae=M.trace_id||String(M.id).replace(/^trace-/,"");window.history.pushState(window.history.state,"",nt(`/traces/${ae}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:nt(`/traces/${ae}`)}}));return}Y(M.record_id||M.id)},ie=()=>{l(null),c(null),p([]),m("run"),L(H)},Me=M=>{m("all"),M?(c({id:M.id,name:M.display_name}),L(`${H}/sessions/${M.id}`)):(c(null),L(`${H}/sessions`))},pe=M=>{x.current=!0,m(M),L(M==="all"?u?`${H}/sessions/${u.id}`:`${H}/sessions`:s?`${H}/runs/${s.id}`:H)},ce=u?u.name||a.find(M=>M.id===u.id)?.display_name||`Session #${u.id}`:null,Q=()=>{let M=new Map;n.forEach(se=>{let oe=`${se.model||"unknown"}|${se.instructions_digest||"none"}`;M.has(oe)||M.set(oe,{key:oe,model:se.model,instructionsDigest:se.instructions_digest,instructionsVersion:se.instructions_version,instructionsCodename:se.instructions_codename,instructionsPreview:se.instructions_preview,runs:[]}),M.get(oe).runs.push(se)});let ae=[...M.values()].map(se=>({...se,count:se.runs.length,completed:se.runs.filter(oe=>oe.status==="complete").length,failed:se.runs.filter(oe=>oe.status==="failed").length,totalTokens:se.runs.reduce((oe,ve)=>oe+(ve.tokens||0),0),avgTokens:se.runs.reduce((oe,ve)=>oe+(ve.tokens||0),0)/se.runs.length,avgDuration:se.runs.reduce((oe,ve)=>oe+(ve.duration_ms||0),0)/se.runs.length,latest:se.runs[0],sortedRuns:[...se.runs].sort((oe,ve)=>(ve.duration_ms||0)-(oe.duration_ms||0))}));ae.sort((se,oe)=>S==="longest"?oe.avgDuration-se.avgDuration:new Date(oe.latest.created_at)-new Date(se.latest.created_at));let F={runs:n.length,completed:n.filter(se=>se.status==="complete").length,tokens:n.reduce((se,oe)=>se+(oe.tokens||0),0),avgDuration:n.length?n.reduce((se,oe)=>se+(oe.duration_ms||0),0)/n.length:0,models:[...new Set(n.map(se=>se.model).filter(Boolean))]};return{cohorts:ae,totals:F}},ee=M=>{switch(M){case"complete":return"bg-green-100 text-green-700";case"failed":return"bg-red-100 text-red-700";case"running":return"bg-blue-100 text-blue-700";case"pending":return"bg-yellow-100 text-yellow-700";case"cancelled":return"bg-gray-100 text-gray-500";default:return"bg-gray-100 text-gray-500"}},$=M=>M?M<1e3?`${M}ms`:M<6e4?`${(M/1e3).toFixed(1)}s`:`${Math.floor(M/6e4)}m ${Math.floor(M%6e4/1e3)}s`:"-",B=M=>M==null?"\u2014":M===0?"$0":M<.01?`$${M.toFixed(4)}`:`$${M.toFixed(2)}`,K=M=>{let ae=new Date(M),se=new Date-ae,oe=Math.floor(se/6e4),ve=Math.floor(se/36e5),Re=Math.floor(se/864e5);return oe<1?"Just now":oe<60?`${oe}m ago`:ve<24?`${ve}h ago`:Re<7?`${Re}d ago`:ae.toLocaleDateString()};return re.default.createElement("div",{className:"flex h-full"},re.default.createElement("div",{className:"w-80 border-r border-gray-200 flex flex-col bg-white"},re.default.createElement("div",{className:"p-4 border-b border-gray-200"},re.default.createElement("div",{className:"flex items-center space-x-3 mb-4"},re.default.createElement("button",{onClick:t,className:"p-1 text-gray-400 hover:text-gray-600 transition-colors"},re.default.createElement("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),re.default.createElement("div",null,re.default.createElement("h2",{className:"font-semibold text-gray-900"},"Agent Interactions"),re.default.createElement("p",{className:"text-sm text-gray-500"},e.name))),re.default.createElement("div",{className:"mb-2"},re.default.createElement(fl,{compact:!0})),re.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1 mb-2 text-sm"},[{value:"",label:"All"},{value:"dashboard",label:"Dashboard"},{value:"reported",label:"Reported"}].map(M=>re.default.createElement("button",{key:M.value||"all",onClick:()=>{D(M.value),j(1)},className:`flex-1 px-2 py-1 rounded-md transition-colors ${O===M.value?"bg-white shadow text-gray-900":"text-gray-600"}`,title:M.value==="dashboard"?"Executions started from this dashboard":M.value==="reported"?"Executions reported by your app via telemetry":"Every execution, however it started"},M.label))),re.default.createElement("select",{value:U,onChange:M=>{N(M.target.value),j(1)},className:"w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500"},re.default.createElement("option",{value:""},"All statuses"),re.default.createElement("option",{value:"complete"},"Completed"),re.default.createElement("option",{value:"failed"},"Failed"),re.default.createElement("option",{value:"running"},"Running"),re.default.createElement("option",{value:"cancelled"},"Cancelled")),re.default.createElement("select",{value:T,onChange:M=>{I(M.target.value),j(1)},className:"w-full mt-2 px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-red-500",title:"Rank these executions"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest running"),re.default.createElement("option",{value:"cost"},"Highest cost"),re.default.createElement("option",{value:"tokens"},"Most tokens"))),re.default.createElement("div",{className:"flex-1 overflow-auto"},_&&n.length===0?re.default.createElement("div",{className:"flex items-center justify-center h-32"},re.default.createElement("div",{className:"animate-spin rounded-full h-6 w-6 border-b-2 border-red-500"})):n.length>0?re.default.createElement(re.default.Fragment,null,n.map(M=>{let ae=M.source==="reported";return re.default.createElement("div",{key:M.id,onClick:()=>W(M),title:ae?"Reported by your app \u2014 opens its trace":"Started from this dashboard",className:`p-4 border-b border-gray-100 cursor-pointer transition-colors ${!ae&&s?.id===M.id?"bg-red-50 border-l-4 border-l-red-500":"hover:bg-gray-50"}`},re.default.createElement("div",{className:"flex items-center justify-between mb-2 gap-2"},re.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(M.status)}`},M.status),re.default.createElement("div",{className:"flex items-center gap-2"},re.default.createElement("span",{className:`px-1.5 py-0.5 rounded text-[10px] uppercase tracking-wide ${ae?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"}`},ae?"reported":"dashboard"),re.default.createElement("span",{className:"text-xs text-gray-400"},K(M.created_at||M.occurred_at)),!ae&&re.default.createElement(ed,{kind:"run",id:M.id,title:"Replay this run"}))),re.default.createElement("p",{className:"text-sm text-gray-700 truncate"},M.input_preview||M.input_prompt?.substring(0,60)||(ae?`${M.action_name||"execution"} \xB7 trace ${String(M.trace_id||"").slice(0,8)}`:"No input")),re.default.createElement("div",{className:"flex items-center space-x-3 mt-2 text-xs text-gray-400 flex-wrap gap-y-1"},M.model&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},M.model),re.default.createElement("span",{className:T==="longest"?"text-gray-700 font-medium":void 0},$(M.duration_ms)),!!M.tokens&&re.default.createElement("span",{className:T==="tokens"?"text-gray-700 font-medium":void 0},M.tokens," tokens"),M.cost!=null&&re.default.createElement("span",{className:T==="cost"?"text-gray-700 font-medium":void 0,title:"Estimated from token counts at this model's published rates"},B(M.cost))))}),X&&re.default.createElement("button",{onClick:()=>j(M=>M+1),disabled:_,className:"w-full py-3 text-sm text-red-600 hover:bg-gray-50 transition-colors"},_?"Loading...":"Load More")):re.default.createElement("div",{className:"p-8 text-center text-gray-400"},re.default.createElement("svg",{className:"w-12 h-12 mx-auto mb-3 text-gray-300",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},re.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})),re.default.createElement("p",null,"No conversations yet")))),re.default.createElement("div",{className:"flex-1 flex flex-col bg-gray-50"},re.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"},re.default.createElement("button",{onClick:t,className:"hover:text-gray-900 hover:underline transition-colors"},e.name),re.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"||s?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:ie,className:"hover:text-gray-900 hover:underline transition-colors"},"Interactions"),re.default.createElement("span",{className:"text-gray-300"},"/"),f==="all"?u?re.default.createElement(re.default.Fragment,null,re.default.createElement("button",{onClick:()=>Me(null),className:"hover:text-gray-900 hover:underline transition-colors"},"Sessions"),re.default.createElement("span",{className:"text-gray-300"},"/"),re.default.createElement("span",{className:"text-gray-900 font-medium"},ce)):re.default.createElement("span",{className:"text-gray-900 font-medium"},"Sessions"):re.default.createElement("span",{className:"text-gray-900 font-medium"},"Run #",s.id)):re.default.createElement("span",{className:"text-gray-900 font-medium"},"Interactions")),re.default.createElement("div",{className:"p-3 bg-white border-b border-gray-200 flex items-center justify-between"},re.default.createElement("div",{className:"flex bg-gray-100 rounded-lg p-1"},re.default.createElement("button",{onClick:()=>pe("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"),re.default.createElement("button",{onClick:()=>pe("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&&re.default.createElement("span",{className:`px-3 py-1 rounded-full text-sm font-medium ${ee(s.status)}`},s.status)),f==="all"?re.default.createElement("div",{className:"flex-1 overflow-auto p-4 space-y-4"},(()=>{let{totals:M}=Q();return re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4 space-y-3"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(Tn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold text-gray-900"},e.name),re.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"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),re.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs)),re.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),re.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.runs?Math.round(M.completed/M.runs*100):0,"%")),re.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),re.default.createElement("p",{className:"text-lg font-bold text-gray-900"},$(Math.round(M.avgDuration)))),re.default.createElement("div",{className:"bg-gray-50 rounded-lg p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),re.default.createElement("p",{className:"text-lg font-bold text-gray-900"},M.tokens.toLocaleString()))))})(),re.default.createElement(Tu,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:Me})):s?re.default.createElement(re.default.Fragment,null,re.default.createElement("div",{className:"p-4 bg-white border-b border-gray-200"},re.default.createElement("div",{className:"flex items-center space-x-3"},re.default.createElement(Tn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-medium text-gray-900"},e.name," \u2014 Run #",s.id),re.default.createElement("p",{className:"text-xs text-gray-500"},new Date(s.created_at).toLocaleString())))),re.default.createElement("div",{ref:P,className:"flex-1 overflow-auto p-6"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 shadow-sm p-4"},d.length>0?re.default.createElement(ls,{messages:d,darkMode:!1}):re.default.createElement(ls,{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}]}))),re.default.createElement("div",{className:"p-4 bg-white border-t border-gray-200"},re.default.createElement("div",{className:"flex items-center justify-center space-x-8 text-sm text-gray-500"},re.default.createElement("span",null,"Duration: ",$(s.duration_ms)),s.total_tokens&&re.default.createElement("span",null,"Tokens: ",s.total_tokens),s.input_tokens&&s.output_tokens&&re.default.createElement("span",null,"Input: ",s.input_tokens," / Output: ",s.output_tokens),s.trace_id&&re.default.createElement("a",{href:nt(`/traces?trace=${s.trace_id}`),className:"font-mono text-xs text-blue-500 hover:underline",title:`${s.trace_id} \u2014 open in Traces`},"trace:",s.trace_id.slice(0,8)," \u2192")))):(()=>{let{cohorts:M,totals:ae}=Q();return M.length===0?re.default.createElement("div",{className:"flex-1 flex items-center justify-center"},re.default.createElement("div",{className:"text-center text-gray-400"},re.default.createElement(Tn,{size:100}),re.default.createElement("p",{className:"mt-4"},"No runs yet \u2014 run the agent to build its report"))):re.default.createElement("div",{className:"flex-1 overflow-auto p-6 space-y-5"},re.default.createElement("div",{className:"flex items-center gap-3"},re.default.createElement(Tn,{size:40}),re.default.createElement("div",null,re.default.createElement("h3",{className:"font-semibold text-gray-900"},"Agent Report"),re.default.createElement("p",{className:"text-xs text-gray-500"},"Recent activity for ",e.name," \u2014 select a run for its full interaction"))),re.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3"},re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Runs"),re.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ae.runs)),re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Success"),re.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ae.runs?Math.round(ae.completed/ae.runs*100):0,"%")),re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Avg Duration"),re.default.createElement("p",{className:"text-xl font-bold text-gray-900"},$(Math.round(ae.avgDuration)))),re.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-3"},re.default.createElement("p",{className:"text-xs text-gray-500"},"Tokens"),re.default.createElement("p",{className:"text-xl font-bold text-gray-900"},ae.tokens.toLocaleString()))),ae.models.length>0&&re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap text-xs"},re.default.createElement("span",{className:"text-gray-500"},"Models used:"),ae.models.map(F=>re.default.createElement("span",{key:F,className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono"},F))),a.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("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Sessions \u2014 grouped interaction streams")),re.default.createElement("div",{className:"divide-y divide-gray-100"},a.map(F=>re.default.createElement("div",{key:F.id,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer flex items-center justify-between gap-3",onClick:()=>Me(F),title:"Open this session's interaction stream"},re.default.createElement("div",{className:"flex items-center gap-2 min-w-0",title:F.display_name},re.default.createElement("span",{className:"px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700 rounded flex-shrink-0"},"SESSION"),re.default.createElement("span",{className:"text-sm text-gray-900 truncate"},F.agent?.name||F.agent_name),F.action_name&&re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-purple-50 text-purple-700 font-mono text-xs flex-shrink-0"},"#",F.action_name)),re.default.createElement("div",{className:"flex items-center gap-3 text-xs text-gray-400 flex-shrink-0"},re.default.createElement("span",null,F.message_count," messages"),re.default.createElement("span",null,(F.tokens?.total||0).toLocaleString()," tokens"),re.default.createElement("span",null,K(F.last_activity_at)),re.default.createElement(ed,{kind:"context",id:F.id,title:"Replay this conversation"})))))),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 flex items-center justify-between"},re.default.createElement("span",{className:"text-xs uppercase tracking-wide text-gray-400"},"Interactions by instructions \xD7 model"),re.default.createElement("select",{value:S,onChange:F=>w(F.target.value),className:"text-xs border border-gray-200 rounded px-2 py-1 text-gray-600"},re.default.createElement("option",{value:"recent"},"Most recent"),re.default.createElement("option",{value:"longest"},"Longest interactions"))),re.default.createElement("div",{className:"divide-y divide-gray-100"},M.map(F=>re.default.createElement("div",{key:F.key},re.default.createElement("div",{className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>k(se=>({...se,[F.key]:!se[F.key]})),title:"Show this configuration's runs"},re.default.createElement("div",{className:"flex items-center gap-2 flex-wrap"},re.default.createElement("span",{className:"px-1.5 py-0.5 rounded bg-indigo-50 text-indigo-700 font-mono text-xs"},F.model||"unknown model"),re.default.createElement("span",{className:"text-xs text-gray-400 font-mono",title:F.instructionsDigest?`sha:${F.instructionsDigest}`:void 0},"instructions"," ",F.instructionsDigest?[F.instructionsVersion,F.instructionsCodename||F.instructionsDigest].filter(Boolean).join(" \xB7 "):"n/a")),F.instructionsPreview&&re.default.createElement("p",{className:"text-xs text-gray-500 mt-1 truncate"},F.instructionsPreview),re.default.createElement("div",{className:"flex items-center gap-3 mt-1.5 text-xs text-gray-400 flex-wrap gap-y-1"},re.default.createElement("span",null,F.count," run",F.count>1?"s":""),re.default.createElement("span",{className:F.failed>0?"text-red-500":"text-green-600"},F.count?Math.round(F.completed/F.count*100):0,"% success"),re.default.createElement("span",null,"avg ",$(Math.round(F.avgDuration))),re.default.createElement("span",null,"avg ",Math.round(F.avgTokens).toLocaleString()," tokens"),re.default.createElement("span",null,"last ",K(F.latest.created_at)))),A[F.key]&&re.default.createElement("div",{className:"bg-gray-50 divide-y divide-gray-100 border-t border-gray-100"},F.sortedRuns.map(se=>re.default.createElement("div",{key:se.id,className:"px-6 py-2 hover:bg-gray-100 cursor-pointer",onClick:()=>Y(se.id),title:"Open this run's interaction"},re.default.createElement("p",{className:"text-xs text-gray-700 truncate"},se.input_preview||"No input"),re.default.createElement("div",{className:"flex items-center gap-3 mt-0.5 text-[11px] text-gray-400"},re.default.createElement("span",{className:se.status==="failed"?"text-red-500":""},se.status),re.default.createElement("span",null,$(se.duration_ms)),se.tokens&&re.default.createElement("span",null,se.tokens.toLocaleString()," tokens"),re.default.createElement("span",null,K(se.created_at)))))))))))})()))}var st=Z(J());var w_e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function xD({onUseTemplate:e,onClose:t}){let[r,n]=(0,st.useState)([]),[o,a]=(0,st.useState)([]),[i,s]=(0,st.useState)(""),[l,u]=(0,st.useState)(null),[c,d]=(0,st.useState)(!0),[p,f]=(0,st.useState)(!1),[m,y]=(0,st.useState)(null);(0,st.useEffect)(()=>{b()},[i]);let b=async()=>{d(!0);try{let g=new URLSearchParams;i&&g.append("category",i);let x=await(await fetch(`/api/templates?${g}`)).json();n(x.templates),a(x.categories)}catch(g){console.error("Failed to load templates:",g)}finally{d(!1)}},h=async g=>{f(!0),y(null);try{let v=await fetch(`/api/templates/${g.id}/use`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.name})});if(v.ok){let x=await v.json();e(x.agent)}else{let x=`Could not create the agent (HTTP ${v.status})`;try{let S=await v.json(),w=S.errors||S.error;w&&(x=Array.isArray(w)?w.join(", "):String(w))}catch{}y(x)}}catch(v){console.error("Failed to create agent from template:",v),y("Could not create the agent \u2014 check your connection and try again.")}finally{f(!1)}};return st.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},st.default.createElement("div",{className:"bg-white rounded-2xl w-full max-w-5xl max-h-[90vh] flex flex-col overflow-hidden"},st.default.createElement("div",{className:"px-6 py-4 border-b border-gray-200 flex items-center justify-between"},st.default.createElement("div",null,st.default.createElement("h2",{className:"text-xl font-semibold text-gray-900"},"Template Library"),st.default.createElement("p",{className:"text-sm text-gray-500"},"Start with a pre-configured agent template")),st.default.createElement("button",{onClick:t,className:"p-2 text-gray-400 hover:text-gray-600 transition-colors"},st.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},st.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))),st.default.createElement("div",{className:"flex-1 flex overflow-hidden"},st.default.createElement("div",{className:"w-48 border-r border-gray-200 p-4 flex-shrink-0"},st.default.createElement("h3",{className:"text-xs font-semibold text-gray-400 uppercase mb-3"},"Categories"),st.default.createElement("div",{className:"space-y-1"},st.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=>st.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"}`},st.default.createElement("span",null,w_e[g]||"\u{1F4E6}"),st.default.createElement("span",{className:"capitalize"},g))))),st.default.createElement("div",{className:"flex-1 p-6 overflow-auto"},c?st.default.createElement("div",{className:"flex items-center justify-center h-full"},st.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"})):r.length>0?st.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-4"},r.map(g=>st.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"}`},st.default.createElement("div",{className:"flex items-start space-x-3"},st.default.createElement("div",{className:"flex-shrink-0"},st.default.createElement(Tn,{size:60})),st.default.createElement("div",{className:"flex-1 min-w-0"},st.default.createElement("div",{className:"flex items-center space-x-2"},st.default.createElement("span",{className:"text-lg"},g.icon),st.default.createElement("h3",{className:"font-medium text-gray-900 truncate"},g.name)),st.default.createElement("p",{className:"text-xs text-gray-500 mt-1 line-clamp-2"},g.description),st.default.createElement("div",{className:"flex items-center space-x-2 mt-2"},st.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-gray-100 rounded capitalize"},g.category),g.featured&&st.default.createElement("span",{className:"text-xs px-2 py-0.5 bg-yellow-100 text-yellow-700 rounded"},"Featured"))))))):st.default.createElement("div",{className:"text-center py-12 text-gray-500"},"No templates found in this category")),l&&st.default.createElement("div",{className:"w-80 border-l border-gray-200 p-6 flex-shrink-0 bg-gray-50 overflow-auto"},st.default.createElement("div",{className:"flex justify-center mb-4"},st.default.createElement(Tn,{size:120})),st.default.createElement("h3",{className:"text-lg font-semibold text-gray-900 text-center"},l.name),st.default.createElement("p",{className:"text-sm text-gray-500 text-center mt-1"},l.description),st.default.createElement("div",{className:"mt-6 space-y-4"},st.default.createElement("div",null,st.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Provider / Model"),st.default.createElement("p",{className:"text-sm text-gray-900"},l.provider," / ",l.model)),l.tools?.length>0&&st.default.createElement("div",null,st.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Tools"),st.default.createElement("div",{className:"flex flex-wrap gap-1 mt-1"},l.tools.map(g=>st.default.createElement("span",{key:g,className:"text-xs px-2 py-0.5 bg-red-100 text-red-700 rounded"},g)))),st.default.createElement("div",null,st.default.createElement("span",{className:"text-xs font-medium text-gray-500 uppercase"},"Usage"),st.default.createElement("p",{className:"text-sm text-gray-900"},l.usage_count," agents created"))),st.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&&st.default.createElement("p",{className:"mt-2 text-sm text-red-600",role:"alert"},m)))))}var pt=Z(J());function bD({currentView:e,onNavigate:t,agentCount:r,pendingInputCount:n,account:o,user:a,gemVersion:i,features:s={}}){let{darkMode:l}=ut(),[u,c]=(0,pt.useState)(!1),d=(0,pt.useRef)(null);(0,pt.useEffect)(()=>{function g(v){d.current&&!d.current.contains(v.target)&&c(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);let p=o?.name||"My Workspace",f=a?.name||a?.email?.split("@")[0]||"User",m={agentCount:r,pendingInputCount:n},y=g=>{let v=g.badge?m[g.badge]:void 0;return g.badgeTone==="attention"&&!v?void 0:v},b=bG(s).map(g=>({...g,items:g.items.map(v=>({id:v.view,label:v.label,icon:v.glyph??Io.nav[v.icon],badge:y(v),badgeTone:v.badgeTone,badgeTitle:v.badgeTitle}))})),h=({item:g})=>pt.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")}},pt.default.createElement("div",{className:"flex items-center space-x-3"},pt.default.createElement("span",{style:{fontFamily:Ot.mono,fontSize:"12px",width:"20px",textAlign:"center"}},g.icon),pt.default.createElement("span",{className:"font-medium"},g.label)),g.badge!==void 0&&g.badgeTone==="attention"&&pt.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"&&pt.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 pt.default.createElement("aside",{className:"w-64 border-r flex flex-col",style:{backgroundColor:l?"#1a1a1a":"#ffffff",borderColor:l?"#2a2a2a":"#e5e7eb"}},pt.default.createElement("div",{className:"h-16 flex items-center px-4 border-b relative",style:{borderColor:l?"#2a2a2a":"#e5e7eb"},ref:d},pt.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"}},pt.default.createElement("div",{className:"flex items-center space-x-3 min-w-0"},pt.default.createElement(Tn,{size:28}),pt.default.createElement("span",{className:`font-semibold truncate ${l?"text-white":"text-gray-900"}`},p)),pt.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"},pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"}))),u&&pt.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"}},pt.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},pt.default.createElement("div",{className:"flex items-center space-x-3"},pt.default.createElement(Tn,{size:32}),pt.default.createElement("div",{className:"min-w-0"},pt.default.createElement("div",{className:`font-medium truncate ${l?"text-white":"text-gray-900"}`},p)))),pt.default.createElement("div",{className:"py-1"},pt.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"}`},pt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"}),pt.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})),pt.default.createElement("span",null,"Settings")),pt.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"}`},pt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"})),pt.default.createElement("span",null,"Organization"))),pt.default.createElement("div",{className:"border-t py-1",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},pt.default.createElement("div",{className:`px-4 py-2 flex items-center space-x-3 ${l?"text-gray-300":"text-gray-700"}`},pt.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},pt.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"})),pt.default.createElement("span",{className:"text-sm"},f))))),pt.default.createElement("nav",{className:"flex-1 px-4 py-4 space-y-1 overflow-y-auto"},b.map(g=>{let v=pt.default.createElement("div",{className:"space-y-1"},g.items.map(x=>pt.default.createElement(h,{key:x.id,item:x})));return g.label?pt.default.createElement("div",{key:g.id,className:"pt-4"},pt.default.createElement("div",{className:"px-4 pb-2"},pt.default.createElement("span",{className:`text-xs font-semibold uppercase tracking-wide ${l?"text-gray-500":"text-gray-400"}`},g.label)),v):pt.default.createElement(pt.default.Fragment,{key:g.id},v)})),pt.default.createElement("div",{className:"px-4 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},pt.default.createElement("div",{className:`text-xs font-semibold uppercase mb-3 ${l?"text-gray-500":"text-gray-400"}`},"Resources"),pt.default.createElement("div",{className:"space-y-2"},pt.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"}`},pt.default.createElement("span",{style:{fontFamily:Ot.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Io.nav.docs),pt.default.createElement("span",null,"Documentation")),pt.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"}`},pt.default.createElement("span",{style:{fontFamily:Ot.mono,fontSize:"12px",width:"20px",textAlign:"center"}},Io.nav.github),pt.default.createElement("span",null,"GitHub")))),pt.default.createElement("div",{className:"px-6 py-4 border-t",style:{borderColor:l?"#2a2a2a":"#e5e7eb"}},pt.default.createElement("div",{className:`text-xs ${l?"text-gray-500":"text-gray-400"}`},"Active Agent ",i?`v${i}`:"")))}var vr=Z(J());function wD({user:e,account:t}){let{darkMode:r,toggleDarkMode:n}=ut(),[o,a]=(0,vr.useState)(!1),i=(0,vr.useRef)(null);(0,vr.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 vr.default.createElement("header",{className:"h-16 border-b flex items-center justify-between px-6",style:{backgroundColor:r?"#1a1a1a":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"}},vr.default.createElement("div",{className:"flex items-center space-x-4"}),vr.default.createElement("div",{className:"flex items-center space-x-4"},vr.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?vr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},vr.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"})):vr.default.createElement("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20"},vr.default.createElement("path",{d:"M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"}))),vr.default.createElement("div",{className:`flex items-center space-x-2 text-sm ${r?"text-gray-400":"text-gray-500"}`},vr.default.createElement("span",{className:"w-2 h-2 bg-green-400 rounded-full"}),vr.default.createElement("span",null,"Connected")),vr.default.createElement("div",{className:"relative",ref:i},vr.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"}},vr.default.createElement("div",{className:"w-8 h-8 bg-red-100 rounded-full flex items-center justify-center"},vr.default.createElement("span",{className:"text-red-600 font-medium text-sm"},c))),o&&vr.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"}},vr.default.createElement("div",{className:"px-4 py-3 border-b",style:{borderColor:r?"#2a2a2a":"#e5e7eb"}},vr.default.createElement("div",{className:"flex items-center space-x-3"},vr.default.createElement("div",{className:"w-10 h-10 bg-red-100 rounded-full flex items-center justify-center"},vr.default.createElement("span",{className:"text-red-600 font-medium"},c)),vr.default.createElement("div",null,vr.default.createElement("div",{className:`font-medium ${r?"text-white":"text-gray-900"}`},u),vr.default.createElement("div",{className:`text-sm ${r?"text-gray-400":"text-gray-500"}`},e?.email)))),s&&vr.default.createElement("div",{className:"py-1"},vr.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"}`},vr.default.createElement("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},vr.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"})),vr.default.createElement("span",null,"Sign out")))))))}var ze=Z(J());var St=Z(J());var SD=150,S_e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),k_e=e=>e.length?S_e(e)/e.length:0,Us=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),kD=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},af=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),__e=4,yh=e=>Math.max(__e,kD(e)),VJ=(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},C_e=5.5,A_e=12,E_e=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*C_e+A_e,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},sf=(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(" ")},C2=(e,t)=>{let r=sf(e,t);return r?`0,100 ${r} 100,100`:""},GJ=(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 k_e(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(" ")},Nx=(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 YJ({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return St.default.createElement(Fe,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},St.default.createElement(Ve,{size:11,spacing:"0.05em"},e),St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},St.default.createElement("span",{style:{fontFamily:V,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?St.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-muted)"}},r):null),St.default.createElement("div",{title:n,style:{fontFamily:V,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),St.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},St.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},St.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),St.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function XJ({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=SD}){let p=(0,St.useRef)(null),f=gx(p),m="1px dashed var(--color-text-secondary)";return St.default.createElement(Fe,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},St.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),St.default.createElement("span",{style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)"}},t),St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),St.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>St.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:V,fontSize:10,color:"var(--color-text-secondary)"}},St.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),St.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>St.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},St.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:V,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&St.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,b)=>St.default.createElement("div",{key:b,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>St.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&St.default.createElement("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none","aria-hidden":"true",style:{position:"absolute",inset:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"}},l.map((y,b)=>St.default.createElement("polygon",{key:b,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,b)=>St.default.createElement("polyline",{key:b,points:y.points,fill:"none",stroke:y.color,strokeWidth:y.width||1.5,strokeLinejoin:"round",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"}))),u.map((y,b)=>{let h=E_e(y,f),g=`${Number(y.left).toFixed(2)}%`;return St.default.createElement("div",{key:b,style:{position:"absolute",top:0,bottom:0,pointerEvents:"none",...h?{left:0,width:g,borderRight:m}:{left:g,right:0,borderLeft:m}}},St.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:V,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),St.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:V,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,b)=>St.default.createElement("span",{key:b},y))))}function vh({label:e,qualifier:t,meta:r,children:n}){return St.default.createElement(Fe,{padding:0,style:{overflow:"hidden"}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},St.default.createElement(Ve,null,e),t?St.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function _D({template:e,columns:t}){return St.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:V,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},St.default.createElement("span",null),t.map(r=>St.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function A2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return St.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 CD({children:e,padding:t="8px 14px"}){return St.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function Tx({children:e}){return St.default.createElement("div",{style:{padding:"12px 14px",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},e)}function AD({color:e}){return St.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function ED({pct:e,color:t}){return St.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},St.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function ND({pct:e,color:t,width:r=70}){return St.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},St.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function gs({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return St.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var RJ=6e4,N_e=1180,bh={"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"}},T_e=Object.keys(bh).map(e=>({value:e,label:e})),OD="24h",xh=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],Ox=[{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)"}],ZJ=e=>Ox.find(t=>t.type===e)?.color||"var(--color-text-muted)",O_e=3,N2="var(--color-text-primary)",P_e={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},M_e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],TD=e=>String(e).padStart(2,"0"),Ft=e=>e==null||Number.isNaN(Number(e))?0:Number(e),I_e=e=>e.reduce((t,r)=>t+Ft(r),0),JJ=e=>`${Ft(e).toFixed(1)}%`,E2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,D_e=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,j_e=(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},$_e=e=>{let t=String(e.label||"incident"),r=Ox.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},L_e=e=>{let t=Ft(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},QJ=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},z_e=(e,t,r=Date.now())=>{let n=Math.max(1,Ft(t))*1e3,o=Math.max(1,Math.round(Ft(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()}))},B_e=(e,t)=>{let r=e.summary||{},n=bh[e.range]||bh[t]||bh[OD],o=Ft(e.bucket_seconds)||n.seconds,a=Ft(e.window_minutes)||(e.window_hours?Ft(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:z_e(a,o),s=Ft(e.totals?.requests??r.total_requests),l=Ft(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:Ft(r.errors),error_rate:Ft(r.error_rate),tokens_in:Ft(r.tokens_input),tokens_out:Ft(r.tokens_output),tokens:Ft(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:Ft(f.requests),share_pct:s?Ft(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?Ft(f.errors)/Ft(f.requests)*100:0,cost:Ft(f.cost),tokens:Ft(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:Ox.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:[]}},eQ=e=>{let t=bh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:L_e(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},F_e=e=>{let[t,r]=(0,ze.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 PD(){let[e,t]=(0,ze.useState)(OD),[r,n]=(0,ze.useState)(""),[o,a]=(0,ze.useState)(null),[i,s]=(0,ze.useState)(!0),[l,u]=(0,ze.useState)(null),[c,d]=(0,ze.useState)(!1),p=(0,ze.useRef)(0),f=F_e(N_e),m=(0,ze.useRef)(null),y=(0,ze.useCallback)(async()=>{let S=++p.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[A,k]=await Promise.all([QJ(w),r?QJ(new URLSearchParams({range:e})).catch(()=>null):null]);if(S!==p.current)return;let _=r?k?.agents:A.agents;Array.isArray(_)&&(m.current=_),a({data:A,ranking:Array.isArray(_)?_:m.current}),u(null)}catch(w){if(S!==p.current)return;u(w.message)}finally{S===p.current&&s(!1)}},[e,r]);(0,ze.useEffect)(()=>{let S=!1;d(!0),y().finally(()=>{S||d(!1)});let w=setInterval(y,RJ);return()=>{S=!0,clearInterval(w)}},[y]);let b=(0,ze.useMemo)(()=>o?B_e(o.data,e):null,[o,e]),h=(0,ze.useMemo)(()=>b?b.agent?j_e(o.ranking,b.agents):b.agents:[],[b,o]),g=(0,ze.useMemo)(()=>h.map(S=>S.name).filter(Boolean),[h]),v=(0,ze.useMemo)(()=>{let S=Object.fromEntries(g.map((A,k)=>[A,xh[k%xh.length]])),w=g.length;return(b?b.agents:[]).forEach(A=>{A.name&&!S[A.name]&&(S[A.name]=xh[w++%xh.length])}),A=>S[A]||xh[0]},[g,b]),x=(0,ze.useMemo)(()=>b?W_e(b,v):null,[b,v]);return i?ze.default.createElement("div",{className:"flex items-center justify-center h-64"},ze.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!b?ze.default.createElement("div",null,ze.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:N2}},"Metrics"),ze.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}`:"")):ze.default.createElement(U_e,{m:b,view:x,railAgents:h,range:bh[e]?e:OD,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:f,pending:c,onRange:t,onAgent:n})}function U_e({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=eQ(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:N2,fontSize:13}},ze.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},ze.default.createElement("div",{style:{flex:1,minWidth:240}},ze.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),ze.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}`:"")),ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},ze.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:N2,cursor:"pointer"}},ze.default.createElement("option",{value:""},"All agents"),a.map(m=>ze.default.createElement("option",{key:m,value:m},m))),e.environment&&ze.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:V,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),ze.default.createElement(us,{options:T_e,value:n,onChange:u}),ze.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${RJ/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},ze.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?ze.default.createElement(Fe,{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",ze.default.createElement("div",{style:{marginTop:8,fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):ze.default.createElement(ze.default.Fragment,null,ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>ze.default.createElement(YJ,{key:m.label,...m,deltaSub:d.prev}))),ze.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}},ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>ze.default.createElement(XJ,{key:m.title,...m,xLabels:t.xLabels,height:SD}))),ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},ze.default.createElement(vh,{label:"Agents",qualifier:"by requests \xB7 click to filter"},ze.default.createElement(_D,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&ze.default.createElement(Tx,null,"no agents in this window"),r.map(m=>ze.default.createElement(A2,{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}`},ze.default.createElement("div",{style:{minWidth:0}},ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},ze.default.createElement(AD,{color:i(m.name)}),ze.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),ze.default.createElement(ED,{pct:m.share_pct,color:i(m.name)})),ze.default.createElement(gs,null,An(m.requests)),ze.default.createElement(gs,{color:"var(--color-text-secondary)"},Dn(m.p95_ms)),ze.default.createElement(gs,{color:Ft(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},JJ(m.error_rate)),ze.default.createElement(gs,null,R0(m.cost))))),ze.default.createElement(vh,{label:"Models",qualifier:"by tokens"},e.models.length===0&&ze.default.createElement(Tx,null,"no model usage in this window"),e.models.map((m,y)=>ze.default.createElement(A2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},ze.default.createElement("div",{style:{minWidth:0}},ze.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},ze.default.createElement("span",{style:{fontFamily:V,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&ze.default.createElement("span",{style:{fontFamily:V,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),ze.default.createElement(ED,{pct:m.share_pct,color:"var(--color-token-in)"})),ze.default.createElement(gs,null,An(m.tokens)),ze.default.createElement(gs,{color:"var(--color-text-secondary)"},R0(m.cost))))),ze.default.createElement(vh,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&ze.default.createElement(Tx,null,"no actions in this window"),e.actions.map(m=>ze.default.createElement(CD,{key:m.name},ze.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:V,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),ze.default.createElement(ND,{pct:t.slowestP95?Ft(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),ze.default.createElement(gs,{weight:600,width:40},Dn(m.p95_ms))))),ze.default.createElement(vh,{label:"Tools",qualifier:"by calls"},ze.default.createElement(_D,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&ze.default.createElement(Tx,null,"no tool calls in this window"),e.tools.map(m=>ze.default.createElement(A2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},ze.default.createElement("span",{title:m.name,style:{fontFamily:V,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),ze.default.createElement(gs,null,An(m.calls)),ze.default.createElement(gs,{color:"var(--color-text-secondary)"},Dn(m.avg_ms)),ze.default.createElement(gs,{color:Ft(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},JJ(m.error_rate))))),ze.default.createElement(vh,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>ze.default.createElement(CD,{key:m.type},ze.default.createElement(AD,{color:ZJ(m.type)}),ze.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),ze.default.createElement(ND,{pct:t.errorTotal?Ft(m.count)/t.errorTotal*100:0,color:ZJ(m.type)}),ze.default.createElement(gs,{weight:600,width:32},Math.round(Ft(m.count))))))))))}function W_e(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=eQ(e),s=r.map(F=>new Date(F.ts)),l=e.windowMinutes>=2880,u=F=>Number.isNaN(F.getTime())?"":l?`${M_e[F.getDay()]} ${TD(F.getHours())}h`:`${TD(F.getHours())}:${TD(F.getMinutes())}`,c=a?[0,1,2,3,4,5,6].map(F=>F===6?"now":u(s[Math.round(F*(a-1)/6)])):[],d=F=>r.map(se=>Ft(se[F])),p=d("requests"),f=d("errors"),m=d("tokens_in"),y=d("tokens_out"),b=d("cost"),h=d("tool_calls"),g=d("tool_errors"),v=F=>r.map(se=>se[F]==null?null:Ft(se[F])),x=v("p50_ms"),S=v("p95_ms"),w=v("p99_ms"),A=r.map(F=>F.requests_by_agent||{}),k=e.agents.map(F=>F.name).filter(Boolean);A.forEach(F=>Object.keys(F).forEach(se=>{k.includes(se)||k.push(se)}));let _=k.length?k.map(F=>({label:F,color:t(F),data:A.map(se=>Ft(se[F]))})):[{label:"requests",color:xh[0],data:p}],C=Ox.map(F=>({label:F.type,color:F.color,data:r.map(se=>Ft((se.errors_by_type||{})[F.type]))})),E=(Ft(e.bucketSeconds)||(a>1?(s[1]-s[0])/1e3:0))*1e3,j=(F,se)=>{if(!F||a<2||!E)return null;let oe=new Date(F.ts).getTime();if(Number.isNaN(oe))return null;let Re=Math.min(a-1,Math.max(0,Math.floor((oe-s[0].getTime())/E)))/(a-1);return{left:Re*100,label:se,flip:Re>.55}},X=e.markers.filter(F=>F.kind==="deploy").sort((F,se)=>new Date(F.ts)-new Date(se.ts)).slice(-O_e).map(F=>j(F,F.label)).filter(Boolean),z=e.markers.find(F=>F.kind==="incident"),U=z?j(z,$_e(z)):null,N=U?[U]:[],O=yh(Us(p)*1.1),D=yh(Us(f)*1.15),T=yh(Math.max(Us(w),Us(S),Us(x))*1.05),I=yh(Math.max(Us(m),Us(y))*1.1),P=kD(Us(b)*1.1),H=VJ(P),G=yh(Us(h)*1.1),L=Ft(n.requests),Y=Ft(n.requests_per_minute),W=Ft(n.errors),ie=Ft(n.error_rate),Me=Ft(n.tokens)||Ft(n.tokens_in)+Ft(n.tokens_out),pe=Ft(n.cost),ce=n.cost_per_request!=null?Ft(n.cost_per_request):L?pe/L:0,Q=Ft(n.tool_calls),ee=n.tool_error_rate!=null?Ft(n.tool_error_rate):Q?Ft(n.tool_errors)/Q*100:0,$=Ft(e.errorsByType.find(F=>F.type===Ox[0].type)?.count),B=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${An(L)} \xB7 ${Y.toFixed(1)}/min`,legend:_.map(F=>({label:F.label,color:F.color})),ticks:af(O,An),buckets:Nx(_,O,F=>`${u(s[F])} \xB7 ${Math.round(p[F])} req`),markers:X},{title:"Latency",sub:"generation percentiles",value:`p50 ${Dn(n.p50_ms)}`,legend:[{label:`p50 ${Dn(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${Dn(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${Dn(n.p99_ms)}`,color:"var(--color-error)"}],ticks:af(T,D_e),lines:[{points:sf(w,T),color:"var(--color-error)",width:1.5},{points:sf(S,T),color:"var(--color-warning)",width:1.5},{points:sf(x,T),color:"var(--color-token-in)",width:2}],areas:[{points:C2(x,T),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${ie.toFixed(2)}% \xB7 ${E2(Math.round(W),"error")}`,valueColor:ie>1?"var(--color-error)":N2,legend:C.map(F=>({label:F.label,color:F.color})),ticks:af(D,F=>String(Math.round(F))),buckets:Nx(C,D,F=>`${u(s[F])} \xB7 ${E2(Math.round(f[F]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${An(Me)} \xB7 in ${An(n.tokens_in)} / out ${An(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:af(I,An),lines:[{points:sf(m,I),color:"var(--color-token-in)",width:1.5},{points:sf(y,I),color:"var(--color-token-out)",width:1.5}],areas:[{points:C2(m,I),color:"var(--color-token-in)"},{points:C2(y,I),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${R0(pe)} \xB7 ${ex(ce)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:af(P,F=>ex(F,H)),buckets:Nx([{color:"var(--color-text-secondary)",data:b}],P,F=>`${u(s[F])} \xB7 ${ex(b[F],H)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${An(Q)} \xB7 ${ee.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:af(G,An),buckets:Nx([{color:"var(--span-tool)",data:h.map((F,se)=>Math.max(0,F-g[se]))},{color:"var(--color-error)",data:g}],G,F=>`${u(s[F])} \xB7 ${E2(Math.round(h[F]),"call")}`)}],K=(F,se,oe)=>{let ve=F==null?null:Ft(F);return ve==null||ve===0?"muted":se&&se(ve)?"success":oe&&oe(ve)?"error":"muted"},M=(F,se,oe,ve,Re,tt,he,le)=>({label:F,value:se,unit:oe,sub:ve,delta:Re,deltaColor:P_e[tt],spark:GJ(he),sparkColor:le});return{signals:[M("Requests",An(L),"",`${Y.toFixed(1)} req/min`,eh(o.requests_pct),K(o.requests_pct,F=>F>0,null),p,"var(--color-token-in)"),M("Latency",Dn(n.p50_ms),"p50",`p95 ${Dn(n.p95_ms)} \xB7 p99 ${Dn(n.p99_ms)}`,eh(o.p50_pct),K(o.p50_pct,F=>F<0,F=>F>0),x,"var(--color-token-in)"),M("Error rate",ie.toFixed(2),"%",`${E2(Math.round(W),"error")} \xB7 ${Math.round($)} rate-limited`,eh(o.error_rate_pt," pt",1),K(o.error_rate_pt,F=>F<0,F=>F>0),f,"var(--color-error)"),M("Tokens",An(Me),"",`in ${An(n.tokens_in)} \xB7 out ${An(n.tokens_out)}`,eh(o.tokens_pct),"muted",m.map((F,se)=>F+y[se]),"var(--color-token-in)"),M("Cost",R0(pe),"",`${ex(ce)} per request`,eh(o.cost_pct),"muted",b,"var(--color-text-secondary)")],panels:B,xLabels:c,slowestP95:Us(e.actions.map(F=>F.p95_ms)),errorTotal:I_e(e.errorsByType.map(F=>F.count))}}var Be=Z(J());var H_e=6e4,q_e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],tQ={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)"}},Px=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),rQ=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,K_e=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 MD({onOpenServer:e}){let{darkMode:t}=ut(),[r,n]=(0,Be.useState)(null),[o,a]=(0,Be.useState)(!0),[i,s]=(0,Be.useState)(null),[l,u]=(0,Be.useState)("all"),[c,d]=(0,Be.useState)(""),[p,f]=(0,Be.useState)(168),[m,y]=(0,Be.useState)(null),b=(0,Be.useCallback)(async()=>{try{let _=new URLSearchParams({hours:String(p)});l!=="all"&&_.set("origin",l),c.trim()&&_.set("q",c.trim());let C=await fetch(`/api/tools?${_}`);if(!C.ok)throw new Error(`Request failed (${C.status})`);n(await C.json()),s(null)}catch(_){s(_.message)}finally{a(!1)}},[l,c,p]);(0,Be.useEffect)(()=>{let _=setTimeout(b,c?250:0);return()=>clearTimeout(_)},[b,c]),(0,Be.useEffect)(()=>{let _=setInterval(b,H_e);return()=>clearInterval(_)},[b]);let h={bg:t?"transparent":"#f9fafb",cardBg:t?"rgba(255,255,255,0.05)":"#ffffff",border:t?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:t?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:t?"#ffffff":"#111827",textSecondary:t?"rgba(255,255,255,0.6)":"#6b7280",textMuted:t?"rgba(255,255,255,0.4)":"#9ca3af",textCell:t?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:t?"rgba(239,68,68,0.2)":"#fef2f2",inputBg:t?"rgba(255,255,255,0.06)":"#ffffff"},g=_=>{let C=tQ[_]||tQ.agent;return{fg:t?C.dark:C.light,bg:t?C.bgDark:C.bgLight}};if(o&&!r)return Be.default.createElement("div",{className:"flex items-center justify-center h-64"},Be.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(i&&!r)return Be.default.createElement("div",{style:{padding:"24px"}},Be.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Be.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:h.errorBg,borderRadius:"8px",color:h.error,fontSize:"14px"}},"Failed to load tools: ",i));let{tools:v=[],summary:x={},origins:S={},sources:w={}}=r||{},A=!w.telemetry&&!w.generations&&!w.messages&&!w.declared,k=({label:_,value:C,hint:E,tone:j})=>Be.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${h.border}`}},Be.default.createElement("div",{style:{fontSize:"11px",color:h.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},_),Be.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:j||h.textPrimary}},C),E&&Be.default.createElement("div",{style:{fontSize:"13px",color:h.textSecondary,marginTop:"8px"}},E));return Be.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:h.bg}},Be.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${h.border}`,marginBottom:"16px"}},Be.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},Be.default.createElement("div",null,Be.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:h.textPrimary,margin:0}},"Tools"),Be.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")),Be.default.createElement("div",{style:{display:"flex",gap:"4px"}},q_e.map(_=>Be.default.createElement("button",{key:_.value,onClick:()=>f(_.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${p===_.value?"#ef4444":h.border}`,background:p===_.value?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:p===_.value?"#ef4444":h.textSecondary}},_.label))))),Be.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},Be.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},Be.default.createElement(k,{label:"Tools Detected",value:Px(x.total_tools),hint:`${x.active_tools||0} called in this window`}),Be.default.createElement(k,{label:"Tool Calls",value:Px(x.total_calls),hint:`${rQ(x.avg_duration_ms)} average`}),Be.default.createElement(k,{label:"Error Rate",value:`${x.error_rate||0}%`,tone:x.error_rate>5?h.error:h.textPrimary,hint:`${x.total_errors||0} failed call${x.total_errors===1?"":"s"}`}),Be.default.createElement(k,{label:"From MCP",value:Px(x.mcp_tools),hint:`across ${x.mcp_servers_active||0} active server${x.mcp_servers_active===1?"":"s"}`}),Be.default.createElement(k,{label:"Never Called",value:Px(x.unused_tools),hint:"offered or configured, unused"})),Be.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap",alignItems:"center"}},Object.entries(S).map(([_,C])=>Be.default.createElement("button",{key:_,onClick:()=>u(_),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${l===_?"#ef4444":h.border}`,background:l===_?t?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:l===_?"#ef4444":h.textSecondary}},C)),Be.default.createElement("input",{value:c,onChange:_=>d(_.target.value),placeholder:"Filter by name\u2026",style:{marginLeft:"auto",padding:"6px 12px",fontSize:"13px",borderRadius:"6px",minWidth:"200px",border:`1px solid ${h.border}`,background:h.inputBg,color:h.textPrimary}})),Be.default.createElement("div",{style:{background:h.cardBg,borderRadius:"12px",border:`1px solid ${h.border}`,overflow:"hidden"}},v.length===0?Be.default.createElement("div",{style:{textAlign:"center",padding:"48px 24px",color:h.textSecondary,fontSize:"14px"}},A?"No tool activity yet \u2014 run an agent, or point your app's ActiveAgent telemetry at this workspace":"No tools match these filters"):Be.default.createElement("div",{style:{overflowX:"auto"}},Be.default.createElement("table",{style:{width:"100%",borderCollapse:"collapse",minWidth:"760px"}},Be.default.createElement("thead",null,Be.default.createElement("tr",{style:{textAlign:"left",fontSize:"13px",color:h.textSecondary,borderBottom:`1px solid ${h.border}`}},Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Tool"),Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500"}},"Source"),Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Calls"),Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Errors"),Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Avg"),Be.default.createElement("th",{style:{padding:"12px 16px",fontWeight:"500",textAlign:"right"}},"Last seen"))),Be.default.createElement("tbody",null,v.map((_,C)=>{let E=g(_.origin),j=m===_.name;return Be.default.createElement(Be.default.Fragment,{key:_.name},Be.default.createElement("tr",{onClick:()=>y(j?null:_.name),style:{borderBottom:C{X.stopPropagation(),_.mcp_server&&e&&e(_.mcp_server)},style:{fontSize:"11px",padding:"3px 8px",borderRadius:"6px",border:"none",background:E.bg,color:E.fg,fontFamily:"monospace",cursor:_.mcp_server&&e?"pointer":"default"},title:_.mcp_server?`Open ${_.mcp_server} in MCP Services`:_.source_label},_.source_label)),Be.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},Px(_.calls)),Be.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",fontFamily:"monospace",color:_.errors>0?h.error:h.textCell}},_.errors),Be.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textCell,fontFamily:"monospace"}},rQ(_.avg_duration_ms)),Be.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},K_e(_.last_seen))),j&&Be.default.createElement("tr",{style:{borderBottom:CBe.default.createElement("span",{key:_,style:{color:w[_]?h.textSecondary:h.textMuted,opacity:w[_]?1:.5}},w[_]?"\u25CF":"\u25CB"," ",C)))))}function V_e({tool:e,colors:t,tone:r,darkMode:n}){let o=({label:a,children:i})=>Be.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},Be.default.createElement("span",{style:{color:t.textMuted,minWidth:"108px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},a),Be.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},i));return Be.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}`}},Be.default.createElement(o,{label:"Full name"},Be.default.createElement("code",{style:{fontFamily:"monospace"}},e.name)),e.description&&Be.default.createElement(o,{label:"Description"},e.description),Be.default.createElement(o,{label:"Parameters"},e.parameters?.length>0?Be.default.createElement("code",{style:{fontFamily:"monospace",color:r.fg}},e.parameters.join(", ")):Be.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),Be.default.createElement(o,{label:"Agents"},e.agents?.length>0?e.agents.join(", "):Be.default.createElement("span",{style:{color:t.textMuted}},"\u2014")),e.configured_by?.length>0&&Be.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),Be.default.createElement(o,{label:"Call breakdown"},Be.default.createElement("span",{style:{fontFamily:"monospace"}},e.traced_calls," traced \xB7 ",e.requested," requested \xB7 ",e.results," results")),e.sample_arguments&&Be.default.createElement(o,{label:"Last arguments"},Be.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",color:t.textMuted}},e.sample_arguments)),e.last_error&&Be.default.createElement(o,{label:"Last error"},Be.default.createElement("span",{style:{color:t.error}},e.last_error)),Be.default.createElement(o,{label:"Detected from"},e.detected_from?.join(", ")||"\u2014"))}var We=Z(J());var G_e=6e4,Y_e=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],X_e=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],Z_e=["http","streamable_http","sse"],nQ={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)"}},Mx=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function ID({focusServer:e,onOpenTools:t}){let{darkMode:r}=ut(),[n,o]=(0,We.useState)(null),[a,i]=(0,We.useState)(!0),[s,l]=(0,We.useState)(null),[u,c]=(0,We.useState)("all"),[d,p]=(0,We.useState)(168),[f,m]=(0,We.useState)(e||null),[y,b]=(0,We.useState)(null),[h,g]=(0,We.useState)(null),v=(0,We.useCallback)(async()=>{try{let z=await fetch(`/api/mcp_servers?hours=${d}`);if(!z.ok)throw new Error(`Request failed (${z.status})`);o(await z.json()),l(null)}catch(z){l(z.message)}finally{i(!1)}},[d]);(0,We.useEffect)(()=>{v();let z=setInterval(v,G_e);return()=>clearInterval(z)},[v]),(0,We.useEffect)(()=>{e&&m(e)},[e]);let x={bg:r?"transparent":"#f9fafb",cardBg:r?"rgba(255,255,255,0.05)":"#ffffff",border:r?"rgba(255,255,255,0.1)":"#e5e7eb",borderLight:r?"rgba(255,255,255,0.05)":"#f3f4f6",textPrimary:r?"#ffffff":"#111827",textSecondary:r?"rgba(255,255,255,0.6)":"#6b7280",textMuted:r?"rgba(255,255,255,0.4)":"#9ca3af",textCell:r?"rgba(255,255,255,0.7)":"#4b5563",error:"#ef4444",errorBg:r?"rgba(239,68,68,0.2)":"#fef2f2",codeBg:r?"rgba(0,0,0,0.35)":"#f9fafb"},S=z=>{let U=nQ[z]||nQ.available;return{fg:r?U.dark:U.light,bg:r?U.bgDark:U.bgLight}},w=async z=>{b(z.key),g(null);try{let U=await fetch(`/api/mcp_servers/${encodeURIComponent(z.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:`${z.name} is starting in a sandbox (${N.sandbox.session_id.slice(0,8)}\u2026)`}),v()}catch(U){g({kind:"error",text:U.message})}finally{b(null)}};if(a&&!n)return 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"}));if(s&&!n)return We.default.createElement("div",{style:{padding:"24px"}},We.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:x.textPrimary,margin:0}},"MCP Services"),We.default.createElement("div",{style:{marginTop:"16px",padding:"12px 16px",background:x.errorBg,borderRadius:"8px",color:x.error,fontSize:"14px"}},"Failed to load MCP services: ",s));let{servers:A=[],summary:k={},sandboxes:_=[],statuses:C={}}=n||{},E=u==="all"?A:A.filter(z=>z.status===u),j=new Set(_.flatMap(z=>z.mcp_servers||[])),X=({label:z,value:U,hint:N})=>We.default.createElement("div",{style:{background:x.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${x.border}`}},We.default.createElement("div",{style:{fontSize:"11px",color:x.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},z),We.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:x.textPrimary}},U),N&&We.default.createElement("div",{style:{fontSize:"13px",color:x.textSecondary,marginTop:"8px"}},N));return We.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:x.bg}},We.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${x.border}`,marginBottom:"16px"}},We.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},We.default.createElement("div",null,We.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:x.textPrimary,margin:0}},"MCP Services"),We.default.createElement("p",{style:{fontSize:"14px",color:x.textSecondary,marginTop:"4px"}},"Servers detected from your agents' traffic, plus the defaults you can connect or run in a sandbox")),We.default.createElement("div",{style:{display:"flex",gap:"4px"}},Y_e.map(z=>We.default.createElement("button",{key:z.value,onClick:()=>p(z.value),style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${d===z.value?"#ef4444":x.border}`,background:d===z.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:d===z.value?"#ef4444":x.textSecondary}},z.label))))),We.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},We.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},We.default.createElement(X,{label:"Active",value:Mx(k.active),hint:"called in this window"}),We.default.createElement(X,{label:"Configured",value:Mx(k.configured),hint:"declared, no traffic yet"}),We.default.createElement(X,{label:"Available",value:Mx(k.available),hint:"defaults you can connect"}),We.default.createElement(X,{label:"Tool Calls",value:Mx(k.total_calls),hint:"through MCP servers"})),h&&We.default.createElement("div",{style:{marginBottom:"16px",padding:"12px 16px",borderRadius:"8px",fontSize:"14px",background:h.kind==="error"?x.errorBg:r?"rgba(34,197,94,0.15)":"#f0fdf4",color:h.kind==="error"?x.error:r?"#86efac":"#15803d"}},h.text),We.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},X_e.map(z=>We.default.createElement("button",{key:z.value,onClick:()=>c(z.value),title:C[z.value]||"Every MCP service known to this workspace",style:{padding:"6px 12px",fontSize:"13px",borderRadius:"6px",cursor:"pointer",border:`1px solid ${u===z.value?"#ef4444":x.border}`,background:u===z.value?r?"rgba(239,68,68,0.15)":"#fef2f2":"transparent",color:u===z.value?"#ef4444":x.textSecondary}},z.label))),We.default.createElement("div",{style:{display:"grid",gap:"12px"}},E.length===0?We.default.createElement("div",{style:{background:x.cardBg,borderRadius:"12px",border:`1px solid ${x.border}`,textAlign:"center",padding:"48px 24px",color:x.textSecondary,fontSize:"14px"}},"No MCP services in this state"):E.map(z=>{let U=S(z.status),N=f===z.key,O=j.has(z.key);return We.default.createElement("div",{key:z.key,style:{background:x.cardBg,borderRadius:"12px",border:`1px solid ${N?U.fg:x.border}`,overflow:"hidden"}},We.default.createElement("div",{onClick:()=>m(N?null:z.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},We.default.createElement("div",{style:{flex:1,minWidth:"220px"}},We.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},We.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:x.textPrimary}},z.name),We.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:U.bg,color:U.fg,textTransform:"uppercase",letterSpacing:"0.04em"}},z.status),z.first_party&&We.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),zp(z)&&We.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"),z0(z)&&We.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"),AC(z)&&We.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:x.borderLight,color:x.textMuted},title:"Seen in your traffic but not in the platform catalog"},"undocumented"),O&&We.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")),z.description&&We.default.createElement("div",{style:{fontSize:"13px",color:x.textSecondary,marginTop:"4px"}},z.description)),We.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},We.default.createElement("div",{style:{textAlign:"right"}},We.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:x.textPrimary}},Mx(z.calls)),We.default.createElement("div",{style:{fontSize:"11px",color:x.textMuted}},"calls")),We.default.createElement("div",{style:{textAlign:"right"}},We.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:z.errors>0?x.error:x.textPrimary}},z.errors||0),We.default.createElement("div",{style:{fontSize:"11px",color:x.textMuted}},"errors")),z.launchable&&We.default.createElement("button",{onClick:D=>{D.stopPropagation(),w(z)},disabled:y===z.key,style:{padding:"8px 14px",fontSize:"13px",borderRadius:"6px",border:"none",background:y===z.key?x.borderLight:"#ef4444",color:y===z.key?x.textMuted:"#ffffff",cursor:y===z.key?"wait":"pointer",fontWeight:"500",whiteSpace:"nowrap"},title:`Start ${z.name} in a sandbox session`},y===z.key?"Starting\u2026":O?"Start another":"Start in sandbox"))),N&&We.default.createElement(J_e,{server:z,colors:x,tone:U,onOpenTools:t}))})),_.length>0&&We.default.createElement("div",{style:{marginTop:"24px",background:x.cardBg,borderRadius:"12px",border:`1px solid ${x.border}`,padding:"20px"}},We.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:x.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),We.default.createElement("div",{style:{display:"grid",gap:"8px"}},_.map(z=>We.default.createElement("div",{key:z.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:x.textCell,flexWrap:"wrap"}},We.default.createElement("span",{style:{fontFamily:"monospace"}},(z.mcp_servers||[]).join(", ")||z.sandbox_type),We.default.createElement("span",{style:{color:x.textMuted}},z.status," \xB7 ",z.runs_count,"/",z.max_runs," runs \xB7 expires ",new Date(z.expires_at).toLocaleTimeString())))))))}function J_e({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>We.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},We.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),We.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return We.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},We.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&We.default.createElement(o,{label:Z_e.includes(e.transport)?"Endpoint":"Command"},We.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&We.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&We.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&We.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),We.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?We.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>We.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):We.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&We.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&We.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&We.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),We.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&We.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&&We.default.createElement("button",{onClick:()=>n(e.key),style:{fontSize:"13px",color:"#ef4444",background:"none",border:"none",padding:0,cursor:"pointer"}},"View its tools \u2192")))}var te=Z(J());var sd=Z(J());var O2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},jn={log(...e){this.enabled&&(e.push(Date.now()),O2.logger.log("[ActionCable]",...e))}},Dx=()=>new Date().getTime(),T2=e=>(Dx()-e)/1e3,jx=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=Dx(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),jn.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=Dx(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),jn.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=Dx()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,jn.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=Dx(),jn.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()&&(jn.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${T2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?jn.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${T2(this.disconnectedAt)} s`):(jn.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return T2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&T2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&(jn.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};jx.staleThreshold=6;jx.reconnectionBackoffRate=.15;var aQ={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:Ix,protocols:DD}=aQ,Q_e=DD.slice(0,DD.length-1),oQ=[].indexOf,$x=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new jx(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return jn.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...DD,...this.consumer.subprotocols||[]];return jn.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new O2.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(jn.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){jn.log("Failed to reopen WebSocket",t)}finally{jn.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 oQ.call(Q_e,this.getProtocol())>=0}isState(...t){return oQ.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in O2.WebSocket)if(O2.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(){}}};$x.reopenDelay=500;$x.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 Ix.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case Ix.disconnect:return jn.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case Ix.ping:return null;case Ix.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 Ix.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if(jn.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return jn.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if(jn.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){jn.log("WebSocket onerror event")}};var R_e=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},jD=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),R_e(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)}},$D=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?(jn.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):jn.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){jn.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=>{jn.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},LD=class{constructor(t){this.consumer=t,this.guarantor=new $D(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new jD(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){jn.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})}},zD=class{constructor(t){this._url=t,this.subscriptions=new LD(this),this.connection=new $x(this),this.subprotocols=[]}get url(){return eCe(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 eCe(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 iQ(e=tCe("url")||aQ.default_mount_path){return new zD(e)}function tCe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var P2=null;function rCe(){if(P2===null)try{P2=iQ()}catch{P2=!1}return P2||null}function wh(e,t,r,n=!0){let o=(0,sd.useRef)(null),a=(0,sd.useRef)(r);return(0,sd.useEffect)(()=>{a.current=r},[r]),(0,sd.useEffect)(()=>{if(!n||!e)return;let s=rCe();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,sd.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Sh(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var M2=[{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"}],nCe={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"}]},sQ={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function BD({initialType:e="playwright_mcp",onClose:t}){let[r,n]=(0,te.useState)(e),[o,a]=(0,te.useState)(null),[i,s]=(0,te.useState)(""),[l,u]=(0,te.useState)([]),[c,d]=(0,te.useState)(null),[p,f]=(0,te.useState)(!1),[m,y]=(0,te.useState)(!1),[b,h]=(0,te.useState)(null),[g,v]=(0,te.useState)(null),[x,S]=(0,te.useState)(!1),[w,A]=(0,te.useState)(null),[k,_]=(0,te.useState)(!1),C=(0,te.useRef)(null),[E,j]=(0,te.useState)(["anthropic"]),[X,z]=(0,te.useState)(!1),[U,N]=(0,te.useState)({}),[O,D]=(0,te.useState)([]),T=(0,te.useCallback)(async K=>{try{let M=await fetch(`/api/sandboxes/${K}`);if(!M.ok)return;let ae=await M.json();a(ae.sandbox),u(ae.sandbox.runs||[])}catch(M){console.error("Could not refresh the sandbox session:",M)}},[]),I=(0,te.useCallback)(K=>{!Sh(K)||!o?.session_id||T(o.session_id)},[T,o?.session_id]);wh("SandboxChannel",{session_id:o?.session_id},I,!!o?.session_id),(0,te.useEffect)(()=>{H(),P()},[r]);let P=async()=>{try{let K=await fetch("/api/usage");if(K.ok){let M=await K.json();A(M.usage)}}catch{console.log("Could not fetch usage (user may not be authenticated)")}};(0,te.useEffect)(()=>{if(!o?.expires_at)return;let K=setInterval(()=>{let M=new Date,ae=new Date(o.expires_at),F=Math.max(0,Math.floor((ae-M)/1e3));v(F),F===0&&(a(se=>({...se,status:"expired"})),clearInterval(K))},1e3);return()=>clearInterval(K)},[o?.expires_at]),(0,te.useEffect)(()=>{C.current&&(C.current.scrollTop=C.current.scrollHeight)},[c?.result]);let H=async()=>{y(!0),h(null);try{let K=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:r})});if(!K.ok)throw new Error("Failed to create sandbox session");let M=await K.json();a(M.sandbox),u([]),d(null)}catch(K){h(K.message)}finally{y(!1)}},G=async()=>{!i.trim()||p||!o||(X&&E.length>1?await Y():await L(E[0]||"anthropic"))},L=async K=>{f(!0),d({status:"running",task:i,provider:K,result:"",started_at:new Date().toISOString()});try{let M=await fetch(`/api/sandboxes/${o.session_id}/run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,provider:K})}),ae=await M.json();if(M.status===402&&ae.upgrade_required){A(ae.usage),S(!0),d(F=>({...F,status:"failed",error:ae.message||"Plan limit reached"})),f(!1);return}if(!M.ok)throw new Error(ae.error||"Task execution failed");ae.usage&&A(ae.usage),pe(ae.run_id)}catch(M){d(ae=>({...ae,status:"failed",error:M.message})),f(!1)}},Y=async()=>{f(!0),D([...E]),N({});let K={};E.forEach(M=>{K[M]={status:"running",result:"",started_at:new Date().toISOString()}}),N(K);try{let M=await fetch("/api/sandboxes/compare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({task:i,providers:E,sandbox_id:o?.session_id,sandbox_type:r})});if(!M.ok){let F=await M.json();throw new Error(F.error||"Comparison failed")}let ae=await M.json();ae.sandbox&&a(ae.sandbox),W(E,ae.sandbox?.session_id||o?.session_id,ae.sandbox?.runs_count??o?.runs_count??0)}catch(M){E.forEach(ae=>{N(F=>({...F,[ae]:{status:"failed",error:M.message}}))}),f(!1),D([])}},W=(K,M,ae)=>{if(!M)return;let F=async()=>{try{let se=await fetch(`/api/sandboxes/${M}`);if(!se.ok)throw new Error(`HTTP ${se.status}`);let oe=await se.json();a(oe.sandbox);let ve=oe.sandbox.runs||[];u(ve);let Re=new Set;if(ve.slice(ae).forEach(tt=>{tt.provider&&(N(he=>({...he,[tt.provider]:{...tt,provider:tt.provider}})),(tt.status==="completed"||tt.status==="failed")&&Re.add(tt.provider))}),K.every(tt=>Re.has(tt))){f(!1),D([]);return}setTimeout(F,1e3)}catch(se){console.error("Comparison polling failed:",se),f(!1),D([])}};setTimeout(F,1e3)},ie=async()=>{if(o?.session_id)try{let M=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(M.sandbox),u(M.sandbox.runs||[]),(M.sandbox.runs||[]).forEach(se=>{se.provider&&N(oe=>({...oe,[se.provider]:{...se,provider:se.provider}}))}),E.every(se=>{let oe=U[se];return oe?.status==="completed"||oe?.status==="failed"})&&(f(!1),D([]))}catch(K){console.error("Polling error:",K)}},Me=K=>{j(M=>M.includes(K)?M.length===1?M:M.filter(ae=>ae!==K):[...M,K])},pe=async K=>{let M=async()=>{try{let F=await(await fetch(`/api/sandboxes/${o.session_id}`)).json();a(F.sandbox);let se=F.sandbox.runs||[],oe=se[se.length-1];if(oe&&(d(oe),u(se),oe.status==="completed"||oe.status==="failed")){f(!1);return}setTimeout(M,1e3)}catch{f(!1)}};M()},ce=K=>{K.key==="Enter"&&(K.metaKey||K.ctrlKey)&&G()},Q=K=>{if(!K)return"--:--";let M=Math.floor(K/60),ae=K%60;return`${M}:${ae.toString().padStart(2,"0")}`},ee=K=>{switch(K){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"}},$=o?.status==="ready"&&o?.runs_count{_(!0);try{await hh({planSlug:"pro",billingInterval:K})}catch(M){console.error("Checkout error:",M),h(M.message||"Failed to initiate checkout. Please try again."),_(!1)}};return te.default.createElement("div",{className:"h-full flex flex-col bg-gray-50"},te.default.createElement("div",{className:"bg-white border-b border-gray-200 px-6 py-4"},te.default.createElement("div",{className:"flex items-center justify-between"},te.default.createElement("div",{className:"flex items-center space-x-4"},te.default.createElement(Tn,{size:48,appearance:{hat:"fedora",hatAccessory:"theaterMasks",heldItem:"browser"}}),te.default.createElement("div",null,te.default.createElement("h1",{className:"text-xl font-semibold text-gray-900"},"PlaywrightMCP Demo"),te.default.createElement("p",{className:"text-sm text-gray-500"},"Try browser automation for free - no account required"))),te.default.createElement("div",{className:"flex items-center space-x-4"},o&&te.default.createElement("div",{className:"flex items-center space-x-3 text-sm"},te.default.createElement("span",{className:`px-2 py-1 rounded-full text-xs font-medium ${ee(o.status)}`},o.status),te.default.createElement("span",{className:"text-gray-500"},o.runs_count,"/",o.max_runs," runs"),te.default.createElement("span",{className:`font-mono ${g<60?"text-red-500":"text-gray-500"}`},Q(g))),t&&te.default.createElement("button",{onClick:t,className:"text-gray-400 hover:text-gray-600"},te.default.createElement("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},te.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))))),te.default.createElement("div",{className:"flex-1 p-6 overflow-hidden"},te.default.createElement("div",{className:"grid grid-cols-3 gap-6 h-full"},te.default.createElement("div",{className:"col-span-2 flex flex-col space-y-4"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("textarea",{value:i,onChange:K=>s(K.target.value),onKeyDown:ce,placeholder:"Describe what you want the browser agent to do...",rows:3,disabled:!$,className:"w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-rose-500 focus:border-transparent resize-none disabled:bg-gray-100"}),te.default.createElement("div",{className:"flex items-center justify-between mt-3"},te.default.createElement("span",{className:"text-xs text-gray-400"},"Press ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Cmd")," + ",te.default.createElement("kbd",{className:"px-1.5 py-0.5 bg-gray-100 rounded text-gray-600"},"Enter")," to run"),te.default.createElement("button",{onClick:G,disabled:!i.trim()||!$,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${i.trim()&&$?"bg-rose-500 text-white hover:bg-rose-600":"bg-gray-200 text-gray-400 cursor-not-allowed"}`},p?te.default.createElement(te.default.Fragment,null,te.default.createElement("span",{className:"animate-spin"},"\u25E0"),te.default.createElement("span",null,"Running...")):te.default.createElement(te.default.Fragment,null,te.default.createElement("span",null,"\u25B6"),te.default.createElement("span",null,"Run"))))),te.default.createElement("div",{className:"flex-1 bg-white rounded-xl border border-gray-200 flex flex-col overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-200 flex items-center justify-between"},te.default.createElement("h3",{className:"font-medium text-gray-900"},X&&Object.keys(U).length>0?"Comparison Results":"Output"),c&&!X&&te.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(c.status)}`},c.status),X&&O.length>0&&te.default.createElement("span",{className:"text-xs text-blue-600"},"Running ",O.length," provider(s)...")),te.default.createElement("div",{ref:C,className:"flex-1 overflow-auto bg-gray-50"},m?te.default.createElement("div",{className:"flex items-center justify-center h-full text-gray-500 p-4"},te.default.createElement("span",{className:"animate-pulse"},"Starting sandbox...")):b?te.default.createElement("div",{className:"text-red-600 p-4"},b):X&&Object.keys(U).length>0?te.default.createElement("div",{className:"grid grid-cols-1 divide-y divide-gray-200"},E.map(K=>{let M=M2.find(F=>F.id===K),ae=U[K];return te.default.createElement("div",{key:K,className:"p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-2"},te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement("div",{className:`w-3 h-3 rounded-full ${M?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"font-medium text-gray-900"},M?.name||K),te.default.createElement("span",{className:"text-xs text-gray-500"},M?.model)),ae&&te.default.createElement("div",{className:"flex items-center space-x-2"},te.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(ae.status)}`},ae.status),ae.tokens&&te.default.createElement("span",{className:"text-xs text-gray-500"},ae.tokens," tokens"),ae.duration_ms&&te.default.createElement("span",{className:"text-xs text-gray-500"},(ae.duration_ms/1e3).toFixed(1),"s"))),te.default.createElement("div",{className:"bg-white rounded-lg border border-gray-200 p-3 font-mono text-sm max-h-48 overflow-auto"},ae?.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Processing...")):ae?.error?te.default.createElement("div",{className:"text-red-600"},ae.error):ae?.result?te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},ae.result):te.default.createElement("span",{className:"text-gray-400"},"Waiting...")))})):c?te.default.createElement("div",{className:"p-4 font-mono text-sm"},c.provider&&te.default.createElement("div",{className:"flex items-center space-x-2 mb-3 pb-2 border-b border-gray-200"},te.default.createElement("div",{className:`w-2 h-2 rounded-full ${M2.find(K=>K.id===c.provider)?.color||"bg-gray-400"}`}),te.default.createElement("span",{className:"text-sm text-gray-600"},M2.find(K=>K.id===c.provider)?.name||c.provider)),c.status==="running"?te.default.createElement("div",{className:"flex items-center space-x-2 text-gray-500"},te.default.createElement("span",{className:"animate-pulse"},"\u25CF"),te.default.createElement("span",null,"Executing task...")):c.error?te.default.createElement("div",{className:"text-red-600"},te.default.createElement("div",{className:"font-semibold mb-2"},"Error:"),te.default.createElement("pre",{className:"whitespace-pre-wrap"},c.error)):te.default.createElement("pre",{className:"whitespace-pre-wrap text-gray-800"},c.result||"Processing...")):te.default.createElement("div",{className:"text-gray-400 text-center py-12"},te.default.createElement("p",{className:"mb-2"},"Select a sample task or enter your own"),te.default.createElement("p",{className:"text-xs"},X?`Compare results across ${E.length} providers`:"Task will execute using the selected provider"))))),te.default.createElement("div",{className:"space-y-4 overflow-auto"},te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Providers"),te.default.createElement("label",{className:"flex items-center space-x-2 cursor-pointer"},te.default.createElement("input",{type:"checkbox",checked:X,onChange:K=>z(K.target.checked),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("span",{className:"text-xs text-gray-600"},"Compare"))),te.default.createElement("div",{className:"space-y-2"},M2.map(K=>te.default.createElement("label",{key:K.id,className:`flex items-center justify-between p-2 rounded-lg border cursor-pointer transition-colors ${E.includes(K.id)?"border-rose-300 bg-rose-50":"border-gray-200 hover:bg-gray-50"}`},te.default.createElement("div",{className:"flex items-center space-x-3"},te.default.createElement("input",{type:"checkbox",checked:E.includes(K.id),onChange:()=>Me(K.id),className:"rounded border-gray-300 text-rose-500 focus:ring-rose-500"}),te.default.createElement("div",{className:`w-2 h-2 rounded-full ${K.color}`}),te.default.createElement("span",{className:"text-sm font-medium text-gray-900"},K.name)),te.default.createElement("span",{className:"text-xs text-gray-500"},K.model)))),X&&E.length>1&&te.default.createElement("div",{className:"mt-3 p-2 bg-purple-50 rounded-lg"},te.default.createElement("p",{className:"text-xs text-purple-700"},"Comparison mode: Run task on ",E.length," providers simultaneously"))),te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-4"},te.default.createElement("div",{className:"flex items-center justify-between mb-3"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Sample Tasks"),X&&te.default.createElement("button",{onClick:()=>n(r==="playwright_mcp"?"comparison":"playwright_mcp"),className:"text-xs text-rose-600 hover:text-rose-700"},r==="comparison"?"Browser Tasks":"Comparison Tasks")),te.default.createElement("div",{className:"space-y-2"},nCe[r]?.map((K,M)=>te.default.createElement("button",{key:M,onClick:()=>s(K.task),disabled:!$,className:"w-full text-left px-3 py-2 rounded-lg transition-colors border border-gray-200 hover:bg-gray-50 disabled:opacity-50"},te.default.createElement("div",{className:"font-medium text-sm text-gray-900"},K.name),te.default.createElement("div",{className:"text-xs text-gray-500 mt-0.5"},K.description))))),te.default.createElement("div",{className:"bg-gradient-to-br from-rose-50 to-purple-50 rounded-xl border border-rose-200 p-4"},te.default.createElement("h4",{className:"font-medium text-gray-900 mb-3"},w?.unlimited?"Unlimited":w?.plan==="free"?"Free Tier":`${w?.plan?.toUpperCase()||"FREE"} Plan`),w&&!w.unlimited&&w.runs_limit!=null&&te.default.createElement("div",{className:"mb-4"},te.default.createElement("div",{className:"flex justify-between text-sm mb-1"},te.default.createElement("span",{className:"text-gray-600"},"Agent Runs"),te.default.createElement("span",{className:`font-medium ${w.runs_remaining<=1?"text-rose-600":"text-gray-900"}`},w.runs_used," / ",w.runs_limit)),te.default.createElement("div",{className:"w-full bg-white rounded-full h-2 border border-rose-200"},te.default.createElement("div",{className:`h-2 rounded-full transition-all ${w.runs_remaining<=1?"bg-rose-500":"bg-emerald-500"}`,style:{width:`${Math.min(w.runs_used/w.runs_limit*100,100)}%`}})),w.runs_remaining<=1&&te.default.createElement("p",{className:"text-xs text-rose-600 mt-1"},w.runs_remaining===0?"Limit reached!":"Almost at limit!")),te.default.createElement("dl",{className:"space-y-2 text-sm"},te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Session Runs"),te.default.createElement("dd",{className:"text-gray-900"},o?.runs_count||0,"/",o?.max_runs||sQ.max_runs)),te.default.createElement("div",{className:"flex justify-between"},te.default.createElement("dt",{className:"text-gray-500"},"Timeout"),te.default.createElement("dd",{className:"text-gray-900"},sQ.timeout_seconds,"s per task"))),w?.plan==="free"&&te.default.createElement("div",{className:"mt-4 pt-4 border-t border-rose-200"},te.default.createElement("button",{onClick:()=>S(!0),className:"w-full text-center text-sm text-rose-600 hover:text-rose-700 font-medium"},"Upgrade to PRO \u2192"))),l.length>0&&te.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 overflow-hidden"},te.default.createElement("div",{className:"px-4 py-3 border-b border-gray-100"},te.default.createElement("h4",{className:"font-medium text-gray-900"},"Run History")),te.default.createElement("div",{className:"max-h-48 overflow-auto divide-y divide-gray-100"},l.slice().reverse().map((K,M)=>te.default.createElement("div",{key:K.id||M,className:"px-4 py-3 hover:bg-gray-50 cursor-pointer",onClick:()=>d(K)},te.default.createElement("div",{className:"flex items-center justify-between mb-1"},te.default.createElement("span",{className:`px-2 py-0.5 rounded-full text-xs font-medium ${ee(K.status||"completed")}`},K.status||"completed"),te.default.createElement("span",{className:"text-xs text-gray-400"},K.tokens||0," tokens")),te.default.createElement("p",{className:"text-sm text-gray-600 truncate"},K.task))))),o?.status==="expired"&&te.default.createElement("button",{onClick:H,className:"w-full px-4 py-3 bg-rose-500 text-white rounded-lg hover:bg-rose-600 transition-colors"},"Start New Session")))),x&&te.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4"},te.default.createElement("div",{className:"bg-white rounded-2xl max-w-4xl w-full overflow-hidden shadow-2xl max-h-[90vh] overflow-y-auto"},te.default.createElement("div",{className:"bg-gradient-to-r from-rose-500 to-purple-600 px-6 py-6 text-white text-center"},te.default.createElement("h2",{className:"text-2xl font-bold mb-1"},"Upgrade Your Plan"),te.default.createElement("p",{className:"text-rose-100 text-sm"},"You've used ",w?.runs_used||0," of ",w?.runs_limit||25," trial runs. Choose a plan to continue.")),te.default.createElement("div",{className:"p-6"},te.default.createElement("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4"},te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Free"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$0"),te.default.createElement("span",{className:"text-gray-500"},"/mo"))),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"25 trial runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Community support"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-gray-400 mr-2"},"-"),"Basic features")),te.default.createElement("button",{disabled:!0,className:"w-full py-2 px-4 border border-gray-300 text-gray-400 rounded-lg text-sm cursor-not-allowed"},"Current Plan")),te.default.createElement("div",{className:"border-2 border-rose-500 rounded-xl p-5 relative bg-rose-50"},te.default.createElement("div",{className:"absolute -top-3 left-1/2 transform -translate-x-1/2"},te.default.createElement("span",{className:"bg-rose-500 text-white text-xs font-semibold px-3 py-1 rounded-full"},"RECOMMENDED")),te.default.createElement("div",{className:"text-center mb-4 mt-2"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Pro"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$99"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $995/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-700 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"10,000 agent runs/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Advanced cost tracking"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"25K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Priority email support")),te.default.createElement("button",{onClick:()=>B("monthly"),disabled:k,className:"w-full py-2 px-4 bg-rose-500 text-white rounded-lg text-sm font-semibold hover:bg-rose-600 transition-colors disabled:opacity-50"},k?"Loading...":"Upgrade to Pro")),te.default.createElement("div",{className:"border border-gray-200 rounded-xl p-5"},te.default.createElement("div",{className:"text-center mb-4"},te.default.createElement("h3",{className:"font-semibold text-gray-900"},"Enterprise"),te.default.createElement("div",{className:"mt-2"},te.default.createElement("span",{className:"text-3xl font-bold text-gray-900"},"$269"),te.default.createElement("span",{className:"text-gray-500"},"/mo")),te.default.createElement("p",{className:"text-xs text-gray-500 mt-1"},"or $2,690/year (save 16%)")),te.default.createElement("ul",{className:"space-y-2 text-sm text-gray-600 mb-4"},te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Unlimited runs"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"500K traces/month"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"SSO & SOC2/HIPAA"),te.default.createElement("li",{className:"flex items-start"},te.default.createElement("span",{className:"text-green-500 mr-2"},"\u2713"),"Dedicated support")),te.default.createElement("a",{href:"mailto:sales@activeagents.ai",className:"block w-full py-2 px-4 border border-gray-300 text-gray-700 rounded-lg text-sm font-semibold text-center hover:bg-gray-50 transition-colors"},"Contact Sales")))),te.default.createElement("div",{className:"px-6 py-4 bg-gray-50 border-t border-gray-100 flex justify-center"},te.default.createElement("button",{onClick:()=>S(!1),className:"text-gray-500 hover:text-gray-700 text-sm"},"Maybe later")))))}var ht=Z(J());var Ao=Z(J());var FD=["message","llm","tool","browser"];function I2(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function lQ(e={}){let t=[];return FD.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=I2(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 uQ(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&I2(t.rrweb.first_at)!==null).map(t=>{let r=I2(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,I2(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function cQ(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function dQ(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 pQ(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 fQ(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 UD(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 gQ(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 yQ(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 kh(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 D2(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 WD(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function oCe(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 vQ(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=WD(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",oCe(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"}: ${WD(t.message??t.value)}`:e.kind==="marker"?`marker: ${WD(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function _h(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function aCe(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 iCe(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(iCe(e,a));if(o())return{count:i,truncated:!1};let l=aCe(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 Du=[{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)"}],Lx=18,sCe=76,lf=(e,t)=>e.totalMs?t/e.totalMs*100:0,lCe=(0,Ao.memo)(function({axis:t,entries:r,recordings:n}){let o=pQ(t);return Ao.default.createElement(Ao.default.Fragment,null,o.map(a=>Ao.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${D2(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${lf(t,a.axisStart)}%`,width:`${lf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Du.map((a,i)=>Ao.default.createElement(Ao.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=ld(t,s.startMs);return Ao.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*Lx+7,height:4,borderRadius:2,left:`${lf(t,l)}%`,width:`${Math.max(lf(t,ld(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=ld(t,s.startMs);return Ao.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*Lx+4,height:Lx-8,borderRadius:2,left:`${lf(t,l)}%`,width:`max(3px, ${lf(t,ld(t,s.endMs)-l)}%)`,background:_h(s)?"var(--color-error)":a.color}})}))))});function HD({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,Ao.useRef)(null),i=Du.length*Lx,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 Ao.default.createElement("div",{"data-testid":"replay-scrubber",style:{display:"flex",gap:8}},Ao.default.createElement("div",{style:{width:sCe,flexShrink:0}},Du.map(u=>Ao.default.createElement("div",{key:u.lane,style:{height:Lx,display:"flex",alignItems:"center",gap:6,fontFamily:V,fontSize:10,color:"var(--color-text-muted)",textTransform:"uppercase"}},Ao.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:u.color}}),u.label))),Ao.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"}},Ao.default.createElement(lCe,{axis:e,entries:t,recordings:r}),Ao.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${lf(e,n)}%`,background:"var(--color-text-primary)"}})))}var Zo=Z(J());var uCe=Object.fromEntries(Du.map(e=>[e.lane,e])),cCe=(0,Zo.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=uCe[t.lane],l=_h(t);return Zo.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"}},Zo.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},kh(t.startMs-r)),Zo.default.createElement("span",{style:{fontFamily:V,fontSize:10,textTransform:"uppercase",color:s.color,width:64,flexShrink:0}},s.label),Zo.default.createElement("span",{style:{fontSize:13,color:l?"var(--color-error-text)":"var(--color-text-cell)",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},vQ(t)),t.duration_ms>0&&Zo.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),bQ=(0,Zo.memo)(function({entries:t,startMs:r,currentId:n,selectedId:o,playing:a,onChoose:i}){let s=(0,Zo.useRef)(null),l=(0,Zo.useRef)(null);return(0,Zo.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?Zo.default.createElement("div",{ref:s,"data-testid":"replay-transcript",style:{maxHeight:460,overflowY:"auto",position:"relative"}},t.map(u=>Zo.default.createElement(cCe,{key:u.id,entry:u,startMs:r,current:u.id===n,selected:u.id===o,onChoose:i,rowRef:u.id===n?l:void 0}))):Zo.default.createElement("div",{style:{padding:20,fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Ei=Z(J());var dCe=Object.fromEntries(Du.map(e=>[e.lane,e.label])),pCe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:V,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function fCe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function mCe({label:e,value:t}){let r=fCe(t);return r==null?null:Ei.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Ei.default.createElement(Ve,{size:10},e),Ei.default.createElement("pre",{style:pCe},r))}function gCe(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 qD({entry:e}){return e?Ei.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Ei.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ei.default.createElement(Ee,{tone:_h(e)?"error":"muted"},dCe[e.lane]),e.role&&Ei.default.createElement(Ee,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Ei.default.createElement("span",{style:{fontFamily:V,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Ei.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"},title:e.start},new Date(e.startMs).toLocaleTimeString(),e.duration_ms>0?` \xB7 ${Math.round(e.duration_ms)}ms`:"")),e.trace_id&&Ei.default.createElement("div",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),gCe(e).map(([t,r])=>Ei.default.createElement(mCe,{key:t,label:t,value:r}))):Ei.default.createElement("div",{style:{padding:16,fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var eo=Z(J());var wQ="action-agent-session-player",SQ="/session_player",kQ="allow-scripts allow-same-origin";function _Q(e,t={}){return{...t,channel:wQ,type:e}}function CQ(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===wQ&&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 vCe="the session player did not start",xCe={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 KD({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,eo.useRef)(null),s=(0,eo.useRef)(null),[l,u]=(0,eo.useState)(!1),[c,d]=(0,eo.useState)(!1),[p,f]=(0,eo.useState)(null),[m,y]=(0,eo.useState)({state:"loading"}),b=hQ(e,t),h=b?.id,g=p!==null&&p===s.current,v=b?yQ(b,t):null,x=(A,k)=>{i.current?.contentWindow?.postMessage(_Q(A,k),window.location.origin)};(0,eo.useEffect)(()=>{let A=k=>{if(!CQ(k,i.current?.contentWindow,window.location.origin))return;let{type:_}=k.data;_==="ready"?d(!0):_==="loaded"?f(k.data.token):_==="error"&&y({state:"error",message:k.data.message})};return window.addEventListener("message",A),()=>window.removeEventListener("message",A)},[]),(0,eo.useEffect)(()=>{if(!l||c)return;let A=setTimeout(()=>y({state:"error",message:vCe}),5e3);return()=>clearTimeout(A)},[l,c]),(0,eo.useEffect)(()=>{if(!c||h==null)return;let A=!1,k=[],_=`${h}:${Date.now()}`;return s.current=_,f(null),y({state:"loading"}),xQ(h,{fetchPage:yCe,isCancelled:()=>A,onEvents:C=>{if(k===null){x("append",{events:C});return}k=k.concat(C),!(k.length<2)&&(x("load",{events:k,token:_}),k=null)}}).then(({truncated:C})=>{A||y(k!==null?{state:"empty"}:{state:C?"truncated":"ready"})}).catch(C=>{A||y({state:"error",message:C.message})}),()=>{A=!0}},[c,h]);let S=v?.phase;(0,eo.useEffect)(()=>{!g||!v||x("seek",{offset:v.offsetMs,playing:n&&S==="during"})},[g,a,n,S]),(0,eo.useEffect)(()=>{g&&x("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:S==="before"?`the browser recording starts at ${kh(b.startMs-r)}`:xCe[m.state];return eo.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},eo.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},eo.default.createElement(Ve,null,"browser"),b&&eo.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},b.name||`recording ${b.id}`,e.length>1?` \xB7 ${e.indexOf(b)+1} of ${e.length}`:""),w&&eo.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),eo.default.createElement("iframe",{ref:i,title:"Browser recording",src:nt(SQ),sandbox:kQ,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 _a=Z(J());function VD(e){let[t,r]=(0,_a.useState)(0),[n,o]=(0,_a.useState)(!1),[a,i]=(0,_a.useState)(1),[s,l]=(0,_a.useState)(0),u=(0,_a.useRef)(0),c=(0,_a.useRef)(0),d=(0,_a.useCallback)((y,b)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=mQ(e,h);return u.current=h,r(h),(b||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,_a.useEffect)(()=>{if(!n)return;let y=null,b=performance.now(),h=g=>{let v=d(u.current+(g-b)*a,!1);if(b=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let p=(0,_a.useCallback)(y=>d(y,!0),[d]),f=(0,_a.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,_a.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var bCe=[.5,1,2,4,8,16],wCe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function SCe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function kCe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function _Ce({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,ht.useMemo)(()=>lQ(r.lanes),[r]),i=(0,ht.useMemo)(()=>uQ(r.recordings),[r]),s=(0,ht.useMemo)(()=>dQ(cQ(a,i)),[a,i]),l=VD(s),{seek:u,pause:c}=l,[d,p]=(0,ht.useState)(()=>new Set(FD)),[f,m]=(0,ht.useState)(null),y=fQ(s,l.position)??s.startMs,b=(0,ht.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[UD(a,y)]||null,g=b[UD(b,y)]?.id??null,v=a.find(E=>E.id===f)||h,x=(0,ht.useMemo)(()=>kCe(a),[a]),S=(0,ht.useCallback)(E=>{c(),m(E.id),u(ld(s,E.startMs))},[s,c,u]),w=E=>{let j=gQ(b,y,E);j!==null&&(c(),m(null),u(ld(s,j)))},A=()=>{m(null),l.togglePlay()},k=E=>p(j=>{let X=new Set(j);return X.has(E)?X.delete(E):X.add(E),X}),_=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(ge,{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)"}},wCe[e]||"Session"," #",t),ht.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},_.started_at&&ht.default.createElement("span",{title:_.started_at},"started ",new Date(_.started_at).toLocaleString()),s.startMs!==null&&ht.default.createElement("span",null,D2(s.endMs-s.startMs)," long"),ht.default.createElement("span",null,x.message||0," messages \xB7 ",x.llm||0," model calls \xB7 ",x.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"}},_.truncated&&ht.default.createElement(Ee,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?ht.default.createElement(Fe,{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(Fe,{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(ge,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),ht.default.createElement(ge,{size:"sm",variant:"primary",testId:"replay-play",onClick:A,style:{minWidth:72}},l.playing?"Pause":"Play"),ht.default.createElement(ge,{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:V,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},bCe.map(E=>ht.default.createElement("option",{key:E,value:E},E,"x"))),ht.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:V,fontSize:12,color:"var(--color-text-primary)"}},kh(y-s.startMs)),ht.default.createElement("span",{style:{fontFamily:V,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(HD,{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(Fe,{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(Ve,{style:{marginRight:6}},"timeline"),Du.map(E=>ht.default.createElement(In,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>k(E.lane)},E.label," ",x[E.lane]||0))),ht.default.createElement(bQ,{entries:b,startMs:s.startMs,currentId:g,selectedId:f,playing:l.playing,onChoose:S})),ht.default.createElement(Fe,{padding:0},ht.default.createElement(qD,{entry:v}))),i.length>0&&ht.default.createElement(Fe,{padding:14},ht.default.createElement(KD,{recordings:i,time:y,sessionStartMs:s.startMs,playing:l.playing,speed:l.speed,seekVersion:l.seekVersion}))))}function GD({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(SCe(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(_Ce,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&&ht.default.createElement(ge,{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(ge,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),ht.default.createElement(Fe,{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 lt=Z(J());function AQ(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var XD=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],ZD=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],zx=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),NQ={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},YD=/^(\d{4})-(\d{2})-(\d{2})$/,CCe={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>XD.some(t=>t.value&&t.value===e),outcome:e=>ZD.some(t=>t.value&&t.value===e),from:e=>YD.test(e),to:e=>YD.test(e)};function j2(e={}){let t={...zx};for(let r of Object.keys(zx)){let n=String(e[r]??"");n&&CCe[r](n)&&(t[r]=n)}return t}function JD(e={}){return Object.values(j2(e)).some(Boolean)}function TQ(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(NQ))r[n]=t.get(o)||"";return j2(r)}function OQ(e={}){let t=new URLSearchParams,r=j2(e);for(let[o,a]of Object.entries(NQ))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function EQ(e,t=0){let[,r,n,o]=e.match(YD);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var PQ=Object.freeze({openedFromSessions:!0});function MQ(e){return e?.openedFromSessions===!0}function IQ(e={},{before:t=null,perPage:r=25}={}){let n=j2(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",EQ(n.from)),n.to&&o.set("to",EQ(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var DQ={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},ACe={failed:"error",passed:"success"},Ch={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 jQ(e,t){let r=await fetch(IQ(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 ECe(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 NCe({filters:e,onChange:t,agents:r,user:n}){let o=a=>i=>t({...e,[a]:i.target.value});return lt.default.createElement("div",{"data-testid":"sessions-filters",style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"}},lt.default.createElement("select",{"aria-label":"Agent",value:e.agentId,onChange:o("agentId"),style:Ch},lt.default.createElement("option",{value:""},"Every agent"),r.map(a=>lt.default.createElement("option",{key:a.id,value:String(a.id)},a.name))),n?.id!=null&<.default.createElement("select",{"aria-label":"Run by",value:e.user,onChange:o("user"),style:Ch},lt.default.createElement("option",{value:""},"Run by anyone"),lt.default.createElement("option",{value:"me"},"Run by me")),lt.default.createElement("select",{"aria-label":"Source",value:e.source,onChange:o("source"),style:Ch},XD.map(a=>lt.default.createElement("option",{key:a.value,value:a.value},a.label))),lt.default.createElement("select",{"aria-label":"Outcome",value:e.outcome,onChange:o("outcome"),style:Ch},ZD.map(a=>lt.default.createElement("option",{key:a.value,value:a.value},a.label))),lt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"From",lt.default.createElement("input",{type:"date","aria-label":"Active from",value:e.from,max:e.to||void 0,onChange:o("from"),style:Ch})),lt.default.createElement("label",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"var(--color-text-secondary)"}},"To",lt.default.createElement("input",{type:"date","aria-label":"Active until",value:e.to,min:e.from||void 0,onChange:o("to"),style:Ch})),JD(e)&<.default.createElement(ge,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(zx)},"Clear filters"))}function TCe({session:e}){let t=Jg(e.kind,e.id),r=DQ[e.source]||DQ.agent,n=ECe(e);return lt.default.createElement("a",{href:nt(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),dt(t,PQ))},style:{display:"flex",alignItems:"center",gap:12,padding:"12px 16px",textDecoration:"none",borderTop:"1px solid var(--color-border-light)",color:"inherit"}},lt.default.createElement(Ee,{tone:r.tone,style:{width:92,justifyContent:"center"}},r.label),lt.default.createElement("div",{style:{minWidth:0,flex:1}},lt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,minWidth:0}},lt.default.createElement("span",{style:{fontFamily:V,fontSize:13,fontWeight:600,color:"var(--color-text-primary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.title),e.agent&<.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",whiteSpace:"nowrap"}},e.agent.name)),e.preview&<.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-cell)",marginTop:2,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},e.preview),n&<.default.createElement("div",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&<.default.createElement(Ee,{tone:ACe[e.outcome]||"muted"},e.outcome),lt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},fo(e.last_activity_at)),lt.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function QD({agents:e=[],user:t=null}){let[r,n]=(0,lt.useState)(()=>TQ(window.location.search)),[o,a]=(0,lt.useState)({sessions:[],total:0,nextBefore:null}),[i,s]=(0,lt.useState)("loading"),[l,u]=(0,lt.useState)(null),[c,d]=(0,lt.useState)(!1),[p,f]=(0,lt.useState)(null),[m,y]=(0,lt.useState)(0),[b]=(0,lt.useState)(AQ);(0,lt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${OQ(r)}`);let v=b.next();return s("loading"),d(!1),f(null),jQ(r,null).then(x=>{v()&&(a({sessions:x.sessions||[],total:x.total||0,nextBefore:x.next_before||null}),s("ready"))}).catch(x=>{v()&&(u(x.message),s("error"))}),()=>{b.next()}},[r,m]);let h=async()=>{let v=b.latest();d(!0),f(null);try{let x=await jQ(r,o.nextBefore);if(!v())return;a(S=>({sessions:[...S.sessions,...x.sessions||[]],total:x.total??S.total,nextBefore:x.next_before||null}))}catch(x){v()&&f(x.message)}finally{v()&&d(!1)}},g=JD(r);return lt.default.createElement("div",{"data-testid":"sessions-view",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1200}},lt.default.createElement("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},lt.default.createElement("div",null,lt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Sessions"),lt.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"&<.default.createElement(Ve,null,o.total," session",o.total===1?"":"s")),lt.default.createElement(NCe,{filters:r,onChange:n,agents:e,user:t}),lt.default.createElement(Fe,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&<.default.createElement(hn,null,"loading sessions\u2026"),i==="error"&<.default.createElement("div",{style:{padding:20,display:"flex",alignItems:"center",gap:12,color:"var(--color-error-text)",fontSize:13}},l,lt.default.createElement(ge,{size:"sm",onClick:()=>y(v=>v+1)},"Retry")),i==="ready"&&o.sessions.length===0&<.default.createElement("div",{"data-testid":"sessions-empty",style:{padding:"32px 20px",textAlign:"center"}},g?lt.default.createElement(lt.default.Fragment,null,lt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions match these filters."),lt.default.createElement(ge,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(zx)},"Clear filters")):lt.default.createElement(lt.default.Fragment,null,lt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"No sessions yet."),lt.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=>lt.default.createElement(TCe,{key:`${v.kind}-${v.id}`,session:v}))),i==="ready"&&o.nextBefore&<.default.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",gap:12}},p&<.default.createElement("span",{"data-testid":"sessions-load-more-error",role:"alert",style:{fontSize:13,color:"var(--color-error-text)"}},p),lt.default.createElement(ge,{size:"sm",testId:"sessions-load-more",onClick:h,disabled:c},c?"Loading\u2026":p?"Try again":"Load more")))}var Te=Z(J());var Ht=Z(J());var OCe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function $Q(e){return OCe[e]||null}function $2(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function LQ({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 PCe="Setting your own host needs permission to manage the organization's keys.";function zQ({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?PCe:null}}var FQ={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 L2({onKeysChanged:e,onError:t,scope:r}){let[n,o]=(0,Ht.useState)(null),[a,i]=(0,Ht.useState)(""),[s,l]=(0,Ht.useState)(""),[u,c]=(0,Ht.useState)(!1),[d,p]=(0,Ht.useState)({}),[f,m]=(0,Ht.useState)(null);return{editingProvider:n,setEditingProvider:o,providerInput:a,setProviderInput:i,providerApiKeyInput:s,setProviderApiKeyInput:l,savingProvider:u,testResults:d,testingProvider:f,saveProviderKey:async(g,{hostBased:v=!1,clearApiKey:x=!1}={})=>{if(!(!a.trim()||u)){c(!0),t(null);try{let S={provider:g,credential:a.trim()};r&&(S.scope=r),v&&(s.trim()||x)&&(S.api_key=x?"":s.trim());let w=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(S)});if(!w.ok){let A=await w.json().catch(()=>({}));throw new Error(Array.isArray(A.error)?A.error.join(", "):"save failed")}o(null),i(""),l(""),p(A=>({...A,[g]:null})),KN(),await e()}catch(S){t(`Could not save the ${FQ[g]?.label||g} credential${S.message!=="save failed"?`: ${S.message}`:"."}`)}finally{c(!1)}}},testProviderHost:async(g,{editing:v=!1}={})=>{if(!f){m(g),t(null);try{let x={provider:g};r&&(x.scope=r),v&&(a.trim()&&(x.credential=a.trim()),s.trim()&&(x.api_key=s.trim()));let S=await fetch("/api/provider_keys/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(x)}),w=await S.json().catch(()=>({}));if(!S.ok)throw new Error(w.error||"test failed");p(A=>({...A,[g]:w}))}catch(x){p(S=>({...S,[g]:{ok:!1,models:[],error:x.message}}))}finally{m(null)}}},removeProviderKey:async g=>{if(await Jr(r==="personal"?{title:"Remove your key?",message:"Your runs will use the organization's key, or the platform default.",confirmLabel:"Remove key",danger:!0}:{title:"Remove this provider credential?",message:"Runs fall back to the platform default credentials, or fail until a key is configured.",confirmLabel:"Remove credential",danger:!0}))try{if(!(await fetch($2(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(S=>({...S,[g]:null})),KN(),await e()}catch{t("Could not remove the provider credential.")}}}}var BQ={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 Bx({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:b}=t,h={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},g=BQ[r]||BQ.default;return Ht.default.createElement("div",{className:"border rounded-lg p-6",style:h},Ht.default.createElement("h3",{className:`text-lg font-semibold mb-4 ${o?"text-white":"text-gray-900"}`},g.title),Ht.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-400":"text-gray-500"}`},g.description),!n&&Ht.default.createElement("p",{className:`text-sm mb-4 ${o?"text-gray-500":"text-gray-400"}`},"You can see these keys but not change them."),Ht.default.createElement("div",{className:"space-y-4"},e.filter(({kind:v})=>v!=="connection").map(v=>{let{provider:x,host_based:S,configured:w,hint:A,api_key_configured:k,api_key_hint:_,platform_default:C}=v,E=FQ[x]||{label:x,icon:"\u{1F511}",placeholder:""},j=a===x,X=p[x],z=f===x,U=S&&(j?s.trim():w||C),N=w?S?`${A}${k?` \xB7 key ${_}`:""}`:`Configured (${A})`:S&&C?`Platform default: ${C}`:"Not configured",O=r==="personal"?$Q(v.effective_source):null,{canChange:D,canRemove:T,note:I}=zQ({editable:n,scope:r,row:v}),P=r==="organization"&&w?LQ(v):null;return Ht.default.createElement("div",{key:x,className:"p-4 rounded-lg",style:{backgroundColor:o?"#252525":"#f9fafb"}},Ht.default.createElement("div",{className:"flex items-center justify-between"},Ht.default.createElement("div",{className:"flex items-center space-x-3"},Ht.default.createElement("span",{className:"text-xl"},E.icon),Ht.default.createElement("div",null,Ht.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},E.label),Ht.default.createElement("p",{className:`text-sm ${w?o?"text-green-400":"text-green-600":o?"text-gray-400":"text-gray-500"}`},N),P&&Ht.default.createElement("p",{className:`text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-audit"},P)),O&&Ht.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)),(D||T)&&Ht.default.createElement("div",{className:"flex items-center space-x-2"},D&&S&&!j&&U&&Ht.default.createElement("button",{onClick:()=>y(x),disabled:z,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"}`},z?"Testing\u2026":"Test connection"),T&&!j&&Ht.default.createElement("button",{onClick:()=>b(x),className:`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Remove"),D&&Ht.default.createElement("button",{onClick:()=>{i(j?null:x),l(!j&&S&&w?A:""),c("")},className:`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},j?"Cancel":w?"Update":"Configure"))),I&&Ht.default.createElement("p",{className:`mt-2 text-xs ${o?"text-gray-500":"text-gray-400"}`,"data-testid":"provider-key-locked"},I),j&&Ht.default.createElement("div",{className:"mt-3 space-y-2"},Ht.default.createElement("div",{className:"flex items-center space-x-2"},Ht.default.createElement("input",{type:S?"text":"password","data-aa-secret":S?void 0:"",value:s,onChange:H=>l(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(x,{hostBased:S}),placeholder:S?E.placeholder:`${E.label} API key (${E.placeholder})`,"aria-label":S?`${E.label} host URL`:`${E.label} API key`,autoFocus:!0,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),S&&Ht.default.createElement("button",{onClick:()=>y(x,{editing:!0}),disabled:!s.trim()||z,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"}`},z?"Testing\u2026":"Test"),Ht.default.createElement("button",{onClick:()=>m(x,{hostBased:S}),disabled:!s.trim()||d,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 text-sm"},d?"Saving\u2026":"Save")),S&&Ht.default.createElement("div",{className:"flex items-center space-x-2"},Ht.default.createElement("input",{type:"password","data-aa-secret":"",value:u,onChange:H=>c(H.target.value),onKeyDown:H=>H.key==="Enter"&&m(x,{hostBased:S}),placeholder:k?`API key (stored: ${_} \u2014 type to replace)`:"API key (optional \u2014 only for remote servers that require one)","aria-label":`${E.label} API key`,className:`flex-1 px-3 py-2 border rounded-lg text-sm font-mono ${o?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`}),k&&Ht.default.createElement("button",{onClick:()=>m(x,{hostBased:S,clearApiKey:!0}),disabled:!s.trim()||d,className:`px-3 py-2 text-sm rounded-lg disabled:opacity-50 ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},"Clear key"))),S&&j&&Ht.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&&X&&Ht.default.createElement("div",{className:"mt-2 text-xs rounded-lg px-3 py-2",role:"status",style:{backgroundColor:X.ok?o?"rgba(74,222,128,0.1)":"#ecfdf5":o?"rgba(248,113,113,0.1)":"#fef2f2",color:X.ok?o?"#4ade80":"#047857":o?"#f87171":"#b91c1c"}},X.ok?Ht.default.createElement(Ht.default.Fragment,null,Ht.default.createElement("span",{className:"font-medium"},"Connected")," ","to ",X.host,typeof X.latency_ms=="number"?` in ${X.latency_ms} ms`:""," \xB7 ",X.models.length===0?"no models pulled yet (run `ollama pull ` on the server)":`${X.models.length} model${X.models.length===1?"":"s"}`,X.models.length>0&&Ht.default.createElement("span",{className:"block mt-1 font-mono",style:{color:o?"#d1d5db":"#374151"}},X.models.join(" \xB7 "))):Ht.default.createElement(Ht.default.Fragment,null,Ht.default.createElement("span",{className:"font-medium"},"Not reachable.")," ",X.error)))})))}async function UQ(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 z2=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function RD({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,b]=(0,Te.useState)(null),[h,g]=(0,Te.useState)(null),[v,x]=(0,Te.useState)([]),[S,w]=(0,Te.useState)(!1),[A,k]=(0,Te.useState)(null),_=window.ACTIVE_AGENT_DASHBOARD?.meta?.memberInviteUrl;(0,Te.useEffect)(()=>{fetch("/api/usage").then(P=>P.ok?P.json():null).then(P=>i(P?.usage||null)).catch(()=>i(null)),fetch("/api/members").then(P=>P.ok?P.json():null).then(P=>g(P?.members||[])).catch(()=>g([]))},[]);let C=(0,Te.useCallback)(async()=>{try{let P=await fetch("/api/provider_keys?scope=organization");if(!P.ok)throw new Error("load failed");let H=await P.json();x(H.provider_keys||[]),w(!!H.can_manage_organization_keys),k(null)}catch{k("Could not load the organization's provider keys.")}},[]);(0,Te.useEffect)(()=>{C()},[C]);let E=L2({onKeysChanged:C,onError:k,scope:"organization"}),j=async()=>{m(!0),b(null);try{await hh({planSlug:"pro"})}catch(P){b(P.message),m(!1)}},X=async()=>{if(d.status==="ready")return d.value;p({status:"loading",value:null,error:null});try{let P=await UQ();return p({status:"ready",value:P,error:null}),P}catch(P){return p({status:"error",value:null,error:P.message}),null}},z=async()=>{u?c(!1):await X()&&c(!0)},U=async()=>{let P=await X();if(P)try{await navigator.clipboard.writeText(P),l(!0),setTimeout(()=>l(!1),2e3)}catch{}},N=d.status==="ready"&&!d.value,O={backgroundColor:o?"#1f1f1f":"#ffffff",borderColor:o?"#2a2a2a":"#e5e7eb"},D=r?.plan_name||"Free",T={free:{seats:1,workspaces:1,agents:3,traces:"250/mo trial"},pro:{seats:5,workspaces:3,agents:"Unlimited",traces:"25,000/mo"},enterprise:{seats:"Unlimited",workspaces:"Unlimited",agents:"Unlimited",traces:"500,000+/mo"}},I=T[D.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"},D)),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"}`},I.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"}`},I.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"}`},I.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"}`},I.traces))),D.toLowerCase()!=="enterprise"&&Te.default.createElement(Te.default.Fragment,null,Te.default.createElement("button",{onClick:j,disabled:f,className:"mt-4 w-full px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"},f?"Redirecting to checkout\u2026":"Upgrade Plan"),y&&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"),_&&Te.default.createElement("a",{href:_,className:"px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors"},"+ Invite Member")),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(P=>Te.default.createElement("tr",{key:P.id??P.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"},(P.name||P.email||"?").charAt(0).toUpperCase())),Te.default.createElement("div",null,Te.default.createElement("p",{className:`font-medium ${o?"text-white":"text-gray-900"}`},P.name||P.email,P.id!=null&&P.id===t?.id&&Te.default.createElement("span",{className:`ml-2 text-xs ${o?"text-gray-500":"text-gray-400"}`},"(you)")),P.name&&P.email&&Te.default.createElement("p",{className:`text-sm ${o?"text-gray-400":"text-gray-500"}`},P.email)))),Te.default.createElement("td",{className:"py-3 px-4"},P.role?Te.default.createElement("span",{className:"px-2 py-1 bg-purple-100 text-purple-700 rounded text-sm"},String(P.role).charAt(0).toUpperCase()+String(P.role).slice(1)):Te.default.createElement("span",{className:o?"text-gray-500":"text-gray-400"},"\u2014")))))))),Te.default.createElement("div",{className:"space-y-2"},A&&Te.default.createElement("p",{className:"text-sm text-red-500",role:"alert"},A),Te.default.createElement(Bx,{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"}`},z2(a?.traces_used),a?.traces_limit>0&&Te.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",z2(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"}`},z2(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"}`},z2(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||"",Hh=x.slice();g&&!Hh.some(le=>le.id===g)&&Hh.unshift({id:g,message_count:Io.length});let gA=(c.trim().length>0||p.length>0)&&!C,yd=I?.status==="awaiting_input",ub=yd?ih(I.input_requests):[],hA=new Set(q.map(({request:le})=>le.id)),qh=I&&!C&&I.status==="failed",kf=I&&!C&&I.status==="complete"&&!gs(I)&&!g,El={background:a.cardBg,border:`1px solid ${a.cardBorder}`,borderRadius:"12px"},vd={borderBottom:`1px solid ${a.cardBorder}`},Kh={padding:"6px 10px",borderRadius:"8px",border:`1px solid ${a.inputBorder}`,background:a.inputBg,color:a.textPrimary,fontSize:"13px",fontFamily:Pt.mono,maxWidth:"260px"},Vh={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"},ju=Mn("system",o),cb=IC(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."),ee&&X.default.createElement("p",{className:"text-sm text-red-600 mt-1"},ee)),X.default.createElement("div",{className:"flex items-center gap-2 flex-shrink-0"},gd&&X.default.createElement("a",{href:gd,className:"px-4 py-2 text-sm text-amber-800 hover:text-amber-900"},"See plans"),X.default.createElement("button",{onClick:Wh,disabled:te,className:"px-4 py-2 text-sm bg-amber-500 text-white rounded-lg hover:bg-amber-600 transition-colors disabled:opacity-50"},te?"Redirecting\u2026":"Upgrade to Pro"))),X.default.createElement("div",{"data-testid":"runner-toolbar",style:El,className:"p-4 flex items-center gap-3 flex-wrap"},X.default.createElement(On,{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=>_l(le.target.value),disabled:C,className:"aa-field",style:Kh,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=>Lh(le.target.value),disabled:C,className:"aa-field",style:Kh,title:"Conversation to continue"},X.default.createElement("option",{value:""},"New conversation on first run"),Hh.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:pd,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:rt,style:El,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:vd},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 ",Io.length," message",Io.length===1?"":"s"),Mo==="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"),Mo==="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(U_e,{run:I,darkMode:o,colors:a}),b&&X.default.createElement(fa,{testId:"runner-replay",variant:"secondary",size:"sm",colors:a,onClick:()=>lt(ah("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:ro},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,Ie,st])=>X.default.createElement("button",{key:le,type:"button","data-testid":Ie,onClick:()=>lo(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:ht,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:ju.background,color:ju.color,textAlign:"center"}},ju.label)),X.default.createElement("div",{className:"min-w-0 flex-1"},hd?P?X.default.createElement("pre",{style:{...cb,whiteSpace:"pre-wrap",maxHeight:"260px",overflowY:"auto"}},hd):X.default.createElement("div",{className:"text-sm truncate",style:{color:a.textSecondary}},hd.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(pQ,{open:P,color:a.textMuted})),w&&X.default.createElement("div",{className:"text-sm mt-3",style:{color:"#dc2626"}},w),Io.length>0?X.default.createElement("div",{className:"mt-3"},X.default.createElement(us,{messages:Io,darkMode:o,testIdPrefix:"runner-message",onUiAction:Pa,onEditMessage:fd,onDeleteMessage:md})):!$&&!N&&!qh&&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:Mn("user",o).background,color:Mn("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(DC,{attachments:$.attachments,darkMode:o}))),I&&(C||MD(I).length>0)&&X.default.createElement("div",{className:"mt-3 space-y-2"},X.default.createElement(F_e,{run:I,darkMode:o,colors:a,expanded:D,onToggle:le=>M(Ie=>({...Ie,[le]:!Ie[le]}))}),C&&!yd&&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,MD(I).length>0?"Working\u2026":"Starting run\u2026"))),(ub.length>0||q.length>0)&&X.default.createElement("div",{"data-testid":"runner-input-requests",className:"mt-3 space-y-2"},yd&&X.default.createElement("div",{className:"text-sm",style:{color:a.textSecondary}},"Paused for input: answer to continue this run."),ub.filter(le=>!hA.has(le.id)).map(le=>X.default.createElement(Kp,{key:le.id,request:le,showRunLink:!1,onSettled:Fh})),q.map(({request:le,outcome:Ie})=>X.default.createElement(Kp,{key:le.id,request:le,initialOutcome:Ie,showRunLink:!1}))),j&&X.default.createElement("div",{className:"text-xs mt-3",style:{color:"#d97706"}},j),qh&&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)),kf&&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(js,{text:I.output||"No output",darkMode:o,onUiAction:Pa})),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(ad,{tone:PD[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,B2(N.duration_ms)):null,N.trace_id&&X.default.createElement("a",{href:et(`/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(js,{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:Mn(ne,o).background,color:Mn(ne,o).color}},Mn(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:at,onChange:le=>it(le.target.value),onKeyDown:le=>{le.key==="Escape"&&ye(null),le.key==="Enter"&&(le.metaKey||le.ctrlKey)&&Al()},placeholder:ne==="user"?"What the user said\u2026":"What the assistant replied\u2026",rows:3,autoFocus:!0,className:"aa-field",style:{...Vh,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:Al,disabled:pe||!at.trim()},pe?"Adding\u2026":`Add ${ne} message`),X.default.createElement(fa,{variant:"secondary",size:"sm",colors:a,onClick:()=>ye(null),disabled:pe},"Cancel"),Ze&&X.default.createElement("span",{className:"text-xs",style:{color:"#dc2626"}},Ze))))),X.default.createElement("div",{style:El,className:"p-4"},X.default.createElement("div",{onDragOver:le=>{le.preventDefault(),m||y(!0)},onDragLeave:()=>y(!1),onDrop:le=>{le.preventDefault(),y(!1),C||zh(le.dataTransfer?.files)}},X.default.createElement("textarea",{"data-testid":"runner-prompt",value:c,onChange:le=>d(le.target.value),onKeyDown:Uh,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:Vh})),X.default.createElement(DC,{attachments:p,darkMode:o,testId:"runner-attachment-chip",onRemove:(le,Ie)=>ab(Ie),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:Xt,"data-testid":"runner-attach-input",type:"file",multiple:!0,style:{display:"none"},onChange:le=>{zh(le.target.files),le.target.value=""}}),X.default.createElement(fa,{testId:"runner-attach",variant:"secondary",size:"sm",colors:a,onClick:()=>Xt.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:so,disabled:!gA},C&&yd?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:El,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(dQ,{label:"Tools",names:e.tools||[],colors:a}),X.default.createElement(dQ,{label:"MCP",names:(e.mcp_servers||e.mcpServers||[]).map(B_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:Me,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))))),he&&!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(ad,{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:El,className:"overflow-hidden"},X.default.createElement("div",{className:"px-4 py-3",style:vd},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:()=>sb(le),title:gs(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(ad,{tone:PD[le.status]||"neutral",darkMode:o},le.status),X.default.createElement("span",{className:"text-xs",style:{color:a.textMuted}},B2(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),gs(le)&&X.default.createElement("span",{className:"font-mono"},"#",gs(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:El,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"},j_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 Ve=Z(J()),F2=e=>new Date(`${e}T00:00:00`),W_e=[{value:7,label:"7 days"},{value:14,label:"14 days"},{value:30,label:"30 days"},{value:90,label:"90 days"}];function DD({onSelectAgent:e}){let[t,r]=(0,Ve.useState)(null),[n,o]=(0,Ve.useState)(!0),[a,i]=(0,Ve.useState)(30);(0,Ve.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 Ve.default.createElement("div",{className:"flex items-center justify-center h-64"},Ve.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));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 Ve.default.createElement("div",{className:"space-y-6"},Ve.default.createElement("div",{className:"flex items-center justify-between"},Ve.default.createElement("div",null,Ve.default.createElement("h1",{className:"text-2xl font-bold text-gray-900"},"Analytics Dashboard"),Ve.default.createElement("p",{className:"text-sm text-gray-500"},"Overview of all your agents' performance")),Ve.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"},W_e.map(p=>Ve.default.createElement("option",{key:p.value,value:p.value},"Last ",p.label)))),Ve.default.createElement("div",{className:"grid grid-cols-2 lg:grid-cols-5 gap-4"},Ve.default.createElement(F0,{title:"Total Agents",value:t?.summary?.total_agents||0,subtitle:`${t?.summary?.active_agents||0} active`,color:"rose"}),Ve.default.createElement(F0,{title:"Total Runs",value:t?.summary?.total_runs||0,subtitle:`${t?.period_days} day period`,color:"blue"}),Ve.default.createElement(F0,{title:"Success Rate",value:`${t?.summary?.success_rate||0}%`,subtitle:`${t?.summary?.completed_runs||0} completed`,color:"green"}),Ve.default.createElement(F0,{title:"Avg Duration",value:u(t?.summary?.avg_duration_ms),subtitle:"per run",color:"purple"}),Ve.default.createElement(F0,{title:"Total Tokens",value:l(t?.summary?.total_tokens),subtitle:`${l(t?.summary?.avg_tokens_per_run)}/run avg`,color:"amber"})),Ve.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6"},Ve.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ve.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Runs Over Time"),t?.charts?.runs_by_day?.length>0?Ve.default.createElement("div",{className:"h-48"},Ve.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.runs_by_day.map((p,f)=>Ve.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ve.default.createElement("div",{className:"relative w-full"},Ve.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"}}),Ve.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"))))),Ve.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ve.default.createElement("span",null,t.charts.runs_by_day[0]?.date&&F2(t.charts.runs_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ve.default.createElement("span",null,t.charts.runs_by_day[t.charts.runs_by_day.length-1]?.date&&F2(t.charts.runs_by_day[t.charts.runs_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ve.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No runs in this period")),Ve.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ve.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage Over Time"),t?.charts?.tokens_by_day?.length>0?Ve.default.createElement("div",{className:"h-48"},Ve.default.createElement("div",{className:"flex items-end justify-between h-full space-x-1"},t.charts.tokens_by_day.map((p,f)=>Ve.default.createElement("div",{key:p.date,className:"flex-1 flex flex-col items-center group"},Ve.default.createElement("div",{className:"relative w-full"},Ve.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"}}),Ve.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"))))),Ve.default.createElement("div",{className:"flex justify-between mt-2 text-xs text-gray-400"},Ve.default.createElement("span",null,t.charts.tokens_by_day[0]?.date&&F2(t.charts.tokens_by_day[0].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})),Ve.default.createElement("span",null,t.charts.tokens_by_day[t.charts.tokens_by_day.length-1]?.date&&F2(t.charts.tokens_by_day[t.charts.tokens_by_day.length-1].date).toLocaleDateString("en-US",{month:"short",day:"numeric"})))):Ve.default.createElement("div",{className:"h-48 flex items-center justify-center text-gray-400"},"No token usage in this period"))),Ve.default.createElement("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6"},Ve.default.createElement("div",{className:"lg:col-span-2 bg-white rounded-xl border border-gray-200 p-6"},Ve.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Top Agents"),t?.top_agents?.length>0?Ve.default.createElement("div",{className:"space-y-3"},t.top_agents.map((p,f)=>Ve.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"},Ve.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),Ve.default.createElement("div",{className:"flex-1 min-w-0"},Ve.default.createElement("p",{className:"font-medium text-gray-900 truncate"},p.name),Ve.default.createElement("p",{className:"text-sm text-gray-500"},p.run_count," runs")),Ve.default.createElement("div",{className:"text-right"},Ve.default.createElement("p",{className:"font-medium text-gray-900"},l(p.total_tokens)),Ve.default.createElement("p",{className:"text-xs text-gray-500"},"tokens"))))):Ve.default.createElement("div",{className:"py-8 text-center text-gray-400"},"No agent activity yet")),Ve.default.createElement("div",{className:"space-y-6"},Ve.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ve.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"By Provider"),Object.keys(t?.provider_breakdown||{}).length>0?Ve.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 Ve.default.createElement("div",{key:p},Ve.default.createElement("div",{className:"flex justify-between text-sm mb-1"},Ve.default.createElement("span",{className:"capitalize text-gray-600"},p),Ve.default.createElement("span",{className:"text-gray-900 font-medium"},f)),Ve.default.createElement("div",{className:"h-2 bg-gray-100 rounded-full overflow-hidden"},Ve.default.createElement("div",{className:"h-full bg-blue-500 rounded-full",style:{width:`${y}%`}})))})):Ve.default.createElement("div",{className:"py-4 text-center text-gray-400 text-sm"},"No data")),Ve.default.createElement("div",{className:"bg-white rounded-xl border border-gray-200 p-6"},Ve.default.createElement("h3",{className:"font-semibold text-gray-900 mb-4"},"Token Usage"),Ve.default.createElement("div",{className:"space-y-4"},Ve.default.createElement("div",{className:"flex justify-between items-center"},Ve.default.createElement("span",{className:"text-sm text-gray-500"},"Input Tokens"),Ve.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_input_tokens))),Ve.default.createElement("div",{className:"flex justify-between items-center"},Ve.default.createElement("span",{className:"text-sm text-gray-500"},"Output Tokens"),Ve.default.createElement("span",{className:"font-medium text-gray-900"},l(t?.summary?.total_output_tokens))),Ve.default.createElement("div",{className:"pt-2 border-t border-gray-100"},Ve.default.createElement("div",{className:"flex justify-between items-center"},Ve.default.createElement("span",{className:"text-sm font-medium text-gray-700"},"Total"),Ve.default.createElement("span",{className:"font-bold text-gray-900"},l(t?.summary?.total_tokens)))))))))}function F0({title:e,value:t,subtitle:r,color:n}){return Ve.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`},Ve.default.createElement("p",{className:"text-sm text-gray-500"},e),Ve.default.createElement("p",{className:"text-2xl font-bold text-gray-900 mt-1"},t),r&&Ve.default.createElement("p",{className:"text-xs text-gray-400 mt-1"},r))}var oe=Z(J());function jD({agent:e,onBack:t}){let{timeWindow:r}=pl(),[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),q=et(`/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=Gn(),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(`${q}/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,"",et(`/traces/${Y}`)),window.dispatchEvent(new CustomEvent("dashboard:navigate",{detail:{path:et(`/traces/${Y}`)}}));return}G(P.record_id||P.id)},ie=()=>{l(null),c(null),p([]),m("run"),L(q)},Me=P=>{m("all"),P?(c({id:P.id,name:P.display_name}),L(`${q}/sessions/${P.id}`)):(c(null),L(`${q}/sessions`))},he=P=>{b.current=!0,m(P),L(P==="all"?u?`${q}/sessions/${u.id}`:`${q}/sessions`:s?`${q}/runs/${s.id}`:q)},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,ye)=>ne+(ye.tokens||0),0),avgTokens:se.runs.reduce((ne,ye)=>ne+(ye.tokens||0),0)/se.runs.length,avgDuration:se.runs.reduce((ne,ye)=>ne+(ye.duration_ms||0),0)/se.runs.length,latest:se.runs[0],sortedRuns:[...se.runs].sort((ne,ye)=>(ye.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}},te=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`:"-",ee=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),ye=Math.floor(se/36e5),at=Math.floor(se/864e5);return ne<1?"Just now":ne<60?`${ne}m ago`:ye<24?`${ye}h ago`:at<7?`${at}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(fl,{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 ${te(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(Rc,{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"},ee(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:()=>Me(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:()=>he("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:()=>he("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 ${te(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(On,{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(Tu,{agentId:e.id,embedded:!0,selectedSessionId:u?.id??null,onSelectSession:Me})):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(On,{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(us,{messages:d,darkMode:!1}):oe.default.createElement(us,{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:et(`/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(On,{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(On,{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:()=>Me(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(Rc,{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 H_e={productivity:"[+]",development:"<>",research:"[?]",creative:"[*]",data:"[#]",automation:"[>]"};function $D({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,H_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(On,{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(On,{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 LD({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=ZG(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})=>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(On,{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(On,{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"}},Fo.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"}},Fo.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 zD({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 ze=Z(J());var St=Z(J());var BD=150,q_e=e=>e.reduce((t,r)=>t+(Number(r)||0),0),K_e=e=>e.length?q_e(e)/e.length:0,Ws=e=>e.reduce((t,r)=>r!=null&&Number(r)>t?Number(r):t,0),FD=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},pf=(e,t)=>[0,25,50,75,100].map(r=>({top:r,label:t(e*(1-r/100))})),V_e=4,Ch=e=>Math.max(V_e,FD(e)),fQ=(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},G_e=5.5,Y_e=12,X_e=(e,t)=>{let r=!!e.flip;if(!(t>0))return r;let n=String(e.label||"").length*G_e+Y_e,o=Number(e.left)/100*t,a=t-o;return r?!(oo):aa},ff=(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(" ")},U2=(e,t)=>{let r=ff(e,t);return r?`0,100 ${r} 100,100`:""},mQ=(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 K_e(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(" ")},U0=(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 gQ({label:e,value:t,unit:r,sub:n,delta:o,deltaColor:a,deltaSub:i,spark:s,sparkColor:l}){return St.default.createElement(Be,{padding:"14px 16px 12px",style:{display:"flex",flexDirection:"column",gap:6,minWidth:0}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8}},St.default.createElement(We,{size:11,spacing:"0.05em"},e),St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,fontWeight:600,color:a,whiteSpace:"nowrap"}},o)),St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6}},St.default.createElement("span",{style:{fontFamily:K,fontSize:26,fontWeight:700,lineHeight:1.1,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},t),r?St.default.createElement("span",{style:{fontFamily:K,fontSize:12,color:"var(--color-text-muted)"}},r):null),St.default.createElement("div",{title:n,style:{fontFamily:K,fontSize:11,color:"var(--color-text-secondary)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},n),St.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:8,marginTop:2}},St.default.createElement("svg",{viewBox:"0 0 100 28",preserveAspectRatio:"none","aria-hidden":"true",style:{flex:1,height:28,minWidth:0,display:"block",overflow:"visible"}},St.default.createElement("polyline",{points:s,fill:"none",stroke:l,strokeWidth:"1.5",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"})),St.default.createElement("span",{style:{fontSize:10,color:"var(--color-text-muted)",whiteSpace:"nowrap"}},i)))}function hQ({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=BD}){let p=(0,St.useRef)(null),f=N0(p),m="1px dashed var(--color-text-secondary)";return St.default.createElement(Be,{padding:"14px 16px 12px",style:{minWidth:0,display:"flex",flexDirection:"column",gap:8}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"}},St.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},e),St.default.createElement("span",{style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)"}},t),St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:12,fontWeight:600,color:n,whiteSpace:"nowrap"}},r)),St.default.createElement("div",{style:{display:"flex",gap:12,flexWrap:"wrap"}},o.map(y=>St.default.createElement("span",{key:y.label,style:{display:"inline-flex",alignItems:"center",gap:5,fontFamily:K,fontSize:10,color:"var(--color-text-secondary)"}},St.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:y.color,flexShrink:0}}),y.label))),St.default.createElement("div",{ref:p,style:{position:"relative",height:d,margin:"6px 0 0 40px"}},a.map(y=>St.default.createElement("div",{key:y.top,style:{position:"absolute",left:0,right:0,top:`${y.top}%`,borderTop:"1px solid var(--color-border-light)"}},St.default.createElement("span",{style:{position:"absolute",right:"calc(100% + 6px)",top:-6,whiteSpace:"nowrap",fontFamily:K,fontSize:10,lineHeight:"12px",color:"var(--color-text-muted)"}},y.label))),i.length>0&&St.default.createElement("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"stretch",gap:1}},i.map((y,x)=>St.default.createElement("div",{key:x,title:y.title,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column-reverse"}},y.segs.map((h,g)=>St.default.createElement("div",{key:g,style:{height:`${h.h.toFixed(2)}%`,background:h.color,flexShrink:0}}))))),(s.length>0||l.length>0)&&St.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)=>St.default.createElement("polygon",{key:x,points:y.points,fill:y.color,opacity:"0.16"})),s.map((y,x)=>St.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=X_e(y,f),g=`${Number(y.left).toFixed(2)}%`;return St.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}}},St.default.createElement("span",{style:{position:"absolute",top:-4,[h?"right":"left"]:4,maxWidth:"calc(100% - 8px)",boxSizing:"border-box",overflow:"hidden",textOverflow:"ellipsis",fontFamily:K,fontSize:9,lineHeight:"12px",color:"var(--color-text-secondary)",whiteSpace:"nowrap",background:"var(--color-card)",padding:"0 4px",borderRadius:3}},y.label))})),St.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",marginLeft:40,fontFamily:K,fontSize:10,color:"var(--color-text-muted)"}},c.map((y,x)=>St.default.createElement("span",{key:x},y))))}function Ah({label:e,qualifier:t,meta:r,children:n}){return St.default.createElement(Be,{padding:0,style:{overflow:"hidden"}},St.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:8,padding:"10px 14px",borderBottom:"1px solid var(--color-border-light)"}},St.default.createElement(We,null,e),t?St.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},t):null,r?St.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},r):null),n)}function UD({template:e,columns:t}){return St.default.createElement("div",{style:{display:"grid",gridTemplateColumns:e,gap:8,padding:"6px 14px 4px",fontFamily:K,fontSize:10,textTransform:"uppercase",letterSpacing:"0.05em",color:"var(--color-text-muted)"}},St.default.createElement("span",null),t.map(r=>St.default.createElement("span",{key:r,style:{textAlign:"right"}},r)))}function W2({template:e,active:t=!1,onClick:r,title:n,padding:o="8px 14px",children:a}){let i=typeof r=="function";return St.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 WD({children:e,padding:t="8px 14px"}){return St.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,padding:t,borderTop:"1px solid var(--color-border-light)"}},e)}function W0({children:e}){return St.default.createElement("div",{style:{padding:"12px 14px",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},e)}function HD({color:e}){return St.default.createElement("span",{style:{width:8,height:8,borderRadius:2,background:e,flexShrink:0}})}function qD({pct:e,color:t}){return St.default.createElement("div",{style:{marginTop:5,height:3,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},St.default.createElement("div",{style:{width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function KD({pct:e,color:t,width:r=70}){return St.default.createElement("span",{style:{width:r,height:4,borderRadius:999,background:"var(--color-muted)",overflow:"hidden",flexShrink:0,display:"inline-block"}},St.default.createElement("span",{style:{display:"block",width:`${Math.max(0,Math.min(100,Number(e)||0))}%`,height:"100%",background:t}}))}function hs({children:e,color:t="var(--color-text-primary)",weight:r=400,width:n,style:o}){return St.default.createElement("span",{style:{fontFamily:K,fontSize:11,fontWeight:r,textAlign:"right",color:t,width:n,...o}},e)}var bQ=6e4,Z_e=1180,Nh={"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"}},J_e=Object.keys(Nh).map(e=>({value:e,label:e})),GD="24h",Eh=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-5)","var(--chart-4)"],H0=[{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)"}],yQ=e=>H0.find(t=>t.type===e)?.color||"var(--color-text-muted)",Q_e=3,q2="var(--color-text-primary)",R_e={success:"var(--color-success)",error:"var(--color-error)",muted:"var(--color-text-muted)"},eCe=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],VD=e=>String(e).padStart(2,"0"),Ft=e=>e==null||Number.isNaN(Number(e))?0:Number(e),tCe=e=>e.reduce((t,r)=>t+Ft(r),0),vQ=e=>`${Ft(e).toFixed(1)}%`,H2=(e,t)=>`${e} ${t}${e===1?"":"s"}`,rCe=e=>e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`,nCe=(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},oCe=e=>{let t=String(e.label||"incident"),r=H0.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},aCe=e=>{let t=Ft(e);return t<60?`${t}s`:t<3600?`${+(t/60).toFixed(1)} min`:`${+(t/3600).toFixed(1)} h`},xQ=async e=>{let t=await fetch(`/api/metrics?${e.toString()}`);if(!t.ok)throw new Error(`Request failed (${t.status})`);return t.json()},iCe=(e,t,r=Date.now())=>{let n=Math.max(1,Ft(t))*1e3,o=Math.max(1,Math.round(Ft(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=Nh[e.range]||Nh[t]||Nh[GD],o=Ft(e.bucket_seconds)||n.seconds,a=Ft(e.window_minutes)||(e.window_hours?Ft(e.window_hours)*60:n.n*n.seconds/60),i=Array.isArray(e.series)?e.series:iCe(a,o),s=Ft(e.totals?.requests??r.total_requests),l=Ft(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:Ft(r.errors),error_rate:Ft(r.error_rate),tokens_in:Ft(r.tokens_input),tokens_out:Ft(r.tokens_output),tokens:Ft(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:Ft(f.requests),share_pct:s?Ft(f.requests)/s*100:0,p95_ms:null,error_rate:f.requests?Ft(f.errors)/Ft(f.requests)*100:0,cost:Ft(f.cost),tokens:Ft(f.tokens)})),p=Array.isArray(e.errors_by_type)&&e.errors_by_type.length?e.errors_by_type:H0.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:[]}},wQ=e=>{let t=Nh[e.range];if(t)return t;let r=Math.max(1,Math.round(e.windowMinutes/60));return{bucket:aCe(e.bucketSeconds),prev:`vs previous ${r}h`,title:`last ${r} hours`}},lCe=e=>{let[t,r]=(0,ze.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 YD(){let[e,t]=(0,ze.useState)(GD),[r,n]=(0,ze.useState)(""),[o,a]=(0,ze.useState)(null),[i,s]=(0,ze.useState)(!0),[l,u]=(0,ze.useState)(null),[c,d]=(0,ze.useState)(!1),p=(0,ze.useRef)(0),f=lCe(Z_e),m=(0,ze.useRef)(null),y=(0,ze.useCallback)(async()=>{let S=++p.current;try{let w=new URLSearchParams({range:e});r&&w.set("agent",r);let[_,k]=await Promise.all([xQ(w),r?xQ(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,ze.useEffect)(()=>{let S=!1;d(!0),y().finally(()=>{S||d(!1)});let w=setInterval(y,bQ);return()=>{S=!0,clearInterval(w)}},[y]);let x=(0,ze.useMemo)(()=>o?sCe(o.data,e):null,[o,e]),h=(0,ze.useMemo)(()=>x?x.agent?nCe(o.ranking,x.agents):x.agents:[],[x,o]),g=(0,ze.useMemo)(()=>h.map(S=>S.name).filter(Boolean),[h]),v=(0,ze.useMemo)(()=>{let S=Object.fromEntries(g.map((_,k)=>[_,Eh[k%Eh.length]])),w=g.length;return(x?x.agents:[]).forEach(_=>{_.name&&!S[_.name]&&(S[_.name]=Eh[w++%Eh.length])}),_=>S[_]||Eh[0]},[g,x]),b=(0,ze.useMemo)(()=>x?cCe(x,v):null,[x,v]);return i?ze.default.createElement("div",{className:"flex items-center justify-center h-64"},ze.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2",style:{borderBottomColor:"var(--color-accent-ui)"}})):l||!x?ze.default.createElement("div",null,ze.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:q2}},"Metrics"),ze.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}`:"")):ze.default.createElement(uCe,{m:x,view:b,railAgents:h,range:Nh[e]?e:GD,agent:r,agentOptions:r&&!g.includes(r)?[...g,r]:g,colorFor:v,narrow:f,pending:c,onRange:t,onAgent:n})}function uCe({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=wQ(e),p=e.totals.requests===0,f=m=>c(o===m?"":m);return ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,width:"100%",maxWidth:1600,boxSizing:"border-box",color:q2,fontSize:13}},ze.default.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:16,flexWrap:"wrap"}},ze.default.createElement("div",{style:{flex:1,minWidth:240}},ze.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em"}},"Metrics"),ze.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}`:"")),ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap"}},ze.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"}},ze.default.createElement("option",{value:""},"All agents"),a.map(m=>ze.default.createElement("option",{key:m,value:m},m))),e.environment&&ze.default.createElement("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"6px 10px",borderRadius:8,border:"1px solid var(--color-border)",fontFamily:K,fontSize:11,color:"var(--color-text-cell)",background:"var(--color-card)"}},ze.default.createElement("span",{style:{color:"var(--color-text-muted)"}},"env"),e.environment),ze.default.createElement(cs,{options:J_e,value:n,onChange:u}),ze.default.createElement("span",{title:l?"loading\u2026":`refreshes every ${bQ/1e3}s`,style:{display:"inline-flex",alignItems:"center",gap:6,fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},ze.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?ze.default.createElement(Be,{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",ze.default.createElement("div",{style:{marginTop:8,fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},o||"all agents"," \xB7 ",d.title)):ze.default.createElement(ze.default.Fragment,null,ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:12,opacity:l?.6:1}},t.signals.map(m=>ze.default.createElement(gQ,{key:m.label,...m,deltaSub:d.prev}))),ze.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}},ze.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(320px, 1fr))",gap:16,minWidth:0}},t.panels.map(m=>ze.default.createElement(hQ,{key:m.title,...m,xLabels:t.xLabels,height:BD}))),ze.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16,minWidth:0}},ze.default.createElement(Ah,{label:"Agents",qualifier:"by requests \xB7 click to filter"},ze.default.createElement(UD,{template:"minmax(0, 1fr) 44px 44px 40px 52px",columns:["req","p95","err","cost"]}),r.length===0&&ze.default.createElement(W0,null,"no agents in this window"),r.map(m=>ze.default.createElement(W2,{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}`},ze.default.createElement("div",{style:{minWidth:0}},ze.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0}},ze.default.createElement(HD,{color:i(m.name)}),ze.default.createElement("span",{style:{fontSize:12,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name)),ze.default.createElement(qD,{pct:m.share_pct,color:i(m.name)})),ze.default.createElement(hs,null,Nn(m.requests)),ze.default.createElement(hs,{color:"var(--color-text-secondary)"},jn(m.p95_ms)),ze.default.createElement(hs,{color:Ft(m.error_rate)>=1.5?"var(--color-error-text)":"var(--color-text-secondary)"},vQ(m.error_rate)),ze.default.createElement(hs,null,p0(m.cost))))),ze.default.createElement(Ah,{label:"Models",qualifier:"by tokens"},e.models.length===0&&ze.default.createElement(W0,null,"no model usage in this window"),e.models.map((m,y)=>ze.default.createElement(W2,{key:`${m.model}-${m.provider}-${y}`,template:"minmax(0, 1fr) 52px 56px"},ze.default.createElement("div",{style:{minWidth:0}},ze.default.createElement("div",{style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0}},ze.default.createElement("span",{style:{fontFamily:K,fontSize:11,fontWeight:600,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.model||"unknown"),m.provider&&ze.default.createElement("span",{style:{fontFamily:K,fontSize:10,color:"var(--color-text-muted)"}},m.provider)),ze.default.createElement(qD,{pct:m.share_pct,color:"var(--color-token-in)"})),ze.default.createElement(hs,null,Nn(m.tokens)),ze.default.createElement(hs,{color:"var(--color-text-secondary)"},p0(m.cost))))),ze.default.createElement(Ah,{label:"Slowest actions",qualifier:"p95"},e.actions.length===0&&ze.default.createElement(W0,null,"no actions in this window"),e.actions.map(m=>ze.default.createElement(WD,{key:m.name},ze.default.createElement("span",{title:m.name,style:{flex:1,minWidth:0,fontFamily:K,fontSize:11,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),ze.default.createElement(KD,{pct:t.slowestP95?Ft(m.p95_ms)/t.slowestP95*100:0,color:i(m.agent)}),ze.default.createElement(hs,{weight:600,width:40},jn(m.p95_ms))))),ze.default.createElement(Ah,{label:"Tools",qualifier:"by calls"},ze.default.createElement(UD,{template:"minmax(0, 1fr) 44px 48px 40px",columns:["calls","avg","err"]}),e.tools.length===0&&ze.default.createElement(W0,null,"no tool calls in this window"),e.tools.map(m=>ze.default.createElement(W2,{key:m.name,template:"minmax(0, 1fr) 44px 48px 40px",padding:"7px 14px"},ze.default.createElement("span",{title:m.name,style:{fontFamily:K,fontSize:11,fontWeight:600,color:"var(--span-tool)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.name),ze.default.createElement(hs,null,Nn(m.calls)),ze.default.createElement(hs,{color:"var(--color-text-secondary)"},jn(m.avg_ms)),ze.default.createElement(hs,{color:Ft(m.error_rate)>=2?"var(--color-error-text)":"var(--color-text-secondary)"},vQ(m.error_rate))))),ze.default.createElement(Ah,{label:"Errors by type",meta:`${Math.round(e.totals.errors)} total`},e.errorsByType.map(m=>ze.default.createElement(WD,{key:m.type},ze.default.createElement(HD,{color:yQ(m.type)}),ze.default.createElement("span",{style:{flex:1,minWidth:0,fontSize:12,color:"var(--color-text-cell)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},m.type),ze.default.createElement(KD,{pct:t.errorTotal?Ft(m.count)/t.errorTotal*100:0,color:yQ(m.type)}),ze.default.createElement(hs,{weight:600,width:32},Math.round(Ft(m.count))))))))))}function cCe(e,t){let{series:r,totals:n,deltas:o}=e,a=r.length,i=wQ(e),s=r.map(B=>new Date(B.ts)),l=e.windowMinutes>=2880,u=B=>Number.isNaN(B.getTime())?"":l?`${eCe[B.getDay()]} ${VD(B.getHours())}h`:`${VD(B.getHours())}:${VD(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=>Ft(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:Ft(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=>Ft(se[B]))})):[{label:"requests",color:Eh[0],data:p}],C=H0.map(B=>({label:B.type,color:B.color,data:r.map(se=>Ft((se.errors_by_type||{})[B.type]))})),E=(Ft(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 at=Math.min(a-1,Math.max(0,Math.floor((ne-s[0].getTime())/E)))/(a-1);return{left:at*100,label:se,flip:at>.55}},Q=e.markers.filter(B=>B.kind==="deploy").sort((B,se)=>new Date(B.ts)-new Date(se.ts)).slice(-Q_e).map(B=>I(B,B.label)).filter(Boolean),$=e.markers.find(B=>B.kind==="incident"),F=$?I($,oCe($)):null,N=F?[F]:[],O=Ch(Ws(p)*1.1),j=Ch(Ws(f)*1.15),T=Ch(Math.max(Ws(w),Ws(S),Ws(b))*1.05),D=Ch(Math.max(Ws(m),Ws(y))*1.1),M=FD(Ws(x)*1.1),q=fQ(M),V=Ch(Ws(h)*1.1),L=Ft(n.requests),G=Ft(n.requests_per_minute),W=Ft(n.errors),ie=Ft(n.error_rate),Me=Ft(n.tokens)||Ft(n.tokens_in)+Ft(n.tokens_out),he=Ft(n.cost),ce=n.cost_per_request!=null?Ft(n.cost_per_request):L?he/L:0,R=Ft(n.tool_calls),te=n.tool_error_rate!=null?Ft(n.tool_error_rate):R?Ft(n.tool_errors)/R*100:0,z=Ft(e.errorsByType.find(B=>B.type===H0[0].type)?.count),ee=[{title:"Requests",sub:`per ${i.bucket} \xB7 stacked by agent`,value:`${Nn(L)} \xB7 ${G.toFixed(1)}/min`,legend:A.map(B=>({label:B.label,color:B.color})),ticks:pf(O,Nn),buckets:U0(A,O,B=>`${u(s[B])} \xB7 ${Math.round(p[B])} req`),markers:Q},{title:"Latency",sub:"generation percentiles",value:`p50 ${jn(n.p50_ms)}`,legend:[{label:`p50 ${jn(n.p50_ms)}`,color:"var(--color-token-in)"},{label:`p95 ${jn(n.p95_ms)}`,color:"var(--color-warning)"},{label:`p99 ${jn(n.p99_ms)}`,color:"var(--color-error)"}],ticks:pf(T,rCe),lines:[{points:ff(w,T),color:"var(--color-error)",width:1.5},{points:ff(S,T),color:"var(--color-warning)",width:1.5},{points:ff(b,T),color:"var(--color-token-in)",width:2}],areas:[{points:U2(b,T),color:"var(--color-token-in)"}],markers:N},{title:"Errors",sub:`per ${i.bucket} \xB7 by type`,value:`${ie.toFixed(2)}% \xB7 ${H2(Math.round(W),"error")}`,valueColor:ie>1?"var(--color-error)":q2,legend:C.map(B=>({label:B.label,color:B.color})),ticks:pf(j,B=>String(Math.round(B))),buckets:U0(C,j,B=>`${u(s[B])} \xB7 ${H2(Math.round(f[B]),"error")}`),markers:N},{title:"Tokens",sub:`per ${i.bucket} \xB7 input / output`,value:`${Nn(Me)} \xB7 in ${Nn(n.tokens_in)} / out ${Nn(n.tokens_out)}`,legend:[{label:"input",color:"var(--color-token-in)"},{label:"output",color:"var(--color-token-out)"}],ticks:pf(D,Nn),lines:[{points:ff(m,D),color:"var(--color-token-in)",width:1.5},{points:ff(y,D),color:"var(--color-token-out)",width:1.5}],areas:[{points:U2(m,D),color:"var(--color-token-in)"},{points:U2(y,D),color:"var(--color-token-out)"}]},{title:"Cost",sub:`estimated \xB7 per ${i.bucket}`,value:`${p0(he)} \xB7 ${f0(ce)}/req`,legend:[{label:"spend",color:"var(--color-text-secondary)"}],ticks:pf(M,B=>f0(B,q)),buckets:U0([{color:"var(--color-text-secondary)",data:x}],M,B=>`${u(s[B])} \xB7 ${f0(x[B],q)}`)},{title:"Tool calls",sub:`per ${i.bucket} \xB7 MCP + agent-defined`,value:`${Nn(R)} \xB7 ${te.toFixed(1)}% errors`,legend:[{label:"calls",color:"var(--span-tool)"},{label:"errors",color:"var(--color-error)"}],ticks:pf(V,Nn),buckets:U0([{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 ${H2(Math.round(h[B]),"call")}`)}],U=(B,se,ne)=>{let ye=B==null?null:Ft(B);return ye==null||ye===0?"muted":se&&se(ye)?"success":ne&&ne(ye)?"error":"muted"},P=(B,se,ne,ye,at,it,pe,ue)=>({label:B,value:se,unit:ne,sub:ye,delta:at,deltaColor:R_e[it],spark:mQ(pe),sparkColor:ue});return{signals:[P("Requests",Nn(L),"",`${G.toFixed(1)} req/min`,lh(o.requests_pct),U(o.requests_pct,B=>B>0,null),p,"var(--color-token-in)"),P("Latency",jn(n.p50_ms),"p50",`p95 ${jn(n.p95_ms)} \xB7 p99 ${jn(n.p99_ms)}`,lh(o.p50_pct),U(o.p50_pct,B=>B<0,B=>B>0),b,"var(--color-token-in)"),P("Error rate",ie.toFixed(2),"%",`${H2(Math.round(W),"error")} \xB7 ${Math.round(z)} rate-limited`,lh(o.error_rate_pt," pt",1),U(o.error_rate_pt,B=>B<0,B=>B>0),f,"var(--color-error)"),P("Tokens",Nn(Me),"",`in ${Nn(n.tokens_in)} \xB7 out ${Nn(n.tokens_out)}`,lh(o.tokens_pct),"muted",m.map((B,se)=>B+y[se]),"var(--color-token-in)"),P("Cost",p0(he),"",`${f0(ce)} per request`,lh(o.cost_pct),"muted",x,"var(--color-text-secondary)")],panels:ee,xLabels:c,slowestP95:Ws(e.actions.map(B=>B.p95_ms)),errorTotal:tCe(e.errorsByType.map(B=>B.count))}}var Fe=Z(J());var dCe=6e4,pCe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],SQ={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)"}},q0=e=>e==null?"0":e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e),kQ=e=>e==null?"\u2014":e>=1e3?`${(e/1e3).toFixed(2)}s`:`${Math.round(e)}ms`,fCe=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 XD({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,dCe);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=SQ[A]||SQ.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"}},pCe.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:q0(b.total_tools),hint:`${b.active_tools||0} called in this window`}),Fe.default.createElement(k,{label:"Tool Calls",value:q0(b.total_calls),hint:`${kQ(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:q0(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:q0(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"}},q0(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"}},kQ(A.avg_duration_ms)),Fe.default.createElement("td",{style:{padding:"12px 16px",textAlign:"right",color:h.textMuted,fontSize:"13px"}},fCe(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 mCe({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 He=Z(J());var gCe=6e4,hCe=[{value:24,label:"24h"},{value:168,label:"7d"},{value:720,label:"30d"}],yCe=[{value:"all",label:"All"},{value:"active",label:"Active"},{value:"configured",label:"Configured"},{value:"available",label:"Available"}],vCe=["http","streamable_http","sse"],_Q={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)"}},K0=e=>e==null?"0":e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e);function ZD({focusServer:e,onOpenTools:t}){let{darkMode:r}=ut(),[n,o]=(0,He.useState)(null),[a,i]=(0,He.useState)(!0),[s,l]=(0,He.useState)(null),[u,c]=(0,He.useState)("all"),[d,p]=(0,He.useState)(168),[f,m]=(0,He.useState)(e||null),[y,x]=(0,He.useState)(null),[h,g]=(0,He.useState)(null),v=(0,He.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,He.useEffect)(()=>{v();let $=setInterval(v,gCe);return()=>clearInterval($)},[v]),(0,He.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=_Q[$]||_Q.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 He.default.createElement("div",{className:"flex items-center justify-center h-64"},He.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}));if(s&&!n)return He.default.createElement("div",{style:{padding:"24px"}},He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:b.textPrimary,margin:0}},"MCP Services"),He.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})=>He.default.createElement("div",{style:{background:b.cardBg,borderRadius:"12px",padding:"20px",border:`1px solid ${b.border}`}},He.default.createElement("div",{style:{fontSize:"11px",color:b.textSecondary,textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:"8px"}},$),He.default.createElement("div",{style:{fontSize:"32px",fontWeight:"bold",fontFamily:"monospace",color:b.textPrimary}},F),N&&He.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"8px"}},N));return He.default.createElement("div",{style:{borderRadius:"12px",overflow:"hidden",minHeight:"calc(100vh - 200px)",backgroundColor:b.bg}},He.default.createElement("div",{style:{padding:"24px 24px 16px 24px",borderBottom:`1px solid ${b.border}`,marginBottom:"16px"}},He.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"16px",flexWrap:"wrap"}},He.default.createElement("div",null,He.default.createElement("h1",{style:{fontSize:"24px",fontWeight:"bold",color:b.textPrimary,margin:0}},"MCP Services"),He.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")),He.default.createElement("div",{style:{display:"flex",gap:"4px"}},hCe.map($=>He.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))))),He.default.createElement("div",{style:{padding:"0 24px 24px 24px"}},He.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))",gap:"16px",marginBottom:"16px"}},He.default.createElement(Q,{label:"Active",value:K0(k.active),hint:"called in this window"}),He.default.createElement(Q,{label:"Configured",value:K0(k.configured),hint:"declared, no traffic yet"}),He.default.createElement(Q,{label:"Available",value:K0(k.available),hint:"defaults you can connect"}),He.default.createElement(Q,{label:"Tool Calls",value:K0(k.total_calls),hint:"through MCP servers"})),h&&He.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),He.default.createElement("div",{style:{display:"flex",gap:"8px",marginBottom:"16px",flexWrap:"wrap"}},yCe.map($=>He.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))),He.default.createElement("div",{style:{display:"grid",gap:"12px"}},E.length===0?He.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 He.default.createElement("div",{key:$.key,style:{background:b.cardBg,borderRadius:"12px",border:`1px solid ${N?F.fg:b.border}`,overflow:"hidden"}},He.default.createElement("div",{onClick:()=>m(N?null:$.key),style:{padding:"16px 20px",cursor:"pointer",display:"flex",alignItems:"center",gap:"16px",flexWrap:"wrap"}},He.default.createElement("div",{style:{flex:1,minWidth:"220px"}},He.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}},He.default.createElement("span",{style:{fontSize:"15px",fontWeight:"600",color:b.textPrimary}},$.name),He.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&&He.default.createElement("span",{style:{fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r?"rgba(239,68,68,0.15)":"#fef2f2",color:"#ef4444"}},"first-party"),Wd($)&&He.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"),Qy($)&&He.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"),G1($)&&He.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&&He.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&&He.default.createElement("div",{style:{fontSize:"13px",color:b.textSecondary,marginTop:"4px"}},$.description)),He.default.createElement("div",{style:{display:"flex",gap:"24px",alignItems:"center"}},He.default.createElement("div",{style:{textAlign:"right"}},He.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:b.textPrimary}},K0($.calls)),He.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"calls")),He.default.createElement("div",{style:{textAlign:"right"}},He.default.createElement("div",{style:{fontSize:"18px",fontFamily:"monospace",fontWeight:"600",color:$.errors>0?b.error:b.textPrimary}},$.errors||0),He.default.createElement("div",{style:{fontSize:"11px",color:b.textMuted}},"errors")),$.launchable&&He.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&&He.default.createElement(xCe,{server:$,colors:b,tone:F,onOpenTools:t}))})),A.length>0&&He.default.createElement("div",{style:{marginTop:"24px",background:b.cardBg,borderRadius:"12px",border:`1px solid ${b.border}`,padding:"20px"}},He.default.createElement("h3",{style:{fontSize:"16px",fontWeight:"600",color:b.textPrimary,margin:"0 0 12px 0"}},"Running sandboxes"),He.default.createElement("div",{style:{display:"grid",gap:"8px"}},A.map($=>He.default.createElement("div",{key:$.session_id,style:{display:"flex",justifyContent:"space-between",gap:"12px",fontSize:"13px",color:b.textCell,flexWrap:"wrap"}},He.default.createElement("span",{style:{fontFamily:"monospace"}},($.mcp_servers||[]).join(", ")||$.sandbox_type),He.default.createElement("span",{style:{color:b.textMuted}},$.status," \xB7 ",$.runs_count,"/",$.max_runs," runs \xB7 expires ",new Date($.expires_at).toLocaleTimeString())))))))}function xCe({server:e,colors:t,tone:r,onOpenTools:n}){let o=({label:i,children:s})=>He.default.createElement("div",{style:{display:"flex",gap:"12px",fontSize:"13px",alignItems:"baseline"}},He.default.createElement("span",{style:{color:t.textMuted,minWidth:"120px",fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.05em"}},i),He.default.createElement("span",{style:{color:t.textCell,flex:1,wordBreak:"break-word"}},s)),a=e.command||e.url;return He.default.createElement("div",{style:{padding:"0 20px 20px 20px",display:"grid",gap:"10px"}},He.default.createElement("div",{style:{height:"1px",background:t.borderLight,marginBottom:"4px"}}),a&&He.default.createElement(o,{label:vCe.includes(e.transport)?"Endpoint":"Command"},He.default.createElement("code",{style:{fontFamily:"monospace",fontSize:"12px",padding:"4px 8px",borderRadius:"4px",background:t.codeBg,display:"inline-block"}},a)),e.transport&&He.default.createElement(o,{label:"Transport"},e.transport),e.categories?.length>0&&He.default.createElement(o,{label:"Categories"},e.categories.join(", ")),e.requires_credentials?.length>0&&He.default.createElement(o,{label:"Requires"},e.requires_credentials.join(", ")),He.default.createElement(o,{label:e.tool_count>0?"Tools used":"Tools offered"},e.tools?.length>0?He.default.createElement("span",{style:{display:"flex",gap:"6px",flexWrap:"wrap"}},e.tools.map(i=>He.default.createElement("code",{key:i,style:{fontFamily:"monospace",fontSize:"11px",padding:"2px 8px",borderRadius:"6px",background:r.bg,color:r.fg}},i))):He.default.createElement("span",{style:{color:t.textMuted}},"none recorded")),e.agents?.length>0&&He.default.createElement(o,{label:"Used by"},e.agents.join(", ")),e.configured_by?.length>0&&He.default.createElement(o,{label:"Configured by"},e.configured_by.join(", ")),e.last_seen&&He.default.createElement(o,{label:"Last call"},new Date(e.last_seen).toLocaleString()),He.default.createElement("div",{style:{display:"flex",gap:"12px",marginTop:"4px",flexWrap:"wrap"}},e.docs_url&&He.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&&He.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 id=Z(J());var V2={logger:typeof console<"u"?console:void 0,WebSocket:typeof WebSocket<"u"?WebSocket:void 0},$n={log(...e){this.enabled&&(e.push(Date.now()),V2.logger.log("[ActionCable]",...e))}},G0=()=>new Date().getTime(),K2=e=>(G0()-e)/1e3,Y0=class{constructor(t){this.visibilityDidChange=this.visibilityDidChange.bind(this),this.connection=t,this.reconnectAttempts=0}start(){this.isRunning()||(this.startedAt=G0(),delete this.stoppedAt,this.startPolling(),addEventListener("visibilitychange",this.visibilityDidChange),$n.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`))}stop(){this.isRunning()&&(this.stoppedAt=G0(),this.stopPolling(),removeEventListener("visibilitychange",this.visibilityDidChange),$n.log("ConnectionMonitor stopped"))}isRunning(){return this.startedAt&&!this.stoppedAt}recordMessage(){this.pingedAt=G0()}recordConnect(){this.reconnectAttempts=0,delete this.disconnectedAt,$n.log("ConnectionMonitor recorded connect")}recordDisconnect(){this.disconnectedAt=G0(),$n.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()&&($n.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${K2(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`),this.reconnectAttempts++,this.disconnectedRecently()?$n.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${K2(this.disconnectedAt)} s`):($n.log("ConnectionMonitor reopening"),this.connection.reopen()))}get refreshedAt(){return this.pingedAt?this.pingedAt:this.startedAt}connectionIsStale(){return K2(this.refreshedAt)>this.constructor.staleThreshold}disconnectedRecently(){return this.disconnectedAt&&K2(this.disconnectedAt){(this.connectionIsStale()||!this.connection.isOpen())&&($n.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`),this.connection.reopen())}),200)}};Y0.staleThreshold=6;Y0.reconnectionBackoffRate=.15;var AQ={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:V0,protocols:JD}=AQ,bCe=JD.slice(0,JD.length-1),CQ=[].indexOf,X0=class{constructor(t){this.open=this.open.bind(this),this.consumer=t,this.subscriptions=this.consumer.subscriptions,this.monitor=new Y0(this),this.disconnected=!0}send(t){return this.isOpen()?(this.webSocket.send(JSON.stringify(t)),!0):!1}open(){if(this.isActive())return $n.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`),!1;{let t=[...JD,...this.consumer.subprotocols||[]];return $n.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${t}`),this.webSocket&&this.uninstallEventHandlers(),this.webSocket=new V2.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($n.log(`Reopening WebSocket, current state is ${this.getState()}`),this.isActive())try{return this.close()}catch(t){$n.log("Failed to reopen WebSocket",t)}finally{$n.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 CQ.call(bCe,this.getProtocol())>=0}isState(...t){return CQ.call(t,this.getState())>=0}getState(){if(this.webSocket){for(let t in V2.WebSocket)if(V2.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(){}}};X0.reopenDelay=500;X0.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 V0.welcome:return this.triedToReconnect()&&(this.reconnectAttempted=!0),this.monitor.recordConnect(),this.subscriptions.reload();case V0.disconnect:return $n.log(`Disconnecting. Reason: ${n}`),this.close({allowReconnect:o});case V0.ping:return null;case V0.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 V0.rejection:return this.subscriptions.reject(t);default:return this.subscriptions.notify(t,"received",r)}},open(){if($n.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`),this.disconnected=!1,!this.isProtocolSupported())return $n.log("Protocol is unsupported. Stopping monitor and disconnecting."),this.close({allowReconnect:!1})},close(e){if($n.log("WebSocket onclose event"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll("disconnected",{willAttemptReconnect:this.monitor.isRunning()})},error(){$n.log("WebSocket onerror event")}};var wCe=function(e,t){if(t!=null)for(let r in t){let n=t[r];e[r]=n}return e},QD=class{constructor(t,r={},n){this.consumer=t,this.identifier=JSON.stringify(r),wCe(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)}},RD=class{constructor(t){this.subscriptions=t,this.pendingSubscriptions=[]}guarantee(t){this.pendingSubscriptions.indexOf(t)==-1?($n.log(`SubscriptionGuarantor guaranteeing ${t.identifier}`),this.pendingSubscriptions.push(t)):$n.log(`SubscriptionGuarantor already guaranteeing ${t.identifier}`),this.startGuaranteeing()}forget(t){$n.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=>{$n.log(`SubscriptionGuarantor resubscribing ${t.identifier}`),this.subscriptions.subscribe(t)}))}),500)}},e3=class{constructor(t){this.consumer=t,this.guarantor=new RD(this),this.subscriptions=[]}create(t,r){let n=t,o=typeof n=="object"?n:{channel:n},a=new QD(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){$n.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})}},t3=class{constructor(t){this._url=t,this.subscriptions=new e3(this),this.connection=new X0(this),this.subprotocols=[]}get url(){return SCe(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 SCe(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 EQ(e=kCe("url")||AQ.default_mount_path){return new t3(e)}function kCe(e){let t=document.head.querySelector(`meta[name='action-cable-${e}']`);if(t)return t.getAttribute("content")}var G2=null;function _Ce(){if(G2===null)try{G2=EQ()}catch{G2=!1}return G2||null}function Th(e,t,r,n=!0){let o=(0,id.useRef)(null),a=(0,id.useRef)(r);return(0,id.useEffect)(()=>{a.current=r},[r]),(0,id.useEffect)(()=>{if(!n||!e)return;let s=_Ce();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,id.useCallback)((s,l)=>{o.current&&o.current.perform(s,l)},[])}}function Oh(e){return!e||typeof e!="object"||typeof e.type!="string"?null:{type:e.type,id:e.id??null,status:e.status??null}}var Y2=[{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"}],CCe={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"}]},NQ={max_runs:10,timeout_seconds:300,session_duration_minutes:15};function r3({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=>{!Oh(P)||!a?.session_id||D(a.session_id)},[D,a?.session_id]);Th("SandboxChannel",{session_id:a?.session_id},M,!!a?.session_id),(0,re.useEffect)(()=>{V(),q()},[n]);let q=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 ye=await ne.json();i(ye.sandbox);let at=ye.sandbox.runs||[];c(at);let it=new Set;if(at.slice(B).forEach(pe=>{pe.provider&&(O(ue=>({...ue,[pe.provider]:{...pe,provider:pe.provider}})),(pe.status==="completed"||pe.status==="failed")&&it.add(pe.provider))}),P.every(pe=>it.has(pe))){m(!1),T([]);return}setTimeout(se,1e3)}catch(ne){console.error("Comparison polling failed:",ne),m(!1),T([])}};setTimeout(se,1e3)},Me=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(ye=>({...ye,[ne.provider]:{...ne,provider:ne.provider}}))}),I.every(ne=>{let ye=N[ne];return ye?.status==="completed"||ye?.status==="failed"})&&(m(!1),T([]))}catch(P){console.error("Polling error:",P)}},he=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||[],ye=ne[ne.length-1];if(ye&&(p(ye),c(ne),ye.status==="completed"||ye.status==="failed")){m(!1);return}setTimeout(Y,1e3)}catch{m(!1)}};Y()},R=P=>{P.key==="Enter"&&(P.metaKey||P.ctrlKey)&&L()},te=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"}},ee=a?.status==="ready"&&a?.runs_count{C(!0);try{await _h({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(Jx,{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(On,{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"}`},te(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:!ee,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()||!ee,className:`flex items-center space-x-2 px-6 py-2 rounded-lg transition-colors ${s.trim()&&ee?"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=Y2.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 ${Y2.find(P=>P.id===d.provider)?.color||"bg-gray-400"}`}),re.default.createElement("span",{className:"text-sm text-gray-600"},Y2.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"},Y2.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:()=>he(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"},CCe[n]?.map((P,Y)=>re.default.createElement("button",{key:Y,onClick:()=>l(P.task),disabled:!ee,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||NQ.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"},NQ.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 gt=Z(J());var Oo=Z(J());var n3=["message","llm","tool","browser"];function X2(e){let t=Date.parse(e);return Number.isFinite(t)?t:null}function TQ(e={}){let t=[];return n3.forEach((r,n)=>{(e[r]||[]).forEach((o,a)=>{let i=X2(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 OQ(e=[]){return e.filter(t=>t?.rrweb?.event_count>0&&X2(t.rrweb.first_at)!==null).map(t=>{let r=X2(t.rrweb.first_at);return{...t,startMs:r,endMs:Math.max(r,X2(t.rrweb.last_at)??r)}}).sort((t,r)=>t.startMs-r.startMs)}function PQ(e=[],t=[]){return[...e.map(r=>[r.startMs,r.endMs]),...t.map(r=>[r.startMs,r.endMs])]}function MQ(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 IQ(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 DQ(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 o3(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 $Q(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 zQ(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 Ph(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 Z2(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 a3(e){let t=String(e??"").replace(/\s+/g," ").trim();return t.length>140?`${t.slice(0,139)}\u2026`:t}function ACe(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 BQ(e){switch(e?.lane){case"message":{let t=(e.tool_calls||[]).map(n=>n?.name||n?.function?.name).filter(Boolean),r=a3(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",ACe(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"}: ${a3(t.message??t.value)}`:e.kind==="marker"?`marker: ${a3(t.label??t.name??t.value)}`:t.tool_name||t.action_type||e.kind||"browser event"}default:return""}}function Mh(e){return e?e.error===!0?!0:["error","ERROR","failed"].includes(e.status):!1}function ECe(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 NCe(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 FQ(e,{fetchPage:t,onEvents:r,maxEvents:n=5e4,isCancelled:o=()=>!1}){let a=null,i=0;for(;;){let s=await t(NCe(e,a));if(o())return{count:i,truncated:!1};let l=ECe(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 Du=[{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)"}],Z0=18,TCe=76,mf=(e,t)=>e.totalMs?t/e.totalMs*100:0,OCe=(0,Oo.memo)(function({axis:t,entries:r,recordings:n}){let o=IQ(t);return Oo.default.createElement(Oo.default.Fragment,null,o.map(a=>Oo.default.createElement("div",{key:`gap-${a.axisStart}`,title:`${Z2(a.skippedMs)} idle, shortened`,style:{position:"absolute",top:0,bottom:0,left:`${mf(t,a.axisStart)}%`,width:`${mf(t,a.axisEnd-a.axisStart)}%`,background:"repeating-linear-gradient(135deg, var(--color-muted) 0 4px, transparent 4px 8px)"}})),Du.map((a,i)=>Oo.default.createElement(Oo.default.Fragment,{key:a.lane},a.lane==="browser"&&n.map(s=>{let l=sd(t,s.startMs);return Oo.default.createElement("div",{key:`recording-${s.id}`,title:`browser recording ${s.id}`,style:{position:"absolute",top:i*Z0+7,height:4,borderRadius:2,left:`${mf(t,l)}%`,width:`${Math.max(mf(t,sd(t,s.endMs)-l),.3)}%`,background:a.color,opacity:.35}})}),r.filter(s=>s.lane===a.lane).map(s=>{let l=sd(t,s.startMs);return Oo.default.createElement("div",{key:s.id,style:{position:"absolute",top:i*Z0+4,height:Z0-8,borderRadius:2,left:`${mf(t,l)}%`,width:`max(3px, ${mf(t,sd(t,s.endMs)-l)}%)`,background:Mh(s)?"var(--color-error)":a.color}})}))))});function i3({axis:e,entries:t,recordings:r,position:n,onSeek:o}){let a=(0,Oo.useRef)(null),i=Du.length*Z0,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:TCe,flexShrink:0}},Du.map(u=>Oo.default.createElement("div",{key:u.lane,style:{height:Z0,display:"flex",alignItems:"center",gap:6,fontFamily:K,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(OCe,{axis:e,entries:t,recordings:r}),Oo.default.createElement("div",{style:{position:"absolute",top:0,bottom:0,width:2,marginLeft:-1,pointerEvents:"none",left:`${mf(e,n)}%`,background:"var(--color-text-primary)"}})))}var ra=Z(J());var PCe=Object.fromEntries(Du.map(e=>[e.lane,e])),MCe=(0,ra.memo)(function({entry:t,startMs:r,current:n,selected:o,onChoose:a,rowRef:i}){let s=PCe[t.lane],l=Mh(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:K,fontSize:11,color:"var(--color-text-muted)",width:56,flexShrink:0}},Ph(t.startMs-r)),ra.default.createElement("span",{style:{fontFamily:K,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"}},BQ(t)),t.duration_ms>0&&ra.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,color:"var(--color-text-muted)",flexShrink:0}},Math.round(t.duration_ms),"ms"))}),UQ=(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(MCe,{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:K,fontSize:11,color:"var(--color-text-muted)"}},"no entries in the lanes shown")});var Ni=Z(J());var ICe=Object.fromEntries(Du.map(e=>[e.lane,e.label])),DCe={margin:0,padding:"8px 10px",borderRadius:8,background:"var(--color-background)",border:"1px solid var(--color-border-light)",fontFamily:K,fontSize:12,lineHeight:"18px",color:"var(--color-text-cell)",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflow:"auto"};function jCe(e){return e==null||e===""?null:typeof e=="string"?e:JSON.stringify(e,null,2)}function $Ce({label:e,value:t}){let r=jCe(t);return r==null?null:Ni.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:4}},Ni.default.createElement(We,{size:10},e),Ni.default.createElement("pre",{style:DCe},r))}function LCe(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?Ni.default.createElement("div",{"data-testid":"replay-entry-detail",style:{padding:14,display:"flex",flexDirection:"column",gap:10}},Ni.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ni.default.createElement(Ce,{tone:Mh(e)?"error":"muted"},ICe[e.lane]),e.role&&Ni.default.createElement(Ce,{tone:"info"},e.role),(e.name||e.tool_name)&&e.lane!=="llm"&&Ni.default.createElement("span",{style:{fontFamily:K,fontSize:12,fontWeight:600,color:"var(--color-text-primary)"}},e.name||e.tool_name),Ni.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,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&&Ni.default.createElement("div",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},"trace ",e.trace_id),LCe(e).map(([t,r])=>Ni.default.createElement($Ce,{key:t,label:t,value:r}))):Ni.default.createElement("div",{style:{padding:16,fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},"choose an entry to see it in full")}var to=Z(J());var WQ="action-agent-session-player",HQ="/session_player",qQ="allow-scripts allow-same-origin";function KQ(e,t={}){return{...t,channel:WQ,type:e}}function VQ(e,t,r){return!!e&&t!=null&&e.source===t&&e.origin===r&&e.data?.channel===WQ&&typeof e.data.type=="string"}async function BCe(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 FCe="the session player did not start",UCe={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 l3({recordings:e,time:t,sessionStartMs:r,playing:n,speed:o,seekVersion:a}){let i=(0,to.useRef)(null),s=(0,to.useRef)(null),[l,u]=(0,to.useState)(!1),[c,d]=(0,to.useState)(!1),[p,f]=(0,to.useState)(null),[m,y]=(0,to.useState)({state:"loading"}),x=LQ(e,t),h=x?.id,g=p!==null&&p===s.current,v=x?zQ(x,t):null,b=(_,k)=>{i.current?.contentWindow?.postMessage(KQ(_,k),window.location.origin)};(0,to.useEffect)(()=>{let _=k=>{if(!VQ(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,to.useEffect)(()=>{if(!l||c)return;let _=setTimeout(()=>y({state:"error",message:FCe}),5e3);return()=>clearTimeout(_)},[l,c]),(0,to.useEffect)(()=>{if(!c||h==null)return;let _=!1,k=[],A=`${h}:${Date.now()}`;return s.current=A,f(null),y({state:"loading"}),FQ(h,{fetchPage:BCe,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,to.useEffect)(()=>{!g||!v||b("seek",{offset:v.offsetMs,playing:n&&S==="during"})},[g,a,n,S]),(0,to.useEffect)(()=>{g&&b("speed",{speed:o})},[g,o]);let w=m.state==="error"?m.message:S==="before"?`the browser recording starts at ${Ph(x.startMs-r)}`:UCe[m.state];return to.default.createElement("div",{"data-testid":"replay-browser",style:{display:"flex",flexDirection:"column",gap:8}},to.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},to.default.createElement(We,null,"browser"),x&&to.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},x.name||`recording ${x.id}`,e.length>1?` \xB7 ${e.indexOf(x)+1} of ${e.length}`:""),w&&to.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,color:m.state==="error"?"var(--color-error-text)":"var(--color-text-muted)"}},w)),to.default.createElement("iframe",{ref:i,title:"Browser recording",src:et(HQ),sandbox:qQ,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 Na=Z(J());function u3(e){let[t,r]=(0,Na.useState)(0),[n,o]=(0,Na.useState)(!1),[a,i]=(0,Na.useState)(1),[s,l]=(0,Na.useState)(0),u=(0,Na.useRef)(0),c=(0,Na.useRef)(0),d=(0,Na.useCallback)((y,x)=>{let h=Math.min(Math.max(y,0),e.totalMs),g=jQ(e,h);return u.current=h,r(h),(x||g!==c.current)&&l(v=>v+1),c.current=g,h},[e]);(0,Na.useEffect)(()=>{if(!n)return;let y=null,x=performance.now(),h=g=>{let v=d(u.current+(g-x)*a,!1);if(x=g,v>=e.totalMs){o(!1);return}y=requestAnimationFrame(h)};return y=requestAnimationFrame(h),()=>cancelAnimationFrame(y)},[n,a,e,d]);let p=(0,Na.useCallback)(y=>d(y,!0),[d]),f=(0,Na.useCallback)(()=>{!n&&u.current>=e.totalMs&&d(0,!0),o(!n)},[n,e,d]),m=(0,Na.useCallback)(()=>o(!1),[]);return{position:t,playing:n,speed:a,seekVersion:s,seek:p,togglePlay:f,pause:m,setSpeed:i}}var WCe=[.5,1,2,4,8,16],HCe={context:"Conversation",run:"Run",scenario_result:"Evaluation replay",recording:"Recording"};function qCe(e,t){let r=encodeURIComponent(t);return e==="recording"?`/api/session_recordings/${r}/timeline`:`/api/sessions/${e}/${r}/timeline`}function KCe(e){return e.reduce((t,r)=>({...t,[r.lane]:(t[r.lane]||0)+1}),{})}function VCe({kind:e,id:t,timeline:r,onBack:n,handoff:o}){let a=(0,gt.useMemo)(()=>TQ(r.lanes),[r]),i=(0,gt.useMemo)(()=>OQ(r.recordings),[r]),s=(0,gt.useMemo)(()=>MQ(PQ(a,i)),[a,i]),l=u3(s),{seek:u,pause:c}=l,[d,p]=(0,gt.useState)(()=>new Set(n3)),[f,m]=(0,gt.useState)(null),y=DQ(s,l.position)??s.startMs,x=(0,gt.useMemo)(()=>a.filter(E=>d.has(E.lane)),[a,d]),h=a[o3(a,y)]||null,g=x[o3(x,y)]?.id??null,v=a.find(E=>E.id===f)||h,b=(0,gt.useMemo)(()=>KCe(a),[a]),S=(0,gt.useCallback)(E=>{c(),m(E.id),u(sd(s,E.startMs))},[s,c,u]),w=E=>{let I=$Q(x,y,E);I!==null&&(c(),m(null),u(sd(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 gt.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:16,maxWidth:1400}},gt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap"}},gt.default.createElement("div",{style:{minWidth:0}},gt.default.createElement(fe,{variant:"ghost",size:"sm",onClick:n,style:{padding:"2px 0",marginBottom:6}},"<- Sessions"),gt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},HCe[e]||"Session"," #",t),gt.default.createElement("div",{style:{marginTop:4,display:"flex",gap:12,flexWrap:"wrap",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},A.started_at&>.default.createElement("span",{title:A.started_at},"started ",new Date(A.started_at).toLocaleString()),s.startMs!==null&>.default.createElement("span",null,Z2(s.endMs-s.startMs)," long"),gt.default.createElement("span",null,b.message||0," messages \xB7 ",b.llm||0," model calls \xB7 ",b.tool||0," tool calls"),i.length>0&>.default.createElement("span",null,"browser recorded"))),gt.default.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},A.truncated&>.default.createElement(Ce,{tone:"warning",title:"Each lane holds its earliest 2,000 entries"},"truncated"),o)),C?gt.default.createElement(Be,{testId:"replay-empty"},gt.default.createElement("div",{style:{fontSize:14,color:"var(--color-text-primary)"}},"Nothing to replay yet."),gt.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.")):gt.default.createElement(gt.default.Fragment,null,gt.default.createElement(Be,{padding:14,style:{display:"flex",flexDirection:"column",gap:12}},gt.default.createElement("div",{"data-testid":"replay-controls",style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},gt.default.createElement(fe,{size:"sm",testId:"replay-step-back",title:"Previous entry",onClick:()=>w(-1)},"|<"),gt.default.createElement(fe,{size:"sm",variant:"primary",testId:"replay-play",onClick:_,style:{minWidth:72}},l.playing?"Pause":"Play"),gt.default.createElement(fe,{size:"sm",testId:"replay-step-forward",title:"Next entry",onClick:()=>w(1)},">|"),gt.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:K,fontSize:12,background:"var(--color-card)",border:"1px solid var(--color-border-strong)",color:"var(--color-text-primary)"}},WCe.map(E=>gt.default.createElement("option",{key:E,value:E},E,"x"))),gt.default.createElement("span",{"data-testid":"replay-clock",style:{marginLeft:8,fontFamily:K,fontSize:12,color:"var(--color-text-primary)"}},Ph(y-s.startMs)),gt.default.createElement("span",{style:{fontFamily:K,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():"")),gt.default.createElement(i3,{axis:s,entries:a,recordings:i,position:l.position,onSeek:u})),gt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 3fr) minmax(0, 2fr)",gap:16,alignItems:"start"}},gt.default.createElement(Be,{padding:0,style:{overflow:"hidden"}},gt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"10px 12px",borderBottom:"1px solid var(--color-border-light)",flexWrap:"wrap"}},gt.default.createElement(We,{style:{marginRight:6}},"timeline"),Du.map(E=>gt.default.createElement(Dn,{key:E.lane,mono:!0,selected:d.has(E.lane),onClick:()=>k(E.lane)},E.label," ",b[E.lane]||0))),gt.default.createElement(UQ,{entries:x,startMs:s.startMs,currentId:g,selectedId:f,playing:l.playing,onChoose:S})),gt.default.createElement(Be,{padding:0},gt.default.createElement(s3,{entry:v}))),i.length>0&>.default.createElement(Be,{padding:14},gt.default.createElement(l3,{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,gt.useState)({status:"loading"}),[i,s]=(0,gt.useState)(!1);(0,gt.useEffect)(()=>{let c=!1;return a({status:"loading"}),fetch(qCe(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 gt.default.createElement(VCe,{kind:e,id:t,timeline:o.timeline,onBack:r,handoff:i&>.default.createElement(fe,{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 gt.default.createElement("div",{"data-testid":"session-replay",style:{display:"flex",flexDirection:"column",gap:12,maxWidth:1400}},gt.default.createElement(fe,{variant:"ghost",size:"sm",onClick:r,style:{padding:"2px 0",alignSelf:"flex-start"}},"<- Sessions"),gt.default.createElement(Be,{testId:`replay-${o.status}`},gt.default.createElement("div",{style:{fontSize:13,color:o.status==="loading"?"var(--color-text-muted)":"var(--color-text-primary)"}},u)))}var dt=Z(J());function GQ(){let e=0,t=r=>()=>r===e;return{next:()=>t(++e),latest:()=>t(e)}}var p3=[{value:"",label:"Every source"},{value:"dashboard",label:"Dashboard conversations"},{value:"evaluation",label:"Evaluation replays"},{value:"agent",label:"Agent browsers"}],f3=[{value:"",label:"Any outcome"},{value:"failed",label:"Failed or errored"},{value:"passed",label:"Passed"}],J0=Object.freeze({agentId:"",user:"",source:"",outcome:"",from:"",to:""}),XQ={agentId:"agent_id",user:"user",source:"source",outcome:"outcome",from:"from",to:"to"},d3=/^(\d{4})-(\d{2})-(\d{2})$/,GCe={agentId:e=>/^\d+$/.test(e),user:e=>e==="me",source:e=>p3.some(t=>t.value&&t.value===e),outcome:e=>f3.some(t=>t.value&&t.value===e),from:e=>d3.test(e),to:e=>d3.test(e)};function J2(e={}){let t={...J0};for(let r of Object.keys(J0)){let n=String(e[r]??"");n&&GCe[r](n)&&(t[r]=n)}return t}function m3(e={}){return Object.values(J2(e)).some(Boolean)}function ZQ(e=""){let t=new URLSearchParams(e),r={};for(let[n,o]of Object.entries(XQ))r[n]=t.get(o)||"";return J2(r)}function JQ(e={}){let t=new URLSearchParams,r=J2(e);for(let[o,a]of Object.entries(XQ))r[o]&&t.set(a,r[o]);let n=t.toString();return n?`?${n}`:""}function YQ(e,t=0){let[,r,n,o]=e.match(d3);return new Date(Number(r),Number(n)-1,Number(o)+t).toISOString()}var QQ=Object.freeze({openedFromSessions:!0});function RQ(e){return e?.openedFromSessions===!0}function eR(e={},{before:t=null,perPage:r=25}={}){let n=J2(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",YQ(n.from)),n.to&&o.set("to",YQ(n.to,1)),o.set("per_page",String(r)),t&&o.set("before",t),`/api/sessions?${o}`}var tR={dashboard:{tone:"info",label:"conversation"},evaluation:{tone:"muted",label:"evaluation"},agent:{tone:"muted",label:"browser"}},YCe={failed:"error",passed:"success"},Ih={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 rR(e,t){let r=await fetch(eR(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 XCe(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 ZCe({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:Ih},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:Ih},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:Ih},p3.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:Ih},f3.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:Ih})),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:Ih})),m3(e)&&dt.default.createElement(fe,{variant:"ghost",size:"sm",testId:"sessions-clear-filters",onClick:()=>t(J0)},"Clear filters"))}function JCe({session:e}){let t=ah(e.kind,e.id),r=tR[e.source]||tR.agent,n=XCe(e);return dt.default.createElement("a",{href:et(t),"data-testid":"session-row",onClick:o=>{o.metaKey||o.ctrlKey||o.shiftKey||o.button!==0||(o.preventDefault(),lt(t,QQ))},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:K,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:K,fontSize:11,color:"var(--color-text-muted)",marginTop:2}},n)),e.outcome&&dt.default.createElement(Ce,{tone:YCe[e.outcome]||"muted"},e.outcome),dt.default.createElement("span",{title:e.last_activity_at,style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)",width:96,textAlign:"right",flexShrink:0}},vo(e.last_activity_at)),dt.default.createElement("span",{style:{fontFamily:K,fontSize:12,color:"var(--color-info)",flexShrink:0}},"replay ->"))}function g3({agents:e=[],user:t=null}){let[r,n]=(0,dt.useState)(()=>ZQ(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)(GQ);(0,dt.useEffect)(()=>{window.history.replaceState(window.history.state,"",`${window.location.pathname}${JQ(r)}`);let v=x.next();return s("loading"),d(!1),f(null),rR(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 rR(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=m3(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(ZCe,{filters:r,onChange:n,agents:e,user:t}),dt.default.createElement(Be,{padding:0,testId:"sessions-list",style:{overflow:"hidden"}},i==="loading"&&dt.default.createElement(Rr,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(fe,{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(fe,{variant:"secondary",size:"sm",style:{marginTop:12},onClick:()=>n(J0)},"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(JCe,{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(fe,{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 QCe={personal:"Your key",host_resolver:"Organization key",organization:"Organization key",config:"Platform default",none:"Not configured"};function nR(e){return QCe[e]||null}function Q2(e,t){return t?`${e}?scope=${encodeURIComponent(t)}`:e}function oR({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 RCe="Setting your own host needs permission to manage the organization's keys.";function aR({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?RCe:null}}var sR={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 R2({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})),iT(),await e()}catch(S){t(`Could not save the ${sR[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(Q2(`/api/provider_keys/${g}`,r),{method:"DELETE"})).ok)throw new Error("delete failed");p(S=>({...S,[g]:null})),iT(),await e()}catch{t("Could not remove the provider credential.")}}}}var iR={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 Q0({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=iR[r]||iR.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=sR[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"?nR(v.effective_source):null,{canChange:j,canRemove:T,note:D}=aR({editable:n,scope:r,row:v}),M=r==="organization"&&w?oR(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:q=>l(q.target.value),onKeyDown:q=>q.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:q=>c(q.target.value),onKeyDown:q=>q.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 lR(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 eA=e=>e==null?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString();function h3({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 q=await M.json();b(q.provider_keys||[]),w(!!q.can_manage_organization_keys),k(null)}catch{k("Could not load the organization's provider keys.")}},[]);(0,Te.useEffect)(()=>{C()},[C]);let E=R2({onKeysChanged:C,onError:k,scope:"organization"}),I=async()=>{m(!0),x(null);try{await _h({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 lR();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(Q0,{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"}`},eA(a?.traces_used),a?.traces_limit>0&&Te.default.createElement("span",{className:`text-sm font-normal ${o?"text-gray-500":"text-gray-400"}`}," / ",eA(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"}`},eA(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"}`},eA(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: 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:z,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: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&&Te.default.createElement("p",{role:"alert",className:"mt-2 text-sm text-red-500"},d.error)))}var Oe=Z(J());var He=Z(J());var MCe=/^[A-Za-z_][A-Za-z0-9_]*$/,ICe=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,DCe={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},jCe=["sk_live_","rk_live_"],WQ=8,HQ=2e3;function B2(e){return e?MCe.test(e)?ICe.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 F2(e,t){let r=[],n=typeof t=="string"?t:"";return jCe.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||DCe[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function qQ(e,t){return[...e,...Fx([{name:t}])]}function KQ({name:e,edited:t,fullName:r}){return t?e:r}function Ux(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 Ah(e){for(let t of e){let r=B2(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 VQ({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 e3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function $Ce(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function GQ({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=$Ce(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 U2={supported:"success",bootstrap:"info",unsupported:"error"};function YQ(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 XQ(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 ZQ={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function JQ(e){return e?.sandbox_state==="booting"}function uf(e){return e==null?"/projects/new":`/projects/${e}`}function Wx(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var QQ=["overview","explorations","environment","browser","sessions"];function RQ(e=""){let t=new URLSearchParams(e).get("tab");return QQ.includes(t)?t:"overview"}function eR(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!QQ.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function W2(e){if(!e?.project?.id)return null;let t=uf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function tR(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 En=Z(J());function cf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,En.useState)(e.browser||null),[s,l]=(0,En.useState)(!1),[u,c]=(0,En.useState)(null),[d,p]=(0,En.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,En.useEffect)(()=>{i(e.browser||null)},[e.browser?.status,e.browser?.started_at,e.browser?.live_url]);let m=async(k,_,C)=>{c(k),p(null);try{let E=await fetch(f,_),j=await E.json().catch(()=>({}));if(j.browser&&(i(j.browser),n?.(j.browser)),!E.ok)throw new Error(j.message||ot(j,`${C} (HTTP ${E.status}).`))}catch(E){p(E.message)}finally{c(null)}},y=()=>m("start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(lX({inWindow:s,modes:t}))},"Could not start the browser"),b=()=>m("stop",{method:"DELETE"},"Could not stop the browser"),h=o?"text-gray-400":"text-gray-500",g=o?"text-white":"text-gray-900",v=o?"border-gray-700":"border-gray-200",x=`px-3 py-1 text-sm rounded disabled:opacity-50 ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,S=iX(a),w=sX(a),A=a?.status==="running";return En.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},En.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},En.default.createElement("div",{className:"flex items-center gap-2"},En.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),S&&En.default.createElement(zs,{tone:S.tone},S.label)),w?En.default.createElement("button",{type:"button",onClick:b,disabled:u!==null,className:x},u==="stop"?"Stopping\u2026":"Stop browser"):En.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&En.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},En.default.createElement("input",{type:"checkbox",checked:s,onChange:k=>l(k.target.checked),disabled:u!==null}),"Open a window on this machine"),En.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:x},u==="start"?"Starting\u2026":"Start browser"))),d&&En.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&En.default.createElement("p",{className:`text-xs ${h}`},"A browser of this sandbox's own, opened on its app and recorded. Agent runs against the sandbox can drive it."),A&&a.server_key&&En.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",En.default.createElement("code",{className:"font-mono"},a.server_key),"."),A&&a.live_url&&En.default.createElement(nx,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),A&&!a.live_url&&En.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var er=Z(J());var nn=Z(J());function rR(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function H2(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var nR={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 df({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,b]=(0,nn.useState)(""),[h,g]=(0,nn.useState)(!1),v=m?"text-gray-400":"text-gray-500",x=m?"text-white":"text-gray-900",S={backgroundColor:m?"#252525":"#f9fafb"},w=`w-full px-3 py-2 border rounded-lg text-sm ${m?"bg-gray-800 border-gray-700 text-white placeholder-gray-500":"bg-white border-gray-300 text-gray-900"}`,A=rR(e,n);(0,nn.useEffect)(()=>{if(!h||!d)return;let C=()=>{g(!1),d()};return window.addEventListener("focus",C),()=>window.removeEventListener("focus",C)},[h,d]);let k=c?nn.default.createElement("a",{href:c,target:"_blank",rel:"noreferrer",onClick:()=>g(!0),className:"text-sm underline","data-testid":"repo-picker-missing"},"Repository not listed?"):null,_=p?nn.default.createElement("form",{className:"flex items-center gap-2",onSubmit:C=>{C.preventDefault(),e3(y)&&p(y)}},nn.default.createElement("input",{type:"text",value:y,onChange:C=>b(C.target.value.trim()),placeholder:"Type owner/name","aria-label":"Repository owner/name",className:w,"data-testid":"repo-picker-typed-name"}),nn.default.createElement("button",{type:"submit",disabled:!e3(y),className:`px-3 py-2 border rounded-lg text-sm ${x}`},"Look up")):null;if(l!=="ready"){let C=["not_connected","reconnect_required"].includes(l)&&u;return nn.default.createElement("div",{className:"space-y-2","data-testid":`repo-picker-${l}`},nn.default.createElement("p",{className:`text-sm ${v}`},nR[l]||nR.loading),C&&nn.default.createElement("a",{href:u,className:"text-sm underline"},l==="reconnect_required"?"Reconnect GitHub":"Connect GitHub"," in Settings \u2192 Integrations"),l==="pending_approval"&&d&&nn.default.createElement("button",{type:"button",onClick:d,className:`px-3 py-2 border rounded-lg text-sm ${x}`},"Check again"),l==="empty"&&k,l==="empty"&&_,f&&nn.default.createElement("p",{className:"text-sm text-red-500"},f))}return nn.default.createElement("div",{className:"space-y-2"},nn.default.createElement("input",{type:"text",value:n,onChange:C=>o(C.target.value),placeholder:"Filter repositories",className:w}),nn.default.createElement("div",{className:"max-h-80 overflow-y-auto space-y-1"},A.map(C=>nn.default.createElement("label",{key:C.id,className:"flex items-center space-x-3 p-2 rounded cursor-pointer",style:S},a==="single"?nn.default.createElement("input",{type:"radio",name:"repository",checked:i===C.full_name,onChange:()=>s(C.full_name)}):nn.default.createElement("input",{type:"checkbox",checked:t.has(C.full_name),onChange:()=>r(C.full_name)}),nn.default.createElement("span",{className:`text-sm font-mono ${x}`},C.full_name),C.private&&nn.default.createElement("span",{className:`text-xs ${v}`},"private"))),A.length===0&&nn.default.createElement("p",{className:`text-sm ${v}`},"No repositories match.")),(k||_)&&nn.default.createElement("div",{className:"space-y-2"},k,_,f&&nn.default.createElement("p",{className:"text-sm text-red-500"},f)))}var oR={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 aR(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function q2(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 iR(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>q2(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 sR(e,t){let r=new Map;return(t||[]).forEach(n=>{q2(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 lR(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function uR(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function cR(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 t3({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,b]=(0,er.useState)(null),[h,g]=(0,er.useState)(""),[v,x]=(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",A={backgroundColor:o?"#252525":"#f9fafb"},k=`px-3 py-1 text-sm rounded ${o?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,_=`px-3 py-1 text-sm rounded ${o?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`,C={error:o?"text-red-400":"text-red-600",warning:o?"text-amber-300":"text-amber-700"},E=async D=>{r(null);try{let T=await fetch(`/api/github_installations/${D.id}/repositories`),I=await T.json().catch(()=>({}));if(!T.ok)throw I.reinstall_required&&t(),new Error(I.error||"Could not list the installation's repositories.");l(I.repositories||[]),c(new Set((D.repositories||[]).map(P=>P.full_name))),p(""),i(D.id)}catch(T){r(T.message)}},j=async D=>{b(D.id),r(null);try{let T=await fetch(`/api/github_installations/${D.id}/repositories`),I=await T.json().catch(()=>({}));if(!T.ok)throw new Error(I.error||"Could not check the installation on GitHub.");n({tone:"success",text:`The installation on @${D.account_login} is active again.`})}catch(T){r(T.message)}finally{b(null),t()}},X=()=>{i(null),l(null)},z=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]})}),T=await D.json().catch(()=>({}));if(!D.ok)throw new Error(T.error||"Could not save the selection.");X(),n({tone:"success",text:"Repository selection saved."}),t()}catch(D){r(D.message)}finally{m(!1)}},U=async D=>{if(await Jr({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 T=await fetch(`/api/github_installations/${D.id}`,{method:"DELETE"});if(!T.ok&&T.status!==404)throw new Error("Could not unlink the installation.");a===D.id&&X(),t()}catch(T){r(T.message)}}},N=async()=>{let D=h.trim();if(D&&!uR(D)){r("Enter the organization's GitHub login, or leave it empty to create the App under your account.");return}x(!0),r(null);try{let T=await fetch("/api/github_app_manifest",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D?{organization:D}:{})}),I=await T.json().catch(()=>({}));if(!T.ok)throw new Error(I.error||"Could not start creating the GitHub App.");cR(document,I.url,I.manifest)}catch(T){r(T.message),x(!1)}};if(!e.configured)return er.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:A},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: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"}`}),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:nt("/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(D=>{let T=q2(D),I=D.repositories||[];return er.default.createElement("div",{key:D.id,className:"p-3 rounded-lg space-y-2",style:A},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}`},aR(D)),er.default.createElement("p",{className:`text-xs ${T?C[T.tone]:S}`},T?T.label:`${I.length} selected for sandboxes`)),er.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===D.id?er.default.createElement(er.default.Fragment,null,er.default.createElement("button",{type:"button",onClick:X,className:k},"Cancel"),er.default.createElement("button",{type:"button",onClick:z,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:()=>j(D),disabled:y===D.id,className:`${k} disabled:opacity-50`},y===D.id?"Checking\u2026":"Check again"):er.default.createElement("button",{type:"button",onClick:()=>E(D),className:k},"Choose repositories"),D.settings_url&&er.default.createElement("a",{href:D.settings_url,target:"_blank",rel:"noreferrer",className:k},"Access on GitHub"),er.default.createElement("button",{type:"button",onClick:()=>U(D),className:_},"Unlink")))),a===D.id&&s&&er.default.createElement(df,{repositories:s,selection:u,onToggle:P=>c(H=>H2(H,P)),filter:d,onFilterChange:p}))}))}var zCe={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 r3({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,He.useState)(null),[i,s]=(0,He.useState)(null),[l,u]=(0,He.useState)(new Set),[c,d]=(0,He.useState)(""),[p,f]=(0,He.useState)(!1),[m,y]=(0,He.useState)(null),[b,h]=(0,He.useState)(zCe[e]||oR[t]||null),[g,v]=(0,He.useState)([]),[x,S]=(0,He.useState)(null),[w,A]=(0,He.useState)({}),[k,_]=(0,He.useState)(null),[C,E]=(0,He.useState)(null),[j,X]=(0,He.useState)(0),[z,U]=(0,He.useState)({}),N=(0,He.useRef)({}),O=(0,He.useCallback)(async()=>{try{let he=await fetch("/api/github_connection");if(!he.ok)throw new Error("status failed");let le=await he.json();a(le),u(new Set((le.connection?.repositories||[]).map(Ze=>Ze.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,He.useEffect)(()=>{O()},[O]);let D=(0,He.useCallback)(async()=>{try{let he=await fetch("/api/sandboxes?sandbox_type=app_runtime"),le=await he.json().catch(()=>({}));if(!he.ok)throw new Error(ot(le,`Could not list your sandboxes (HTTP ${he.status}).`));v(le.sandboxes||[]),S({codeSessions:!!le.code_sessions_supported,claudeCode:{...LC(le),sandboxes:le.claude_code_sandboxes||[]},codex:zC(le),pullRequests:le.pull_requests_supported===!0,browserModes:Array.isArray(le.browser_modes)?le.browser_modes:[]})}catch(he){y(he.message)}},[]),T=o!==null,I=!!o?.connected;(0,He.useEffect)(()=>{T&&D()},[T,I,D,r]);let P=g.filter(he=>DC(he)&&!z[he.session_id]?.stopped).map(he=>he.session_id).join(" ");(0,He.useEffect)(()=>{if(!P)return;let he=!1,le=setTimeout(async()=>{let Ze=await Promise.all(P.split(" ").map(async it=>{try{let wt=await fetch(`/api/sandboxes/${encodeURIComponent(it)}`);if(wt.status===404)return{id:it,gone:!0};let fr=await wt.json().catch(()=>({}));return wt.ok?{id:it,sandbox:fr.sandbox||null}:{id:it,status:wt.status,error:ot(fr,`Could not check on this sandbox (HTTP ${wt.status}).`)}}catch{return{id:it,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(he)return;let Je={};Ze.forEach(({id:it,status:wt,error:fr})=>{if(!fr){delete N.current[it],Je[it]=null;return}let vn=(N.current[it]||0)+1;N.current[it]=vn,Je[it]={message:fr,stopped:PC(wt,vn)}}),U(it=>Object.entries(Je).reduce((wt,[fr,vn])=>{if(vn)return{...wt,[fr]:vn};if(!(fr in wt))return wt;let{[fr]:Ca,...hs}=wt;return hs},it)),v(it=>Ze.reduce((wt,fr)=>fr.gone?wt.filter(vn=>vn.session_id!==fr.id):fr.sandbox?nY(wt,fr.sandbox,"session_id"):wt,it)),X(it=>it+1)},2e3);return()=>{he=!0,clearTimeout(le)}},[P,j]);let H=he=>{delete N.current[he],U(le=>{let{[he]:Ze,...Je}=le;return Je})},G=(he,le)=>{A(Ze=>({...Ze,[he]:le}))},L=async()=>{y(null);try{let he=await fetch("/api/github_connection/repositories"),le=await he.json().catch(()=>({}));if(!he.ok)throw new Error(le.error||"Could not list repositories.");s(le.repositories||[])}catch(he){y(he.message)}},Y=he=>{u(le=>H2(le,he))},W=async()=>{f(!0),y(null);try{let he=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),le=await he.json().catch(()=>({}));if(!he.ok)throw new Error(le.error||"Could not save the selection.");a(Ze=>({...Ze,connection:le.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(he){y(he.message)}finally{f(!1)}},ie=async()=>{if(await Jr({title:"Disconnect GitHub?",message:"New checkout sandboxes can no longer clone its repositories. Sandboxes already running keep running until you stop them or they expire.",confirmLabel:"Disconnect",danger:!0}))try{if(!(await fetch("/api/github_connection",{method:"DELETE"})).ok)throw new Error("disconnect failed");s(null),h(null),await O()}catch{y("Could not disconnect GitHub.")}},Me=async he=>{_(he),G(he,null);try{let le=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:he})}),Ze=await le.json().catch(()=>({}));if(!le.ok)throw new Error(ot(Ze,`Could not start the sandbox (HTTP ${le.status}).`));v(Je=>Rc(Je,Ze.sandbox,"session_id"))}catch(le){G(he,le.message)}finally{_(null)}},pe=async he=>{if(!(he.status!=="failed"&&!await Jr({title:"Stop this sandbox?",message:"Its app stops and its checkout is deleted, including any changes Claude Code made there.",confirmLabel:"Stop sandbox",danger:!0}))){E(he.session_id),G(he.repository,null);try{let le=await fetch(`/api/sandboxes/${encodeURIComponent(he.session_id)}`,{method:"DELETE"}),Ze=await le.json().catch(()=>({}));if(!le.ok&&le.status!==404)throw new Error(ot(Ze,`Could not stop the sandbox (HTTP ${le.status}).`));v(Je=>Je.filter(it=>it.session_id!==he.session_id)),H(he.session_id)}catch(le){G(he.repository,le.message)}finally{E(null)}}},ce=n?"text-gray-400":"text-gray-500",Q=n?"text-white":"text-gray-900",ee={backgroundColor:n?"#252525":"#f9fafb"},$=`px-3 py-1 text-sm rounded ${n?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`,B=o?.connection,K=B?.repositories||[],M=o?.app?.configured?o.app.installations||[]:[],ae=sR(B,M),{byRepository:F,others:se}=aY(g,ae.map(he=>he.full_name)),oe=M.length>0,ve=iR(M),Re=n?"text-red-400":"text-red-600",tt=(he,{standalone:le=!1}={})=>{let{label:Ze,tone:Je}=QG(he.status),it=DC(he),wt=RG(he),fr=wt?JG(he.expires_at):null,vn=it?z[he.session_id]:null;return He.default.createElement("div",{key:he.session_id,className:le?"p-3 rounded-lg space-y-2":`mt-3 pt-3 border-t space-y-2 ${n?"border-gray-700":"border-gray-200"}`,style:le?ee:void 0},He.default.createElement("div",{className:"flex items-center justify-between gap-3"},He.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},He.default.createElement(zs,{tone:Je},Ze),He.default.createElement("span",{className:`font-mono truncate ${ce}`},le?he.repository:"","@",he.repository_ref),fr&&He.default.createElement("span",{className:`shrink-0 ${ce}`},"\xB7 ",fr),W2(he)&&He.default.createElement("a",{href:nt(W2(he)),onClick:Ca=>{Ca.preventDefault(),dt(W2(he))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:he.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",he.project.name," \u2192")),He.default.createElement("button",{onClick:()=>pe(he),disabled:C===he.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===he.session_id?"Stopping\u2026":he.status==="failed"?"Dismiss":"Stop")),it&&!vn?.stopped&&He.default.createElement("p",{className:`text-xs ${ce}`},"Checking out the repository and booting its app; this can take a few minutes."),vn&&He.default.createElement("p",{className:`text-xs ${Re}`},vn.message," ",vn.stopped?He.default.createElement(He.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",He.default.createElement("button",{type:"button",onClick:()=>H(he.session_id),className:"underline"},"Retry")):"Trying again\u2026"),he.error_message&&He.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"}`},he.error_message),he.runtime_server_key&&He.default.createElement("p",{className:`text-xs ${ce}`},"Enable ",He.default.createElement("code",{className:"font-mono"},he.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),wt&&x?.codeSessions&&He.default.createElement(tx,{sandbox:he,claudeCode:x.claudeCode?.mode==="sandbox_login"?{...x.claudeCode,connected:!!x.claudeCode.sandboxes.find(Ca=>Ca.session_id===he.session_id)?.credential_mode}:x.claudeCode,codex:x.codex,onRecheckConnection:D}),wt&&x&&!x.codeSessions&&He.default.createElement("p",{className:`text-xs ${ce}`},"The configured sandbox backend cannot run Claude Code sessions."),wt&&x?.pullRequests&&He.default.createElement(Sx,{sandbox:he}),wt&&x?.browserModes.length>0&&He.default.createElement(cf,{sandbox:he,modes:x.browserModes}))};return He.default.createElement("div",{className:"space-y-4"},He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",{className:"flex items-center space-x-3"},He.default.createElement("span",{className:"text-xl"},"\u{1F419}"),He.default.createElement("div",null,He.default.createElement("p",{className:`font-medium ${Q}`},"GitHub"),He.default.createElement("p",{className:`text-sm ${o?.connected||ve.active>0?n?"text-green-400":"text-green-600":ce}`},o?[o.connected?`Connected as @${B.login}`:null,ve.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?He.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?He.default.createElement("a",{href:nt("/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&&He.default.createElement("p",{className:`text-sm ${ce}`},"The operator has not configured a GitHub OAuth app. Set ",He.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",He.default.createElement("code",null,"github_client_secret")," (or ",He.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",He.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",He.default.createElement("code",null,nt("/api/github_connection/callback"))," as its callback URL."),b&&He.default.createElement("div",{className:`p-3 rounded-lg text-sm border ${b.tone==="success"?n?"bg-green-900/20 border-green-800 text-green-300":"bg-green-50 border-green-200 text-green-800":n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},b.text),m&&He.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),He.default.createElement(t3,{app:o?.app,onChanged:O,onError:y,onNotice:h}),o?.connected&&He.default.createElement("div",{className:"space-y-3"},He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",null,He.default.createElement("p",{className:`text-sm font-medium ${Q}`},"OAuth connection"),He.default.createElement("p",{className:`text-xs ${ce}`},K.length," selected for sandboxes, cloned with @",B.login,"'s token.")),i?He.default.createElement("div",{className:"flex items-center space-x-2"},He.default.createElement("button",{onClick:()=>{s(null),u(new Set(K.map(he=>he.full_name)))},className:$},"Cancel"),He.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})`)):He.default.createElement("button",{onClick:L,className:$},"Choose repositories")),i&&He.default.createElement(df,{repositories:i,selection:l,onToggle:Y,filter:c,onFilterChange:d})),(o?.connected||oe)&&!i&&He.default.createElement("div",{className:"space-y-3"},He.default.createElement("p",{className:`text-sm font-medium ${Q}`},"Available repositories"),ae.length===0?He.default.createElement("p",{className:`text-sm ${ce}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):He.default.createElement("div",{className:"space-y-2"},ae.map(he=>{let le=F[he.full_name]||[],Ze=le.some(DC),Je=o.app?.configured?` \xB7 via ${lR(he)}`:"";return He.default.createElement("div",{key:he.full_name,className:"p-3 rounded-lg",style:ee},He.default.createElement("div",{className:"flex items-center justify-between"},He.default.createElement("div",null,He.default.createElement("p",{className:`text-sm font-mono ${Q}`},he.full_name),He.default.createElement("p",{className:`text-xs ${ce}`},he.private?"private":"public"," \xB7 ",he.default_branch,Je)),He.default.createElement("button",{onClick:()=>Me(he.full_name),disabled:k===he.full_name||Ze,className:`${$} disabled:opacity-50`},k===he.full_name?"Starting\u2026":Ze?"Booting\u2026":"Start sandbox")),w[he.full_name]&&He.default.createElement("p",{className:`mt-2 text-xs ${Re}`},w[he.full_name]),le.map(it=>tt(it)))}))),!i&&se.length>0&&He.default.createElement("div",{className:"space-y-2"},He.default.createElement("p",{className:`text-sm font-medium ${Q}`},I||oe?"Other sandboxes":"Checkout sandboxes"),He.default.createElement("p",{className:`text-xs ${ce}`},I||oe?"From repositories no longer selected.":"Checked out while GitHub was connected."," ","They keep running until stopped or they expire."),se.map(he=>He.default.createElement(He.default.Fragment,{key:he.session_id},w[he.repository]&&He.default.createElement("p",{className:`text-xs ${Re}`},w[he.repository]),tt(he,{standalone:!0})))))}var Pt=Z(J());var n3="claude_code";function o3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Pt.useState)(null),[o,a]=(0,Pt.useState)(null),[i,s]=(0,Pt.useState)(!1),[l,u]=(0,Pt.useState)(""),[c,d]=(0,Pt.useState)(!1),[p,f]=(0,Pt.useState)(null),[m,y]=(0,Pt.useState)([]),[b,h]=(0,Pt.useState)(""),g=(0,Pt.useCallback)(async()=>{try{let[C,E]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!C.ok||!E.ok)throw new Error("load failed");let[j,X]=await Promise.all([C.json(),E.json()]);n((j.provider_keys||[]).find(U=>U.provider===n3)||{configured:!1}),a(LC(X));let z=(X.sandboxes||[]).filter(U=>U.status==="ready");y(z),h(U=>z.some(N=>N.session_id===U)?U:z[0]?.session_id||"")}catch{f("Could not load the Claude Code connection. Are you signed in?")}},[]);(0,Pt.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)}}},x=async()=>{if(await Jr({title:"Remove the Claude Code API key?",message:"Sessions using a sandbox subscription keep their login.",confirmLabel:"Remove key",danger:!0}))try{if(!(await fetch(`/api/provider_keys/${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=vY(o,r),A=w.keyForm&&r?.configured,k={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:S}[w.tone],_=`underline ${t?"text-gray-300":"text-gray-700"}`;return Pt.default.createElement("div",{className:"space-y-3"},Pt.default.createElement("div",{className:"flex items-center justify-between"},Pt.default.createElement("div",{className:"flex items-center space-x-3"},Pt.default.createElement("span",{className:"font-mono text-sm","aria-hidden":"true"},">_"),Pt.default.createElement("div",null,Pt.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Claude Code"),Pt.default.createElement("p",{className:`text-sm ${k}`},w.status))),w.keyForm&&Pt.default.createElement("div",{className:"flex items-center space-x-2"},A&&!i&&Pt.default.createElement("button",{onClick:x,className:`px-3 py-1 text-sm rounded ${t?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},w.view==="sandbox_login"?"Remove API key":"Disconnect"),Pt.default.createElement("button",{onClick:()=>{s(!i),u(""),f(null)},className:`px-3 py-1 text-sm rounded ${t?"bg-gray-700 text-gray-300 hover:bg-gray-600":"bg-gray-200 text-gray-700 hover:bg-gray-300"}`},i?"Cancel":w.view==="sandbox_login"?A?"Update API key":"Add API key":w.needsReplacing?"Replace":A?"Update":"Connect")),w.view==="local_login"&&Pt.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"&&Pt.default.createElement("p",{className:`text-xs ${S}`},"Sessions run ",Pt.default.createElement("code",{className:"font-mono"},"claude")," on this machine with its own login, which the dashboard never reads or stores."," ",w.loginHint&&Pt.default.createElement(Pt.default.Fragment,null,"Run ",Pt.default.createElement("code",{className:"font-mono"},w.loginHint)," on this machine, as the user the dashboard runs as, then check again.")),w.needsReplacing&&!i&&Pt.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&&Pt.default.createElement(Pt.default.Fragment,null,Pt.default.createElement("div",{className:"flex items-center space-x-2"},Pt.default.createElement("input",{type:"password","data-aa-secret":"",value:l,onChange:C=>u(C.target.value),onKeyDown:C=>C.key==="Enter"&&v(),placeholder:gY,"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"}`}),Pt.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")),Pt.default.createElement("p",{className:`text-xs ${S}`},"Paste an Anthropic API key from the"," ",Pt.default.createElement("a",{href:hY,target:"_blank",rel:"noreferrer",className:_},"Claude Console"),". It is encrypted at rest and passed to checkout sandboxes so they can run Claude Code sessions against the repository. Claude subscription logins cannot be stored here (",Pt.default.createElement("a",{href:yY,target:"_blank",rel:"noreferrer",className:_},"why"),"); to use your own subscription, use the sandbox sign-in below when enabled by this installation.")),w.view==="sandbox_login"&&Pt.default.createElement("div",{className:"space-y-3"},m.length>0?Pt.default.createElement(Pt.default.Fragment,null,Pt.default.createElement("label",{className:`block text-xs ${S}`},"Sandbox",Pt.default.createElement("select",{"aria-label":"Claude subscription sandbox",value:b,onChange:C=>h(C.target.value),className:"w-full mt-2 p-2 border rounded",style:{background:"var(--color-background)",color:"var(--color-text-primary)",borderColor:"var(--color-border)"}},m.map(C=>Pt.default.createElement("option",{key:C.session_id,value:C.session_id},C.repository," \xB7 ",C.session_id.slice(0,8))))),m.find(C=>C.session_id===b)&&Pt.default.createElement(Hp,{key:b,sandbox:m.find(C=>C.session_id===b),onChange:()=>{g(),e?.()}})):Pt.default.createElement("p",{className:`text-sm ${S}`},"Start a checkout sandbox in ",Pt.default.createElement("a",{className:"underline",href:nt("/projects")},"Projects")," to connect your Claude subscription."),Pt.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&&Pt.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 Er=Z(J());function a3({onChange:e}){let{darkMode:t}=ut(),[r,n]=(0,Er.useState)(null),[o,a]=(0,Er.useState)(null),[i,s]=(0,Er.useState)(!1),[l,u]=(0,Er.useState)(""),[c,d]=(0,Er.useState)(!1),[p,f]=(0,Er.useState)(null),m=(0,Er.useCallback)(async()=>{let[w,A]=await Promise.all([fetch("/api/provider_keys"),fetch("/api/sandboxes?sandbox_type=app_runtime")]);if(!w.ok||!A.ok)throw new Error("Could not load the Codex connection.");let[k,_]=await Promise.all([w.json(),A.json()]);n((k.provider_keys||[]).find(C=>C.provider==="codex")||{configured:!1}),a(zC(_))},[]);(0,Er.useEffect)(()=>{m().catch(w=>f(w.message))},[m]);let y=async w=>{if(w.preventDefault(),!(c||!l.trim())){d(!0),f(null);try{let A=await fetch("/api/provider_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:"codex",credential:l.trim()})}),k=await A.json().catch(()=>({}));if(!A.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(A){f(A.message)}finally{d(!1)}}},b=async()=>{if(await Jr({title:"Disconnect Codex?",message:"New Codex sessions will need an API key connected again.",confirmLabel:"Disconnect",danger:!0})){d(!0),f(null);try{if(!(await fetch("/api/provider_keys/codex",{method:"DELETE"})).ok)throw new Error("Could not disconnect Codex.");await m(),e?.()}catch(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"}`,x=wY(o,r),S={success:t?"text-green-400":"text-green-600",error:t?"text-amber-300":"text-amber-700",neutral:g}[x.tone];return Er.default.createElement("div",{className:"space-y-3"},Er.default.createElement("div",{className:"flex items-center justify-between gap-3"},Er.default.createElement("div",null,Er.default.createElement("p",{className:`font-medium ${t?"text-white":"text-gray-900"}`},"Codex"),Er.default.createElement("p",{className:`text-sm ${S}`},x.status)),Er.default.createElement("div",{className:"flex gap-2"},x.keyForm&&r?.configured&&!i&&Er.default.createElement("button",{className:v,disabled:c,onClick:b},"Disconnect"),x.keyForm&&Er.default.createElement("button",{className:v,disabled:c,onClick:()=>{s(!i),u(""),f(null)}},i?"Cancel":r?.configured?"Update":"Connect"),x.view==="local_login"&&Er.default.createElement("button",{className:v,disabled:c,onClick:h},"Check again"))),x.view==="local_login"?Er.default.createElement("p",{className:`text-xs ${g}`},"Sessions run ",Er.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."," ",x.loginHint&&Er.default.createElement(Er.default.Fragment,null,"Run ",Er.default.createElement("code",{className:"font-mono"},x.loginHint)," on this machine, as the user the dashboard runs as, then check again.")):Er.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."),x.keyForm&&i&&Er.default.createElement("form",{onSubmit:y,className:"flex flex-wrap gap-2"},Er.default.createElement("label",{className:`flex-1 text-sm ${g}`},"OpenAI API key for Codex",Er.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"}`})),Er.default.createElement("button",{type:"submit",className:`${v} self-end`,disabled:c||!l.trim()},c?"Saving\u2026":"Save API key")),p&&Er.default.createElement("p",{role:"alert",className:"text-sm text-red-500"},p))}var BCe=["profile","api-keys","integrations","notifications","billing"];function FCe(){let e=new URLSearchParams(window.location.search),t=e.get("tab");return{tab:BCe.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)(FCe),[l,u]=(0,Oe.useState)(a),[c,d]=(0,Oe.useState)(0),[p,f]=(0,Oe.useState)([]),[m,y]=(0,Oe.useState)([]),[b,h]=(0,Oe.useState)(!1),[g,v]=(0,Oe.useState)(""),[x,S]=(0,Oe.useState)(!1),[w,A]=(0,Oe.useState)(null),[k,_]=(0,Oe.useState)(!1),[C,E]=(0,Oe.useState)(null),j=(0,Oe.useCallback)(async()=>{try{let[T,I]=await Promise.all([fetch("/api/api_keys"),fetch($2("/api/provider_keys",o))]);if(!T.ok||!I.ok)throw new Error("Failed to load keys");let P=await T.json(),H=await I.json();f(P.api_keys||[]),y(H.provider_keys||[]),E(null)}catch{E("Could not load API keys. Are you signed in?")}finally{h(!0)}},[o]);(0,Oe.useEffect)(()=>{l==="api-keys"&&!b&&j()},[l,b,j]);let X=L2({onKeysChanged:j,onError:E,scope:o}),z=async()=>{if(!(!g.trim()||x)){S(!0),E(null);try{let T=await fetch("/api/api_keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:g.trim()})});if(!T.ok)throw new Error("create failed");let I=await T.json();A(I.api_key),_(!1),v(""),await j()}catch{E("Could not create the API key.")}finally{S(!1)}}},U=async T=>{if(await Jr({title:"Revoke this API key?",message:"Requests using it stop working immediately. This cannot be undone.",confirmLabel:"Revoke key",danger:!0}))try{if(!(await fetch(`/api/api_keys/${T}`,{method:"DELETE"})).ok)throw new Error("delete failed");w&&w.id===T&&A(null),await j()}catch{E("Could not revoke the API key.")}},N=async T=>{try{await navigator.clipboard.writeText(T),_(!0),setTimeout(()=>_(!1),2e3)}catch{}},O={backgroundColor:r?"#1f1f1f":"#ffffff",borderColor:r?"#2a2a2a":"#e5e7eb"};return 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"&&z(),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:z,disabled:!g.trim()||x,className:"px-4 py-2 bg-red-500 text-white rounded-lg hover:bg-red-600 disabled:opacity-50 whitespace-nowrap"},x?"Creating\u2026":"+ Create New Key"))),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:()=>A(null),className:`px-3 py-2 text-sm rounded ${r?"text-gray-400 hover:text-gray-200":"text-gray-500 hover:text-gray-700"}`},"Dismiss"))),p.length===0?Oe.default.createElement("div",{className:`text-center py-8 ${r?"text-gray-400":"text-gray-500"}`},Oe.default.createElement("p",null,b?"No API keys yet":"Loading\u2026"),b&&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:()=>U(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(Bx,{providerKeys:m,editor:X,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(r3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),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(a3,{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,I)=>Oe.default.createElement("div",{key:I,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 Ye=Z(J());var UCe=[{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."}],s3={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"},Ws={color:"var(--color-text-muted)",fontSize:12};function dR(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?nt(t):null}function WCe({card:e,onAsk:t,busy:r}){let n=dR(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Ye.default.createElement(Fe,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ye.default.createElement(Ee,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Ye.default.createElement(Ee,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Ye.default.createElement("span",{style:Ws},String(e.check_strength).replaceAll("_"," "))),Ye.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Ye.default.createElement("div",{style:{...Ws,fontFamily:V}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Ye.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Ye.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Ye.default.createElement("div",{style:Ws},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Ye.default.createElement("div",{style:Ws},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Ye.default.createElement("div",{style:Ws},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Ye.default.createElement("details",{style:Ws},Ye.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Ye.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Ye.default.createElement("li",{key:u},l)))),Ye.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Ye.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===nt("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Ye.default.createElement(ge,{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 HCe({draft:e,onReview:t}){return Ye.default.createElement(Fe,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Ye.default.createElement(Ve,null,"Agent draft \xB7 not saved"),Ye.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Ye.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Ye.default.createElement("div",{style:{...Ws,fontFamily:V}},e.provider," / ",e.model),Ye.default.createElement("details",null,Ye.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Ye.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Ye.default.createElement("p",{style:Ws},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Ye.default.createElement(ge,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function l3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[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)(!1),y=(0,Ye.useRef)(null),b=(0,Ye.useRef)(null),h=(0,Ye.useRef)(e);h.current=e,(0,Ye.useEffect)(()=>{let k=new AbortController;return fetch("/api/dashboard_assistant",{signal:k.signal}).then(async _=>{let C=await _.json();if(!_.ok)throw new Error(C.error||"Could not load assistant configuration.");i(C),h.current.provider||t({...h.current,...C.defaults})}).catch(_=>{_.name!=="AbortError"&&p({message:_.message})}),()=>{k.abort(),y.current?.abort()}},[]);let g=e.messages||[],v=e.provider||a?.defaults?.provider||"",x=e.model||"",S=a?.limits?.message_characters||8e3,w=a?.providers?.find(k=>k.id===v),A=async k=>{let _=k.trim();if(!_||u||!a||!o||!x.trim()||!f)return;let C=g.map(X=>({role:X.role,content:X.content})).slice(-12);for(;C.reduce((X,z)=>X+z.content.length,0)>24e3;)C.shift();let E=[...g,{role:"user",content:_}];t({...e,messages:E}),l(""),p(null),c(!0);let j=new AbortController;y.current=j;try{let X=await fetch("/api/dashboard_assistant",{method:"POST",signal:j.signal,headers:{"Content-Type":"application/json"},body:JSON.stringify({message:_,history:C,provider:v,model:x.trim(),allow_provider_processing:!0})}),z=await X.json();if(!X.ok){p({message:typeof z.error=="string"?z.error:"The assistant could not complete this request.",setup:z.setup_required,retry:_}),t({...e,messages:g}),l(_);return}t({...e,messages:[...E,{role:"assistant",content:z.answer,cards:z.cards||[],references:z.references||[],drafts:z.drafts||[],limitations:z.limitations||[]}]})}catch(X){X.name!=="AbortError"&&(p({message:"Connection interrupted. No answer was received; the server may still be finishing the request."}),t({...e,messages:g}),l(_))}finally{c(!1)}};return Ye.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Ye.default.createElement("div",null,Ye.default.createElement(Ve,null,"Workspace assistant"),Ye.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Ye.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&&Ye.default.createElement(ge,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!g.length&&Ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},UCe.map(k=>Ye.default.createElement("button",{key:k.label,onClick:()=>{l(k.message),b.current?.querySelector("textarea")?.focus()},style:{textAlign:"left",padding:20,background:"var(--color-card)",color:"var(--color-text-primary)",border:"1px solid var(--color-border)",borderRadius:12,cursor:"pointer"}},Ye.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},k.label," \u2197"),Ye.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},k.message)))),Ye.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((k,_)=>Ye.default.createElement("div",{key:_,style:{display:"grid",gap:12}},Ye.default.createElement(Ve,{color:k.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},k.role==="user"?"You":"ActiveAgents"),Ye.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},k.content),k.cards?.map(C=>Ye.default.createElement(WCe,{key:C.id,card:C,onAsk:E=>{l(E),b.current?.querySelector("textarea")?.focus()},busy:u})),k.references?.length>0&&Ye.default.createElement("div",{"aria-label":"Evidence references",style:{...Ws,display:"flex",gap:12,flexWrap:"wrap"}},k.references.map(C=>{let E=dR(C);return E&&Ye.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=>Ye.default.createElement(HCe,{key:C.id,draft:C,onReview:r})),k.limitations?.length>0&&Ye.default.createElement("details",{style:Ws},Ye.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Ye.default.createElement("ul",{style:{paddingLeft:18}},k.limitations.map((C,E)=>Ye.default.createElement("li",{key:E},C)))))),u&&Ye.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Ye.default.createElement(Fe,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Ye.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Ye.default.createElement(ge,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Ye.default.createElement(Fe,{padding:18},Ye.default.createElement("form",{ref:b,onSubmit:k=>{k.preventDefault(),A(s)},style:{display:"grid",gap:14}},Ye.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Ye.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:{...s3,resize:"vertical",boxSizing:"border-box"}}),Ye.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Ye.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Ye.default.createElement("select",{"aria-label":"Assistant provider",value:v,disabled:u||!a,onChange:k=>{let _=a.providers.find(C=>C.id===k.target.value);m(!1),t({...e,provider:_?.id||"",model:_?.default_model||""})},style:s3},Ye.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(k=>Ye.default.createElement("option",{key:k.id,value:k.id},k.id,k.configured?"":" \xB7 setup needed")))),Ye.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Ye.default.createElement("input",{"aria-label":"Assistant model",value:x,disabled:u||!a,maxLength:160,onChange:k=>{m(!1),t({...e,model:k.target.value})},style:s3})),Ye.default.createElement(ge,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!x.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Ye.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Ye.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:k=>m(k.target.checked),style:{marginTop:4}}),Ye.default.createElement("span",null,"Allow ",v||"the selected provider"," / ",x||"model"," to process my messages, recent conversation history, and authorized evaluation report excerpts for this conversation.")),Ye.default.createElement("div",{style:{...Ws,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 ca=Z(J());var yt=Z(J());var Jo=Z(J());function qCe(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 u3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,Jo.useState)(r),a=qCe(t);return Jo.default.createElement(Zr,{title:"Before you start",meta:e?.ready?"ready":"action needed",testId:"project-capabilities"},Jo.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"}},Jo.default.createElement("span",{"aria-hidden":"true"},n?"\u25BE":"\u25B8"),Jo.default.createElement("span",{"data-testid":"capabilities-summary"},a),Jo.default.createElement("span",{style:{marginLeft:"auto",fontSize:12,color:"var(--color-text-muted)"}},n?"Hide":"Show"," checklist")),n&&Jo.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},t.map(i=>Jo.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)"}},Jo.default.createElement(Va,{kind:i.ok?"pass":i.blocking?"fault":"info"}),Jo.default.createElement("div",{style:{minWidth:0,flex:1}},Jo.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"baseline",flexWrap:"wrap"}},Jo.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},i.label),!i.ok&&i.blocking&&Jo.default.createElement(Ve,{color:"var(--color-error-text)"},"blocks creating a project")),i.detail&&Jo.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail),!i.ok&&i.fix&&Jo.default.createElement("code",{"data-testid":`capability-fix-${i.key}`,style:{display:"block",marginTop:6,padding:"6px 8px",borderRadius:6,fontFamily:V,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var Qr=Z(J());var pR={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:V,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function Hx({rows:e,onChange:t,repository:r}){let[n,o]=(0,Qr.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?B2(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return Qr.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&Qr.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=B2(s.name),c=s.useOrganizationKey?[]:F2(s.name,s.value);return Qr.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Qr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Qr.default.createElement("span",{style:{fontFamily:V,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&Qr.default.createElement(Ee,{tone:"warning"},"required"),s.set&&Qr.default.createElement(Ee,{tone:"success"},"set"),s.sources?.length>0&&Qr.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&Qr.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?Qr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):Qr.default.createElement(Qr.default.Fragment,null,!s.useOrganizationKey&&Qr.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:{...pR,marginTop:6}}),s.organizationKey&&Qr.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},Qr.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&&Qr.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)"}},Qr.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=>Qr.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),Qr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},Qr.default.createElement("div",{style:{flex:1}},Qr.default.createElement(Ve,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),Qr.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...pR,marginTop:4}}),i&&Qr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),Qr.default.createElement(ge,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(qQ(e,n)),o("")}},"Add")))}var fR={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 KCe({repository:e,preflight:t}){return t?yt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},yt.default.createElement("span",{style:{fontFamily:V,fontSize:13,color:"var(--color-text-primary)"}},e),yt.default.createElement(Ee,{tone:U2[t.status]||"muted"},t.summary)),yt.default.createElement("div",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-muted)"}},"Ruby ",t.ruby||"unpinned",t.ruby_source?` (${t.ruby_source})`:""," \xB7 railties ",t.railties||"not locked"," ","\xB7 engine ",t.actionagent||"not bundled"," \xB7 ref ",t.ref),t.reasons?.slice(1).map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function c3({onCreated:e,onCancel:t}){let[r,n]=(0,yt.useState)(null),[o,a]=(0,yt.useState)(null),[i,s]=(0,yt.useState)(!1),[l,u]=(0,yt.useState)(""),[c,d]=(0,yt.useState)(null),[p,f]=(0,yt.useState)(null),[m,y]=(0,yt.useState)(null),[b,h]=(0,yt.useState)(!1),[g,v]=(0,yt.useState)([]),[x,S]=(0,yt.useState)(""),[w,A]=(0,yt.useState)(!1),[k,_]=(0,yt.useState)("/"),[C,E]=(0,yt.useState)(!1),[j,X]=(0,yt.useState)(null),z=(0,yt.useCallback)(async()=>{let P=await fetch("/api/projects/capabilities"),H=await P.json().catch(()=>({}));if(!P.ok)throw new Error(ot(H,`Could not check what this dashboard can do (HTTP ${P.status}).`));return n(H),H},[]),U=(0,yt.useCallback)(async()=>{a(null);let P=await fetch("/api/github_connection/repositories"),H=await P.json().catch(()=>({}));if(H.reconnect_required){s(!0);return}if(!P.ok)throw new Error(ot(H,`Could not list repositories (HTTP ${P.status}).`));s(!1),a(H.repositories||[])},[]);(0,yt.useEffect)(()=>{z().then(P=>P.github?.connected?U():null).catch(P=>X(P.message))},[z,U]);let N=(0,yt.useCallback)(async(P,{typed:H=!1}={})=>{X(null),f(null),h(!0);try{let G=`repository=${encodeURIComponent(P)}`,L=await fetch(`/api/projects/preflight?${G}`),Y=await L.json().catch(()=>({}));if(Y.reconnect_required){s(!0);return}if(!L.ok){let Me=ot(Y,`Could not check ${P} (HTTP ${L.status}).`);H?f(Me):X(Me);return}if(d(Y.repository.full_name),y(Y.preflight),S(Me=>KQ({name:Me,edited:w,fullName:Y.repository.full_name})),v([]),Y.preflight.status==="unsupported")return;let W=await fetch(`/api/projects/discover_secrets?${G}`),ie=await W.json().catch(()=>({}));if(!W.ok)throw new Error(ot(ie,`Could not read ${P}'s environment variables (HTTP ${W.status}).`));v(Fx(ie.variables||[]))}catch(G){X(G.message)}finally{h(!1)}},[w]),O=async()=>{E(!0),X(null);try{let P=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({repository:c,name:x,start_url:k,secrets:Ux(g)})}),H=await P.json().catch(()=>({}));if(!P.ok)throw new Error(ot(H,`Could not create the project (HTTP ${P.status}).`));e(H.project)}catch(P){X(P.message)}finally{E(!1)}},D=r?.github,T=VQ({github:D,repositories:o,reconnectRequired:i,pendingApproval:D?.pending_approval===!0}),I=b?"Checking the repository\u2026":GQ({capabilities:r,preflight:m,secretsProblem:Ah(g)});return yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},yt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},yt.default.createElement("div",{style:{flex:1}},yt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),yt.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Boot a repository in a sandbox, installing the engine there when it does not have it, and evaluate an agent against the running app.")),yt.default.createElement(ge,{onClick:t},"Cancel")),j&&yt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},j),yt.default.createElement(Fe,null,yt.default.createElement(Ve,null,"Repository"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(df,{mode:"single",state:T,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:P=>N(P),settingsHref:nt("/settings?tab=integrations"),missingRepositoryUrl:D?.access_settings_url,onRefresh:()=>U().catch(P=>X(P.message)),onTypeName:P=>N(P,{typed:!0}),typedNameError:p})),m&&yt.default.createElement("div",{style:{marginTop:12}},yt.default.createElement(KCe,{repository:c,preflight:m}))),r&&yt.default.createElement(u3,{capabilities:r}),m&&m.status!=="unsupported"&&yt.default.createElement(Fe,null,yt.default.createElement(Ve,null,"Project"),yt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",yt.default.createElement("input",{type:"text",value:x,onChange:P=>{S(P.target.value),A(P.target.value!=="")},style:{...fR,marginTop:4}})),yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",yt.default.createElement("input",{type:"text",value:k,onChange:P=>_(P.target.value),style:{...fR,marginTop:4,fontFamily:V}}))),yt.default.createElement("div",{style:{marginTop:16}},yt.default.createElement(Ve,null,"Secrets the boot needs"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(Hx,{rows:g,onChange:v,repository:c})))),yt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},I&&yt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},I),yt.default.createElement(ge,{variant:"primary",onClick:O,disabled:!!I||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var qe=Z(J());var $r=Z(J());var VCe={success:"success",error:"error",progress:"info",neutral:"muted"};function d3({project:e}){let[t,r]=(0,$r.useState)(null),[n,o]=(0,$r.useState)(null),[a,i]=(0,$r.useState)(""),[s,l]=(0,$r.useState)(!1),u=e.sandbox,c=e.sandbox_state==="ready"&&!!u?.session_id,d=(0,$r.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,$r.useEffect)(()=>{d()},[d]);let p=async m=>{m.preventDefault();let y=a.trim();if(!(!y||!c)){l(!0),o(null);try{let b=await fetch(`/api/sandboxes/${encodeURIComponent(u.session_id)}/code_sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:y,origin:"chat"})}),h=await b.json().catch(()=>({}));if(!b.ok)throw new Error(ot(h,`The conversation did not start (HTTP ${b.status}).`));dt(ds(h.code_session.id))}catch(b){o(b.message),l(!1)}}},f={margin:0,fontSize:13,color:"var(--color-text-secondary)"};return $r.default.createElement("div",{style:{display:"grid",gap:12},"data-testid":"project-sessions"},$r.default.createElement(Fe,null,$r.default.createElement("form",{onSubmit:p,style:{display:"grid",gap:8}},$r.default.createElement(Ve,{as:"label",htmlFor:`project-${e.id}-chat`},"Chat with Claude Code"),$r.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)"}}),$r.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:8}},$r.default.createElement("p",{style:f},"It edits the checkout and never commits or pushes. The conversation opens with the sandbox's browser beside it."),$r.default.createElement(ge,{variant:"primary",type:"submit",disabled:!c||s||!a.trim(),testId:"project-start-conversation"},s?"Starting\u2026":"Start")),n&&$r.default.createElement("p",{role:"alert",style:{...f,color:"var(--color-error-text)"}},n))),$r.default.createElement(Fe,null,$r.default.createElement(Ve,null,"Conversations"),t===null&&!n&&$r.default.createElement("p",{style:f},"Loading\u2026"),t?.length===0&&$r.default.createElement("p",{style:f},"No conversations yet."),$r.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0,display:"grid",gap:8}},(t||[]).map(m=>{let y=cs(m.status),b=ds(Up(m.id));return $r.default.createElement("li",{key:m.id},$r.default.createElement("a",{href:nt(b),onClick:h=>{h.preventDefault(),dt(b)},style:{display:"grid",gap:2,textDecoration:"none",color:"var(--color-text-primary)"},"data-testid":"project-conversation"},$r.default.createElement("span",{style:{display:"flex",gap:8,alignItems:"center"}},$r.default.createElement(Ee,{tone:VCe[y.tone]||"muted"},y.label),$r.default.createElement("span",{style:{fontSize:13}},m.preview?.input||m.display_name)),$r.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:V}},FC(m))))}))))}var ir=Z(J());function mR(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function p3(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 gR(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"&&!p3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function hR(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 vR(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||f3(e)||(Number(e?.pending_input_requests)||0)>0}var GCe=6e4;function xR(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 _R(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(g3(e,r))!==n(t)}function CR(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 AR(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function ER(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 NR(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 TR(e){return e.json().catch(()=>({}))}function h3({project:e,onSaved:t,onConfirmationRequired:r}){let[n,o]=(0,ir.useState)(null),[a,i]=(0,ir.useState)({}),[s,l]=(0,ir.useState)(null),[u,c]=(0,ir.useState)(!1),d=e.schema_tools||[],p=(0,ir.useCallback)(async()=>{let m=await fetch(`/api/projects/${e.id}/app_models`),y=await TR(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(SR(y.schema_tools||[]))},[e.id]);(0,ir.useEffect)(()=>{e.app_models_listed&&p().catch(m=>l(m.message))},[p,e.app_models_listed]);let f=async(m,y=!1)=>{c(!0),l(null);try{let b=await fetch(`/api/projects/${e.id}/schema_tools`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({schema_tools:g3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await TR(b);if(b.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!b.ok)throw new Error(ot(h,`Could not save what the assistant may read (HTTP ${b.status}).`));t?.(h.project)}catch(b){l(b.message)}finally{c(!1)}};return ir.default.createElement(YCe,{listed:e.app_models_listed,models:n,selection:a,changed:n?_R(a,d,n):!1,busy:u,error:s,onToggle:(m,y,b)=>i(h=>kR(h,m,y,b)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function YCe({listed:e,models:t,selection:r,changed:n,busy:o,error:a,onToggle:i,onSave:s,onSaveAndRestart:l}){let u=(0,ir.useMemo)(()=>Object.keys(r||{}),[r]);return ir.default.createElement(Zr,{title:"Choose what the assistant may read",meta:`${u.length} ${u.length===1?"model":"models"}`,testId:"project-assistant-reads"},ir.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&&ir.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&&ir.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},a),e&&t&&t.length===0&&ir.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 ir.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"}},ir.default.createElement("summary",{style:{cursor:"pointer",display:"flex",gap:8,alignItems:"center"}},ir.default.createElement("span",{style:{fontFamily:V,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},c.name),ir.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},c.table),d&&ir.default.createElement(Ee,{tone:"accent"},`${d.filterable.size} filter \xB7 ${d.returns.size} read`)),ir.default.createElement("table",{style:{marginTop:6,borderCollapse:"collapse",fontSize:12}},ir.default.createElement("thead",null,ir.default.createElement("tr",{style:{color:"var(--color-text-muted)",textAlign:"left"}},ir.default.createElement("th",{style:{padding:"2px 12px 2px 0",fontWeight:500}},"Column"),ir.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Filter on"),ir.default.createElement("th",{style:{padding:"2px 12px",fontWeight:500}},"Read back"))),ir.default.createElement("tbody",null,c.columns.map(p=>ir.default.createElement("tr",{key:p.name},ir.default.createElement("td",{style:{padding:"2px 12px 2px 0",fontFamily:V,color:"var(--color-text-primary)"}},p.name," ",ir.default.createElement("span",{style:{color:"var(--color-text-muted)"}},p.type)),["filterable","returns"].map(f=>ir.default.createElement("td",{key:f,style:{padding:"2px 12px",textAlign:"center"}},ir.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&&ir.default.createElement("div",{style:{display:"flex",gap:8,padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},ir.default.createElement(ge,{size:"sm",onClick:s,disabled:o||!n},"Save"),ir.default.createElement(ge,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var Ya=Z(J());function y3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return Ya.default.createElement(Zr,{title:"Boot",meta:mR(o)||n||"none",testId:"project-boot-progress"},a.length===0&&Ya.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&&Ya.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>Ya.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)"}},Ya.default.createElement(Ee,{tone:ZQ[i.status]||"muted"},i.status),Ya.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},YQ(i.name)," ",Ya.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},i.name)),Ya.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),Ya.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":XQ(i.duration_ms))))),r&&Ya.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&&Ya.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Ya.default.createElement("div",{style:{padding:"6px 12px",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),Ya.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:V,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Sl=Z(J());var OR="/settings?tab=integrations";function v3({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=Sl.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=Sl.default.createElement(Sl.default.Fragment,null,Sl.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 ",Sl.default.createElement("span",{style:{fontFamily:V}},"browser:",o.session_id),"."),Sl.default.createElement(cf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Sl.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."),Sl.default.createElement(Zr,{title:"Browser",meta:Sl.default.createElement(gn,{href:nt(OR),onClick:()=>dt(OR)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var $n=Z(J());var XCe=e=>e?new Date(e).toLocaleString():"\u2014",ZCe={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function x3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,$n.useState)(null),[i,s]=(0,$n.useState)(""),[l,u]=(0,$n.useState)(!1),c=o?F2(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return $n.default.createElement(Zr,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&$n.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&$n.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),$n.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>$n.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},$n.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},$n.default.createElement("span",{style:{fontFamily:V,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),$n.default.createElement(Ee,{tone:p.source==="organization_key"?"info":"muted"},ZCe[p.source]?.(p)||"entered"),$n.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",XCe(p.updated_at)),$n.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&$n.default.createElement(ge,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),$n.default.createElement(ge,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&$n.default.createElement("div",{style:{marginTop:4,fontFamily:V,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&$n.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("")})}},$n.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:V,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),$n.default.createElement(ge,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),$n.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>$n.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var Ln=Z(J());var ud=Z(J());var JCe=["proposed","edited"],S3={answerable:{label:"answerable",tone:"success",title:"Every expected tool is one the agent can call."},needs_tool:{label:"needs a tool",tone:"warning",title:"The agent cannot call every tool a good answer needs."},unverified:{label:"unverified",tone:"muted",title:"The agent's tools could not be read when this was checked."}},K2={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},PR={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function IR(e){return e?.status==="pending"||e?.status==="running"}function V2(e){return JCe.includes(e.state)}function k3(e=[],t=null){let r=e.filter(n=>V2(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function DR(e=[],t=[]){let r=new Set(t.filter(V2).map(n=>n.id));return e.filter(n=>r.has(n))}function MR(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function jR(e={},t={}){return Object.keys(PR).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:PR[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${MR(r,o)} / ${MR(r,n)}`}]})}function $R(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 LR({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 zR(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 b3(e){return(e||[]).join(", ")}function w3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function BR(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:b3(t.tools),contains:b3(t.contains),not_contains:b3(t.not_contains)}}function FR(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:w3(e.tools),contains:w3(e.contains),not_contains:w3(e.not_contains)}}function G2(e){return`/explorations/${e}`}function Y2(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function pf({explorations:e,onOpen:t,selectedId:r=null}){return ud.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 ud.default.createElement(Fe,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},ud.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},ud.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),ud.default.createElement(Ee,{tone:K2[n.status]||"muted"},n.status),ud.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),ud.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",fo(n.created_at))))}))}var kt=Z(J());var ff=Z(J());function _3({budget:e,usage:t}){let r=jR(e,t);return r.length===0?null:ff.default.createElement(Zr,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?po.error:n.ratio>=.8?po.warning:po.info;return ff.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},ff.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),ff.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},ff.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),ff.default.createElement("span",{style:{fontFamily:V,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var Mt=Z(J());var QCe={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},Eh={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 Nh({label:e,children:t}){return Mt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"}},e,t)}function C3({candidate:e,selected:t,onToggle:r,onSave:n,onState:o,busy:a,problem:i,agentId:s}){let[l,u]=(0,Mt.useState)(null),c=S3[e.verdict]||S3.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=$R(e),y=V2(e),b=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,FR(l))&&u(null)};return Mt.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}},Mt.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"}}),Mt.default.createElement("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:6}},Mt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},Mt.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},e.prompt),Mt.default.createElement(Ee,{tone:c.tone,title:c.title,testId:`candidate-verdict-${e.id}`},c.label),Mt.default.createElement(Ee,{tone:QCe[e.state]||"muted"},e.state),e.group&&Mt.default.createElement(Ee,null,e.group),e.scenario_key&&Mt.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},e.scenario_key)),l?Mt.default.createElement("div",{style:{display:"grid",gap:8},"data-testid":`candidate-edit-${e.id}`},Mt.default.createElement(Nh,{label:"Prompt"},Mt.default.createElement("input",{style:Eh,value:l.prompt,onChange:b("prompt")})),Mt.default.createElement(Nh,{label:"Rubric: what a good answer does (the judge grades against it)"},Mt.default.createElement("textarea",{style:{...Eh,minHeight:60},value:l.rubric,onChange:b("rubric")})),Mt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:8}},Mt.default.createElement(Nh,{label:"Group"},Mt.default.createElement("input",{style:Eh,value:l.group,onChange:b("group")})),Mt.default.createElement(Nh,{label:"Tools (comma-separated)"},Mt.default.createElement("input",{style:Eh,value:l.tools,onChange:b("tools")})),Mt.default.createElement(Nh,{label:"Contains"},Mt.default.createElement("input",{style:Eh,value:l.contains,onChange:b("contains")})),Mt.default.createElement(Nh,{label:"Does not contain"},Mt.default.createElement("input",{style:Eh,value:l.not_contains,onChange:b("not_contains")}))),Mt.default.createElement("div",{style:{display:"flex",gap:8}},Mt.default.createElement(ge,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),Mt.default.createElement(ge,{size:"sm",onClick:()=>u(null),disabled:a},"Cancel"))):Mt.default.createElement(Mt.default.Fragment,null,Mt.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)&&Mt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center",fontFamily:V,fontSize:11}},(d.tools||[]).map(g=>Mt.default.createElement(Ee,{key:g,tone:p.has(g)?"warning":"muted",title:p.has(g)?"The agent cannot call this tool":void 0},p.has(g)?`missing ${g}`:g)),(d.contains||[]).map(g=>Mt.default.createElement(Ee,{key:`c-${g}`},"contains \u201C",g,"\u201D")),(d.not_contains||[]).map(g=>Mt.default.createElement(Ee,{key:`n-${g}`},"not \u201C",g,"\u201D")))),i&&Mt.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)&&Mt.default.createElement("details",{style:{fontSize:12,color:"var(--color-text-secondary)"}},Mt.default.createElement("summary",{style:{cursor:"pointer"}},"How it was found"),f.urls?.length>0&&Mt.default.createElement("div",{style:{marginTop:4,fontFamily:V,fontSize:11}},f.urls.join(" \xB7 ")),f.steps?.length>0&&Mt.default.createElement("ol",{style:{margin:"4px 0 0",paddingLeft:18}},f.steps.map((g,v)=>Mt.default.createElement("li",{key:v},g))),f.screenshots?.length>0&&Mt.default.createElement("div",{style:{marginTop:4,fontFamily:V,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&Mt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&Mt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&Mt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&Mt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>u(BR(e)),disabled:a},"Edit"),y&&Mt.default.createElement(ge,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&Mt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var A3={minutes:15,steps:150},UR={minutes:120,steps:1e3,cost:100},WR={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function qR(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:`${WR[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>UR[r])return{error:`${WR[r]} may be at most ${UR[r]}.`};t[r]=o}return{budget:t}}var HR={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 KR(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&HR[t.code]?HR[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var RCe={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 VR(e){return e?RCe[e]||e:null}var e2e={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function GR(e){return e?{tone:e2e[e.status]||"muted",text:e.message||e.status}:null}function YR(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 E3(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function XR(e){return e.json().catch(()=>({}))}var r2e={explorer:"explorer agent",external:"submitted from outside the dashboard"};function mf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,kt.useState)(null),[s,l]=(0,kt.useState)(null),[u,c]=(0,kt.useState)([]),[d,p]=(0,kt.useState)(!1),[f,m]=(0,kt.useState)(!1),[y,b]=(0,kt.useState)({}),[h,g]=(0,kt.useState)(null),[v,x]=(0,kt.useState)(null),S=(0,kt.useRef)(t);S.current=t;let w=(0,kt.useCallback)(async()=>{let P=await fetch(`/api/explorations/${e}`),H=await XR(P);if(!P.ok)throw new Error(ot(H,`Could not load the exploration (HTTP ${P.status}).`));return i(H),S.current?.(H),H},[e]);(0,kt.useEffect)(()=>{w().catch(P=>l(P.message))},[w]);let A=a?.candidates||[];(0,kt.useEffect)(()=>{a&&c(P=>d?DR(P,A):k3(A,a.preselect_limit))},[a,d]);let k=IR(a?.exploration);(0,kt.useEffect)(()=>{if(!k)return;let P=setInterval(()=>w().catch(H=>l(H.message)),3e3);return()=>clearInterval(P)},[k,w]),wh("ExplorationChannel",{exploration_id:e},P=>{Sh(P)&&w().catch(()=>{})},!!e);let _=async(P,H,G)=>{m(!0),l(null);try{let L=await fetch(P,{method:H,headers:{"Content-Type":"application/json"},body:JSON.stringify(G||{})}),Y=await XR(L);return{res:L,data:Y}}finally{m(!1)}},C=async(P,H)=>{let{res:G,data:L}=await _(`/api/explorations/${e}/candidates/${P}`,"PATCH",H);return G.ok?(b({...y,[P]:null}),await w(),!0):(b({...y,[P]:ot(L,`Could not save the candidate (HTTP ${G.status}).`)}),!1)},E=async(P,H)=>C(P,{state:H}),j=P=>{p(!0),c(H=>H.includes(P)?H.filter(G=>G!==P):[...H,P])},X=async()=>{let P={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:H,data:G}=await _(`/api/explorations/${e}/accept`,"POST",P);return H.ok?(b({}),g({accepted:G.accepted,evaluation:r?null:G.evaluation,scenarioSet:G.scenario_set||null}),o?.(G),p(!1),i(G),S.current?.(G),G):(b(G.problems||{}),l(ot(G,`Could not accept the candidates (HTTP ${H.status}).`)),null)},z=async(P,H,{confirm:G=!1}={})=>{let L=H?`/api/projects/${H.id}/run_evaluation`:`/api/evaluations/${P.id}/run`,{res:Y,data:W}=await _(L,"POST",G?{confirm:!0}:{});if(Y.status===409&&W.code==="confirmation_required"){x({question:W.confirmation,evaluation:P,project:H});return}if(!Y.ok){l(ot(W,`The scenarios were accepted, but the run did not start (HTTP ${Y.status}).`));return}x(null),dt(`/evaluations/${W.run?.evaluation_id||P.id}/runs/${W.run.id}`)},U=async()=>{let P=await X();P?.evaluation&&await z(P.evaluation,P.project)},N=async()=>{let{res:P,data:H}=await _(`/api/explorations/${e}/stop`,"POST");if(!P.ok&&P.status!==409){l(ot(H,`Could not stop the exploration (HTTP ${P.status}).`));return}await w()};if(!a)return s?kt.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):kt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:O}=a,D=O.counts||{},T=LR({evaluation:a.evaluation,candidates:A,selectedIds:u}),I=k3(A);return kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(Ve,null,"Exploration ",O.id),kt.default.createElement(Ee,{tone:K2[O.status]||"muted",testId:"exploration-status"},O.status),kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r2e[O.source]||O.source," \xB7 ",fo(O.created_at),O.start_url?` \xB7 from ${O.start_url}`:""),k&&kt.default.createElement(ge,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),O.stop_reason&&kt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},VR(O.stop_reason)),O.error_message&&kt.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},O.error_message),kt.default.createElement(_3,{budget:O.budget,usage:O.usage}),s&&kt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&kt.default.createElement(Fe,{padding:12,testId:"exploration-accepted"},kt.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&&kt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&kt.default.createElement(Fe,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},kt.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),kt.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},kt.default.createElement(ge,{variant:"primary",onClick:()=>z(v.evaluation,v.project,{confirm:!0}),disabled:f},"Run it on this machine"),kt.default.createElement(ge,{onClick:()=>x(null)},"Cancel"))),kt.default.createElement(Zr,{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"}},A.length===0?kt.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."):kt.default.createElement("ul",{style:{margin:0,padding:0}},A.map(P=>kt.default.createElement(C3,{key:P.id,candidate:P,selected:u.includes(P.id),onToggle:j,onSave:C,onState:E,busy:f,problem:y?.[P.id]||y?.[String(P.id)],agentId:a.target_agent?.id})))),A.length>0&&kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(I)},disabled:f},"Select every answerable"),kt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&I.length>a.preselect_limit&&kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(ge,{variant:"primary",onClick:X,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&kt.default.createElement(kt.default.Fragment,null,kt.default.createElement(ge,{onClick:U,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),kt.default.createElement("span",{style:{fontFamily:V,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},zR(T,a.runs_remaining))))))}var Xa=Z(J());var n2e={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:V,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function qx({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,Xa.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,Xa.useState)(null),[s,l]=(0,Xa.useState)(!1),{error:u,budget:c}=qR(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(KR(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,y)=>Xa.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},Xa.default.createElement(Ve,null,m),Xa.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:y,onChange:b=>o({...n,[f]:b.target.value}),"aria-label":m,style:n2e}));return Xa.default.createElement(Zr,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Xa.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."),Xa.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(A3.minutes)),p("steps","Browser steps",String(A3.steps)),p("cost","Cost cap ($)","none"),Xa.default.createElement(ge,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&Xa.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)&&Xa.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var Gt=Z(J());var o2e={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:V,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},a2e=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],ZR=e=>e?new Date(e).toLocaleString():"\u2014";async function gf(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 N3({projectId:e,sandboxId:t,sandboxReady:r}){let[n,o]=(0,Gt.useState)(null),[a,i]=(0,Gt.useState)(null),[s,l]=(0,Gt.useState)({login_url:"",login:"",password:"",login_field:"",password_field:"",submit_field:""}),[u,c]=(0,Gt.useState)(null),[d,p]=(0,Gt.useState)(null),[f,m]=(0,Gt.useState)(null),[y,b]=(0,Gt.useState)(!1),h=(0,Gt.useCallback)(async()=>{let z=await gf(`/api/projects/${e}/sign_in`,"GET");o(z.sign_in);let U=z.sign_in?.credentials;U&&l(N=>({...N,login_url:U.login_url||"",login:U.login||"",...U.fields})),i(N=>N||(U?"credentials":z.sign_in?.storage_state?"by_hand":"none"))},[e]);(0,Gt.useEffect)(()=>{h().catch(z=>p(z.message))},[h]);let g=async z=>{b(!0),p(null),m(null);try{await z()}catch(U){p(U.message)}finally{b(!1)}},v=n?.credentials,{error:x,payload:S}=YR(s,{passwordSaved:!!v?.password_set}),w=GR(u),A=()=>g(async()=>{let z=await gf(`/api/projects/${e}/sign_in`,"PUT",S);o(z.sign_in),l(U=>({...U,password:""})),m(z.warnings?.length?z.warnings.map(U=>U.message).join(" "):"Saved. The explorer signs in with them.")}),k=()=>g(async()=>{let z=await gf(`/api/projects/${e}/sign_in/check`,"POST");c(z.result),o(z.sign_in)}),_=()=>g(async()=>{await gf(`/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 z=await gf(`/api/projects/${e}/sign_in/save_browser`,"POST");o(z.sign_in),m("Saved. Every browser of this project now starts signed in.")}),E=()=>g(async()=>{await gf(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),j=()=>g(async()=>{let z=await gf(`/api/projects/${e}/sign_in`,"DELETE");o(z.sign_in),c(null),m("The explorer explores what is reachable without signing in.")}),X=(z,U,N="text",O="")=>Gt.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4,flex:"1 1 200px"}},Gt.default.createElement(Ve,null,U),Gt.default.createElement("input",{type:N,autoComplete:"off",value:s[z],placeholder:O,onChange:D=>l({...s,[z]:D.target.value}),"aria-label":U,style:o2e}));return Gt.default.createElement(Zr,{title:"Sign-in",testId:"project-sign-in",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Gt.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."),Gt.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"}},v&&Gt.default.createElement(Ee,{tone:"success"},"credentials saved ",ZR(v.updated_at)),n?.storage_state&&Gt.default.createElement(Ee,{tone:"success"},"browser sign-in saved ",ZR(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&Gt.default.createElement(Ee,null,"no sign-in")),Gt.default.createElement(us,{options:a2e,value:a||"none",onChange:i}),a==="credentials"&&Gt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-credentials"},Gt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},X("login_url","Login URL","text","/users/sign_in"),X("login","Login","text","dev@example.com"),X("password","Password","password",v?.password_set?"Saved; leave empty to keep it":"")),Gt.default.createElement("details",null,Gt.default.createElement("summary",{style:{fontSize:12,color:"var(--color-text-secondary)",cursor:"pointer"}},"Field selectors, when the form's fields are not found"),Gt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:6}},X("login_field","Login field","text","#user_email"),X("password_field","Password field","text","#user_password"),X("submit_field","Submit button","text","button[type=submit]"))),Gt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Gt.default.createElement(ge,{variant:"primary",size:"sm",onClick:A,disabled:y||!!x},"Save credentials"),Gt.default.createElement(ge,{size:"sm",onClick:k,disabled:y||!v||!r,testId:"sign-in-check"},"Check sign-in"),x&&Gt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},x))),a==="by_hand"&&Gt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8},"data-testid":"sign-in-by-hand"},Gt.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."),Gt.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},Gt.default.createElement(ge,{size:"sm",onClick:_,disabled:y||!r||n?.browser_running},"Open a browser window"),Gt.default.createElement(ge,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&Gt.default.createElement(ge,{size:"sm",variant:"ghost",onClick:E,disabled:y},"Stop the browser"))),a==="none"&&(v||n?.storage_state)&&Gt.default.createElement("div",null,Gt.default.createElement(ge,{size:"sm",variant:"danger",onClick:j,disabled:y},"Remove the saved sign-in")),w&&Gt.default.createElement("div",{"data-testid":"sign-in-result",style:{fontSize:13,color:po[w.tone]?.text||"var(--color-text-secondary)"}},w.text),f&&Gt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},f),d&&Gt.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},d))}function T3({projectId:e,project:t,onCount:r}){let[n,o]=(0,Ln.useState)(null),[a,i]=(0,Ln.useState)(null),[s,l]=(0,Ln.useState)(null),u=(0,Ln.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,Ln.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=Ln.default.createElement(Ln.default.Fragment,null,Ln.default.createElement(qx,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),Ln.default.createElement(N3,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return Ln.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return Ln.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return Ln.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,Ln.default.createElement(Fe,{testId:"project-explorations-empty"},Ln.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 Ln.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,Ln.default.createElement(pf,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),Ln.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},Ln.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(G2(p))},"Open on its own page")),Ln.default.createElement(mf,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var cr=Z(J());var i2e={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function JR(e){return e.json().catch(()=>({}))}function O3({projectId:e,setupAgentId:t,version:r,onSettled:n}){let[o,a]=(0,cr.useState)(null),[i,s]=(0,cr.useState)(null),l=(0,cr.useCallback)(async()=>{let c=await fetch(`/api/projects/${e}/input_requests`),d=await JR(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,cr.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 JR(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:cr.default.createElement(Zr,{title:"Waiting for you",meta:`${o?.length||0}`,testId:"project-input-requests"},i&&cr.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,color:"var(--color-error-text)"}},i),(o||[]).map(c=>cr.default.createElement(s2e,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function s2e({request:e,onSettle:t,storesProjectSecret:r}){let[n,o]=(0,cr.useState)(""),[a,i]=(0,cr.useState)(!1),[s,l]=(0,cr.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 cr.default.createElement(l2e,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",hR(e,c)),onDecline:()=>u("decline")})}function l2e({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=gR(e,r),u=`project-answer-${e.id}`;return cr.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)}},cr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},cr.default.createElement(Ee,{tone:e.kind==="secret"?"warning":"info"},i2e[e.kind]||e.kind),cr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},e.agent?.name||"An agent"," asks",e.actor?.name?`, for ${e.actor.name}`:""),cr.default.createElement("span",{style:{marginLeft:"auto",fontFamily:V,fontSize:11,color:"var(--color-text-muted)"}},"run ",e.run_id)),cr.default.createElement("label",{htmlFor:u,style:{fontSize:14,color:"var(--color-text-primary)",whiteSpace:"pre-wrap"}},e.prompt),e.kind==="choice"&&cr.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)"}},cr.default.createElement("option",{value:""},"Choose\u2026"),p3(e).map(c=>cr.default.createElement("option",{key:c.value,value:c.value},c.label))),(e.kind==="text"||e.kind==="secret")&&cr.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"?V:"inherit"}}),e.kind==="secret"&&cr.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."),cr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center"}},e.kind==="confirm"?cr.default.createElement(cr.default.Fragment,null,cr.default.createElement(ge,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),cr.default.createElement(ge,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):cr.default.createElement(cr.default.Fragment,null,cr.default.createElement(ge,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),cr.default.createElement(ge,{size:"sm",onClick:s,disabled:o},"Decline"),r&&l&&cr.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},l))),a&&cr.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},a))}var zt=Z(J());async function X2(e){return e.json().catch(()=>({}))}function P3({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,zt.useState)(null),[i,s]=(0,zt.useState)(null),[l,u]=(0,zt.useState)(null),[c,d]=(0,zt.useState)(0),[p,f]=(0,zt.useState)(!1),m=(0,zt.useCallback)(async()=>{let h=await fetch(n),g=await X2(h);if(!h.ok)throw new Error(ot(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,zt.useEffect)(()=>{let h=!1,g=null,v=async()=>{try{let x=await m();if(h)return;a(x),s(null),x.project&&t?.(x.project);let S=AR(x.pull_request);S&&(g=setTimeout(v,S))}catch(x){h||s(x.message)}};return v(),()=>{h=!0,clearTimeout(g)}},[m,c]);let y=async h=>{f(!0),s(null);try{let g=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(h?{regular:!0}:{open:!0})}),v=await X2(g);if(!g.ok)throw new Error(ot(v,`Could not open the pull request (HTTP ${g.status}).`));d(x=>x+1)}catch(g){s(g.message)}finally{f(!1)}},b=o?.pull_request||null;return e.install_state==="installed"&&!b?null:zt.default.createElement(zt.default.Fragment,null,zt.default.createElement(u2e,{project:e,pullRequest:b,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:y}),l&&zt.default.createElement(c2e,{project:e,base:n,pullRequest:b,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function u2e({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=CR(t),{canOpen:c,canUpdate:d,openBranch:p}=ER(t);return zt.default.createElement(Fe,{testId:"project-install-pull-request"},zt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},zt.default.createElement(Ve,null,"Install pull request"),zt.default.createElement(Ee,{tone:u},l),t?.url&&zt.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),zt.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&zt.default.createElement(ge,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&zt.default.createElement(ge,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&zt.default.createElement(ge,{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"))),zt.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&&zt.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:V,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&zt.default.createElement("details",{style:{marginTop:6}},zt.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),zt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:V,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>zt.default.createElement("li",{key:f},f)))),o&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function c2e({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,zt.useState)(null),[c,d]=(0,zt.useState)(null),[p,f]=(0,zt.useState)(!0),[m,y]=(0,zt.useState)(null),[b,h]=(0,zt.useState)(new Set),[g,v]=(0,zt.useState)(s?r?.title||"":"Install ActiveAgent"),[x,S]=(0,zt.useState)(""),[w,A]=(0,zt.useState)(s&&r?.branch||""),[k,_]=(0,zt.useState)(a2),[C,E]=(0,zt.useState)(!1),[j,X]=(0,zt.useState)(0);(0,zt.useEffect)(()=>{let U=!1,N=null;f(!0);let O=async(D=!1)=>{try{let T=await fetch(`${t}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D?{confirm:!0}:{})}),I=await X2(T);if(U)return;if(T.status===409&&I.code==="confirmation_required"){o?.(I.confirmation,()=>O(!0));return}if(T.status===202){y(I.error),N=setTimeout(()=>O(),3e3);return}if(!T.ok)throw new Error(ot(I,`Could not read the sandbox's changes (HTTP ${T.status}).`));y(null),u(I.preview),d(I.publishing),h(s2(I.preview.files)),A(P=>P||I.preview.suggested_branch||""),f(!1)}catch(T){U||(y(T.message),f(!1))}};return O(),()=>{U=!0,clearTimeout(N)}},[t,j]);let z=async()=>{E(!0),y(null);try{let U=u2({files:l?.files,selection:b,title:g,body:x,branch:w,message:k,update:s}),N=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(U)}),O=await X2(N);if(!N.ok)throw i2(O.code)&&X(D=>D+1),new Error(ot(O,`Could not publish (HTTP ${N.status}).`));i(O.pull_request)}catch(U){y(U.message)}finally{E(!1)}};return zt.default.createElement(GI,{sandbox:{repository:e.repository,repository_ref:e.sandbox?.repository_ref||e.checkout_ref||"its default branch"},preview:l,loading:p,error:m,publishing:c,pullRequest:r,selection:b,onToggle:U=>h(N=>l2(N,U)),fields:{title:g,body:x,branch:w,message:k,allowlist:""},onField:(U,N)=>({title:v,body:S,branch:A,message:_})[U]?.(N),allowlistApplied:!1,mode:s?"update":"create",submitting:C,onSubmit:z,onCancel:a,patchHref:(U,N)=>NR(e.id,U,N)})}var on=Z(J());var d2e={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},p2e={progress:"info",success:"success",error:"error",neutral:"muted"};function M3({project:e,busy:t,onAsk:r,onFixWithClaudeCode:n,onToggleAuto:o}){let a=e?.setup;if(!a)return null;let i=a.last_run,s=a.claude_code,l=s?.last_session;return on.default.createElement(Fe,{testId:"project-setup"},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement(Ve,null,"Setup"),on.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},on.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},on.default.createElement("input",{type:"checkbox",checked:a.auto!==!1,disabled:t,onChange:u=>o(u.target.checked)}),"Start it when a boot fails"))),s&&on.default.createElement("div",{"data-testid":"project-setup-claude-code",style:{marginTop:10}},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Claude Code"),!s.available&&!l&&on.default.createElement(Ee,{tone:"muted"},"not used"),l&&on.default.createElement(Ee,{tone:p2e[cs(l.status).tone]||"muted"},cs(l.status).label),m3(e)&&n&&on.default.createElement(ge,{size:"sm",variant:"primary",onClick:n,disabled:t,testId:"fix-with-claude-code",style:{marginLeft:"auto"}},"Fix the boot with Claude Code")),on.default.createElement("p",{"data-testid":"claude-code-status",style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},bR(e)),l?.id&&on.default.createElement("a",{href:nt(ds(l.id)),onClick:u=>{u.preventDefault(),dt(ds(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&&on.default.createElement(tx,{sandbox:{session_id:l.sandbox_session_id},readOnly:!0,focusSessionId:l.id,title:`Claude Code on ${s.failed_step||"the boot"}`})),on.default.createElement("div",{style:{marginTop:12}},on.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},on.default.createElement("span",{style:{fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},"Setup assistant"),!a.available&&on.default.createElement(Ee,{tone:"muted"},"unavailable"),i&&on.default.createElement(Ee,{tone:d2e[i.status]||"muted"},i.status.replace("_"," ")),on.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8,alignItems:"center"}},a.agent_id&&i&&on.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),wR(e)&&on.default.createElement(ge,{size:"sm",variant:m3(e)?"secondary":"primary",onClick:r,disabled:t,testId:"ask-setup-assistant"},"Ask the setup assistant"))),on.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},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."),on.default.createElement("p",{style:{margin:"4px 0 0",fontSize:12,color:"var(--color-text-muted)"}},"It reads the failed step's log, sets variables that are not secret, asks you for secrets, and retries the boot. It runs no commands and reads no files.")))}var QR="/settings?tab=integrations",f2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},m2e={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function Hs(e){return e.json().catch(()=>({}))}function I3({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,qe.useState)(null),[a,i]=(0,qe.useState)(null),[s,l]=(0,qe.useState)([]),[u,c]=(0,qe.useState)(()=>RQ(window.location.search)),[d,p]=(0,qe.useState)(!1),[f,m]=(0,qe.useState)(null),[y,b]=(0,qe.useState)(null),[h,g]=(0,qe.useState)(null),[v,x]=(0,qe.useState)(!1),[S,w]=(0,qe.useState)(null),[A,k]=(0,qe.useState)(null),[_,C]=(0,qe.useState)(null),E=(0,qe.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/boot`),ae=await Hs(M);if(!M.ok)throw new Error(ot(ae,`Could not load the project (HTTP ${M.status}).`));o(ae.project),i(ae)},[e]),j=(0,qe.useCallback)(async()=>{let M=await fetch(`/api/projects/${e}/secrets`),ae=await Hs(M);if(!M.ok)throw new Error(ot(ae,`Could not list the project's secrets (HTTP ${M.status}).`));l(ae.secrets||[])},[e]);(0,qe.useEffect)(()=>{E().catch(M=>m(M.message)),j().catch(M=>b(M.message))},[E,j]);let X=M=>{c(M),M!=="browser"&&p(!1);let{pathname:ae,search:F}=window.location;window.history.replaceState(window.history.state,"",`${ae}${eR(F,M)}`)},z=n?.sandbox_state==="failed",[U,N]=(0,qe.useState)(null);(0,qe.useEffect)(()=>{N(z?Date.now():null)},[z,n?.sandbox?.session_id]);let O=JQ(n),D=O||vR(n)||xR(n,U);(0,qe.useEffect)(()=>{if(!D)return;let M=setTimeout(()=>E().catch(ae=>m(ae.message)),HQ);return()=>clearTimeout(M)},[D,a,E]);let T=n?.sandbox?.session_id;wh("SandboxChannel",{session_id:T},M=>{Sh(M)&&E().catch(()=>{})},!!T);let I=async(M,{confirm:ae=!1,onDone:F}={})=>{x(!0),m(null);try{let se=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(ae?{confirm:!0}:{})}),oe=await Hs(se);if(se.status===409&&oe.code==="confirmation_required")return g({question:oe.confirmation,retry:()=>I(M,{confirm:!0,onDone:F})}),null;if(!se.ok)throw new Error(ot(oe,`The request failed (HTTP ${se.status}).`));return g(null),oe.project&&o(oe.project),await E(),F?.(oe),oe}catch(se){return m(se.message),null}finally{x(!1)}},P=()=>I(`/api/projects/${e}/run_evaluation`,{onDone:M=>{M.run&&w(M.run)}}),H=(M,ae)=>g({question:M,retry:ae}),G=async(M,ae,F="setup")=>{x(!0),m(null);try{let se=await fetch(`/api/projects/${e}/${F}`,{method:M,headers:{"Content-Type":"application/json"},body:JSON.stringify(ae||{})}),oe=await Hs(se);if(!se.ok)throw new Error(ot(oe,`The setup request failed (HTTP ${se.status}).`));oe.project&&o(oe.project),await E()}catch(se){m(se.message)}finally{x(!1)}},L=async()=>{m(null);let M=await fetch(`/api/projects/${e}/synced_agents`),ae=await Hs(M);if(!M.ok){m(ot(ae,`Could not list the checkout's agents (HTTP ${M.status}).`));return}k(ae.synced_agents||[])},Y=async M=>{x(!0);try{let ae=await fetch(`/api/projects/${e}/target`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(M)}),F=await Hs(ae);if(!ae.ok)throw new Error(ot(F,`Could not choose the agent (HTTP ${ae.status}).`));o(F.project),k(null)}catch(ae){m(ae.message)}finally{x(!1)}},W=async M=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({secrets:M})}),F=await Hs(ae);return ae.ok?(l(F.secrets||[]),!0):(b(ot(F,`Could not save the secrets (HTTP ${ae.status}).`)),!1)},ie=async(M,ae)=>{b(null);let F=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:ae})}),se=await Hs(F);if(!F.ok){let oe=ot(se,`Could not replace ${M} (HTTP ${F.status}).`);throw b(oe),new Error(oe)}await j()},Me=async M=>{b(null);let ae=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(M)}`,{method:"DELETE"});if(!ae.ok){b(ot(await Hs(ae),`Could not delete ${M} (HTTP ${ae.status}).`));return}await j()},pe=async()=>{b(null);let M=`repository=${encodeURIComponent(n.repository)}&project_id=${e}${n.default_ref?`&ref=${encodeURIComponent(n.default_ref)}`:""}`,ae=await fetch(`/api/projects/discover_secrets?${M}`),F=await Hs(ae);if(!ae.ok){b(ot(F,`Could not read the repository's environment variables (HTTP ${ae.status}).`));return}C(Fx(F.variables||[],s))},ce=async()=>{if(!await Jr({title:`Delete ${n.name}?`,message:"Its secrets, agent and evaluation are deleted, and its sandbox is stopped. This cannot be undone.",confirmLabel:"Delete project",danger:!0,requireText:n.name}))return;let M=await fetch(`/api/projects/${e}`,{method:"DELETE"});M.ok?r():m(ot(await Hs(M),`Could not delete the project (HTTP ${M.status}).`))};if(!n)return f?qe.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):qe.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let Q=a?.browser_modes||[],ee=tR(n,Q),$=M=>{M&&p(!0),X("browser")},B=n.target_agent,K=!B&&n.install_state==="installed";return qe.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},qe.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},qe.default.createElement("div",{style:{flex:1,minWidth:260}},qe.default.createElement(ge,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),qe.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),qe.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontFamily:V,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),qe.default.createElement(Ee,{tone:f2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),qe.default.createElement(Ee,{tone:U2[n.install_state==="installed"?"supported":"bootstrap"]},m2e[n.install_state]),qe.default.createElement(gn,{href:nt(QR),onClick:()=>dt(QR),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),qe.default.createElement("div",{style:{display:"flex",gap:8}},qe.default.createElement(ge,{onClick:()=>I(`/api/projects/${e}/boot`),disabled:v||O,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":O?"Booting\u2026":"Boot sandbox"),ee&&qe.default.createElement(ge,{onClick:()=>$(ee.watch),testId:"project-watch-live"},ee.label),qe.default.createElement(ge,{variant:"primary",onClick:()=>P(),disabled:v||!B,testId:"run-project-evaluation",title:B?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&qe.default.createElement(Fe,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},qe.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),qe.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},qe.default.createElement(ge,{variant:"primary",onClick:()=>{let{retry:M}=h;g(null),M?.()},disabled:v},"Run it on this machine"),qe.default.createElement(ge,{onClick:()=>g(null)},"Cancel"))),f&&qe.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),qe.default.createElement(us,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${E3(s).length})`},...Q.length>0||u==="browser"?[{value:"browser",label:n.sandbox?.browser?.status==="running"?"Browser \xB7 live":"Browser"}]:[],{value:"sessions",label:"Sessions"}],value:u,onChange:X}),u==="overview"&&qe.default.createElement(qe.default.Fragment,null,qe.default.createElement(y3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),qe.default.createElement(O3,{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(()=>{})}),qe.default.createElement(M3,{project:n,busy:v,onAsk:()=>G("POST"),onFixWithClaudeCode:()=>G("POST",null,"setup/claude_code"),onToggleAuto:M=>G("PATCH",{auto:M})}),qe.default.createElement(Fe,null,qe.default.createElement(Ve,null,"Agent under evaluation"),B&&qe.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},qe.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},B.name),qe.default.createElement(Ee,{tone:"accent"},B.kind==="app_assistant"?"App assistant":`synced agent ${B.synced_agent}`),qe.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/agents/${B.id}/edit`)},"Open agent"),n.evaluation&&qe.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&qe.default.createElement(ge,{size:"sm",onClick:L},"Change")),K&&!A&&qe.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.",qe.default.createElement("div",{style:{marginTop:8}},qe.default.createElement(ge,{size:"sm",onClick:L,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),A&&qe.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},A.length===0&&qe.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),A.map(M=>qe.default.createElement("li",{key:M.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},qe.default.createElement("span",{style:{fontFamily:V,fontSize:13}},M.tool),qe.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},M.description),qe.default.createElement(ge,{size:"sm",onClick:()=>Y({synced_agent:M.slug}),disabled:v},"Evaluate this agent")))),S&&qe.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":"","."," ",qe.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/evaluations/${S.evaluation_id}/runs/${S.id}`)},"Open run"))),B?.kind==="app_assistant"&&qe.default.createElement(h3,{project:n,onSaved:M=>{M&&o(M),E().catch(()=>{})},onConfirmationRequired:H}),qe.default.createElement(P3,{project:n,onProjectChanged:M=>o(ae=>ae&&M.install_state!==ae.install_state?M:ae),onConfirmationRequired:H}),qe.default.createElement("div",null,qe.default.createElement(ge,{variant:"danger",size:"sm",onClick:ce},"Delete project"))),u==="explorations"&&qe.default.createElement(T3,{projectId:e,project:n}),u==="browser"&&qe.default.createElement(v3,{project:n,modes:Q,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="sessions"&&qe.default.createElement(d3,{project:n}),u==="environment"&&qe.default.createElement(qe.default.Fragment,null,qe.default.createElement(x3,{secrets:E3(s),onReplace:ie,onDelete:Me,error:y}),_?qe.default.createElement(Fe,null,qe.default.createElement(Ve,null,"Add secrets"),qe.default.createElement("div",{style:{marginTop:8}},qe.default.createElement(Hx,{rows:_,onChange:C,repository:n.repository})),qe.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},qe.default.createElement(ge,{variant:"primary",disabled:!!Ah(_)||Ux(_).length===0,onClick:async()=>{await W(Ux(_))&&C(null)}},"Save secrets"),qe.default.createElement(ge,{onClick:()=>C(null)},"Cancel"),Ah(_)&&qe.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Ah(_)))):qe.default.createElement("div",null,qe.default.createElement(ge,{size:"sm",onClick:pe},"Add secrets"))))}var ua=Z(J());var g2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function D3({projects:e,onOpen:t,onNew:r}){return ua.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-list"},ua.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},ua.default.createElement("div",{style:{flex:1}},ua.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Projects"),ua.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.")),ua.default.createElement(ge,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&ua.default.createElement(Fe,null,ua.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=>ua.default.createElement(Fe,{key:n.id,padding:14,testId:`project-${n.id}`},ua.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:10,alignItems:"center",width:"100%",flexWrap:"wrap"}},ua.default.createElement("span",{style:{fontSize:15,fontWeight:600,color:"var(--color-text-primary)"}},n.name),ua.default.createElement("span",{style:{fontFamily:V,fontSize:12,color:"var(--color-text-muted)"}},n.repository),ua.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},ua.default.createElement(Ee,{tone:g2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),n.target_agent&&ua.default.createElement(Ee,{tone:"accent"},n.target_agent.kind==="app_assistant"?"App assistant":n.target_agent.synced_agent))))))}function j3({visit:e=0}){let[t,r]=(0,ca.useState)(()=>Wx(Vn())),[n,o]=(0,ca.useState)(null),[a,i]=(0,ca.useState)(null);(0,ca.useEffect)(()=>{r(Wx(Vn()))},[e]),(0,ca.useEffect)(()=>{let u=()=>r(Wx(Vn()));return window.addEventListener("popstate",u),window.addEventListener("dashboard:navigate",u),()=>{window.removeEventListener("popstate",u),window.removeEventListener("dashboard:navigate",u)}},[]);let s=(0,ca.useCallback)(async()=>{try{let u=await fetch("/api/projects"),c=await u.json().catch(()=>({}));if(!u.ok)throw new Error(ot(c,`Could not list projects (HTTP ${u.status}).`));o(c.projects||[])}catch(u){i(u.message)}},[]);(0,ca.useEffect)(()=>{!t.creating&&!t.projectId&&s()},[t,s]);let l=u=>{Qc(u),r(Wx(u))};return t.creating?ca.default.createElement(c3,{onCreated:u=>l(uf(u.id)),onCancel:()=>l("/projects")}):t.projectId?ca.default.createElement(I3,{key:t.projectId,projectId:t.projectId,onBack:()=>l("/projects"),onDeleted:()=>l("/projects")}):a?ca.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},a):n?ca.default.createElement(D3,{projects:n,onOpen:u=>l(uf(u.id)),onNew:()=>l(uf(null))}):ca.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var qr=Z(J());function $3({visit:e=0}){let[t,r]=(0,qr.useState)(()=>Y2(Vn())),[n,o]=(0,qr.useState)(null),[a,i]=(0,qr.useState)(null),[s,l]=(0,qr.useState)(null);(0,qr.useEffect)(()=>{r(Y2(Vn()))},[e]),(0,qr.useEffect)(()=>{let c=()=>r(Y2(Vn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,qr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(ot(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,qr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},qr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?qr.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(uf(c.id)),style:{padding:0}},"\u2190 ",c.name):qr.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&qr.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>dt(`/evaluations/${d.id}`)},"Open ",d.name)),qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),qr.default.createElement(mf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return qr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},qr.default.createElement("div",null,qr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),qr.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Questions found by walking an app, waiting to be reviewed and accepted into an evaluation.")),s&&qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&qr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&qr.default.createElement(Fe,null,qr.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-secondary)"}},"No explorations yet. An agent that explores a project's app submits what it found with the explorations_submit MCP tool.")),n?.length>0&&qr.default.createElement(pf,{explorations:n,onOpen:c=>dt(G2(c.id))}))}var vt=Z(J());var ye=Z(J());var Za=Z(J());var L3=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?V:void 0}),RR={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},eee=e=>typeof e=="string"?e:void 0;function yn({label:e,value:t,onChange:r,placeholder:n,mono:o=!1,multiline:a=!1,rows:i=3,testId:s}){let l=(0,Za.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":eee(e),"data-testid":s};return Za.default.createElement("div",{style:RR},Za.default.createElement("label",{htmlFor:l},e),a?Za.default.createElement("textarea",{...u,rows:i,style:{...L3(o),resize:"vertical"}}):Za.default.createElement("input",{...u,style:L3(o)}))}function cd({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,Za.useId)();return Za.default.createElement("div",{style:RR},Za.default.createElement("label",{htmlFor:a},e),Za.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":eee(e),style:L3(!1),"data-testid":o},n))}function Kx({label:e,checked:t,onChange:r}){return Za.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},Za.default.createElement("input",{type:"checkbox",checked:t,onChange:n=>r(n.target.checked)}),e)}function da({tone:e="info",children:t}){let r=e==="error";return Za.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 Gn(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 tee(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var h2e=["collections","generate","import"],y2e=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function z3(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 ree({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!h2e.includes(e)?"/scenarios":`/scenarios/${e}`}function B3(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 Z2(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function nee(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 oee(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:Z2(e.tools),contains:Z2(e.contains),not_contains:Z2(e.notContains)},tags:Z2(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function aee(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 iee(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 v2e=["create","update","remove","keep"],x2e={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function see(e){let t=e?.changes||[];return v2e.map(r=>({action:r,label:x2e[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function lee(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 uee(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function cee(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function F3({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,b]=(0,ye.useState)(!1),[h,g]=(0,ye.useState)(!1),v=`/api/scenario_catalogs/${e}`,x=(0,ye.useCallback)(async()=>{try{let E=await Gn(v,{fallback:"Could not open the collection"});l(E.catalog),c(null)}catch(E){c(E.message)}},[v]);(0,ye.useEffect)(()=>{x()},[x]);let S=async(E,j,X,z)=>{let U=await Gn(`${v}${E}`,{method:j,body:X,fallback:z});return U.catalog?l(U.catalog):await x(),a?.(),U},w=async E=>{c(null),p(null);try{await E()}catch(j){c(j.message)}},A=f.productIds.length+f.setIds.length+f.scenarioIds.length,k=(E,j)=>m(X=>({...X,[E]:cee(X[E],j)})),_=E=>w(async()=>{let j=await tee(B3(e,E,{inline:!0})),X=await n2(j);p(X?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(B3(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(ge,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ye.default.createElement(b2e,{collection:s,onCancel:()=>b(!1),onSave:async E=>{await S("","PATCH",{catalog:E},"Could not save the collection"),b(!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(ge,{size:"sm",variant:"ghost",onClick:()=>b(!0)},"Rename"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>_({})},"Copy YAML"),n&&ye.default.createElement(ge,{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(ge,{size:"sm",variant:"danger",onClick:()=>w(async()=>{await Jr({title:`Delete the collection ${s.key}?`,message:"Its products, sets and scenarios are deleted. The evaluations its sets became stay, with their runs.",confirmLabel:"Delete collection",danger:!0,requireText:s.key})&&(await Gn(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ye.default.createElement(da,{tone:"error"},u),d&&ye.default.createElement(da,null,d),A>0&&ye.default.createElement(Fe,{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)"}},A," selected"),ye.default.createElement(ge,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>_(f)},"Copy YAML"),ye.default.createElement(ge,{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(Fe,{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(w2e,{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(pee,{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(ge,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ye.default.createElement(da,{tone:"error"},u):ye.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function b2e({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(J2,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ye.default.createElement(yn,{label:"Name",value:n,onChange:o}),ye.default.createElement(yn,{label:"Description",value:a,onChange:i}))}function w2e({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(Fe,{testId:"scenarios-product"},u?ye.default.createElement(pee,{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(ge,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ye.default.createElement(ge,{size:"sm",variant:"danger",onClick:()=>s(async()=>{await Jr({title:`Delete product ${e.key}?`,message:`Its ${e.set_count} sets and their scenarios are deleted.`,confirmLabel:"Delete product",danger:!0})&&await i(f,"DELETE",void 0,"Could not delete the product")})},"Delete"))),ye.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>ye.default.createElement(S2e,{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(fee,{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(ge,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function S2e({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),b=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,g]=(0,ye.useState)(b),v=`/sets/${e.id}`,x=()=>l(async()=>{let[S,w]=h.split(":"),A=S==="project"?{project_id:Number(w)}:S==="agent"?{agent_id:Number(w)}:{},k=await Gn(`/api/scenario_catalogs/${r.id}${v}/run`,{method:"POST",body:A,fallback:"The run could not start"});u(`Run #${k.run.id} of ${e.name} started; it shows under Evaluations as ${k.evaluation.name}.`)});return ye.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?ye.default.createElement(fee,{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(Ee,null,`judge ${e.judge.kind}`),e.evaluation&&ye.default.createElement("a",{href:"#",style:{fontSize:12},onClick:S=>{S.preventDefault(),dt(`/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(ge,{size:"sm",onClick:x,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>d(S=>!S)},c?"Hide":"Scenarios"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),ye.default.createElement(ge,{size:"sm",variant:"danger",onClick:()=>l(async()=>{await Jr({title:`Delete set ${e.key}?`,message:`Its ${e.scenario_count} scenarios are deleted. Its evaluation stays.`,confirmLabel:"Delete set",danger:!0})&&await s(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(dee,{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(k2e,{key:S.id,scenario:S,selected:a.scenarioIds.includes(S.id),onToggle:()=>i("scenarioIds",S.id),onEdit:()=>y(S.id),onDelete:()=>l(async()=>{await Jr({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(dee,{onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios`,"POST",S,"Could not add the scenario"),y(null)}}):ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function k2e({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=iee(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:V}},a)),ye.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>ye.default.createElement(Ee,{key:i},i)),e.production_only&&ye.default.createElement(Ee,{tone:"warning"},"production only"),!e.enabled&&ye.default.createElement(Ee,null,"disabled"))),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:n},"Edit"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function J2({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(da,{tone:"error"},s),ye.default.createElement("div",{style:{display:"flex",gap:8}},ye.default.createElement(ge,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ye.default.createElement(ge,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function pee({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(J2,{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(yn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ye.default.createElement(yn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(cd,{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(cd,{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(yn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function fee({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(J2,{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(yn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ye.default.createElement(yn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ye.default.createElement(cd,{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(yn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function dee({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ye.useState)(()=>nee(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ye.default.createElement(J2,{onCancel:r,onSave:()=>t(oee(n)),problem:aee(n),testId:"scenarios-scenario-form"},ye.default.createElement(yn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ye.default.createElement(yn,{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(yn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ye.default.createElement(yn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ye.default.createElement(yn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ye.default.createElement(yn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ye.default.createElement(yn,{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(Kx,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ye.default.createElement(Kx,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Et=Z(J());function U3({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,b]=(0,Et.useState)({collectionId:"",setId:""}),[h,g]=(0,Et.useState)(null),[v,x]=(0,Et.useState)(null),S=(0,Et.useCallback)(async()=>{if(n)try{let[E,j,X,z]=await Promise.all([Gn(`/api/projects/${n}`,{fallback:"Could not load the project"}),Gn("/api/projects/capabilities").catch(()=>({})),Gn("/api/sandboxes").catch(()=>({})),Gn(`/api/explorations?project_id=${n}`,{fallback:"Could not list the project's explorations"})]),U=E.project;i(U),l((j.items||[]).find(O=>O.key==="model_credentials")||null);let N=U?.sandbox?.session_id;c({sandbox:(X.sandboxes||[]).find(O=>O.session_id===N)||null,modes:X.browser_modes||[]}),p(z.explorations||[]),x(null)}catch(E){x(E.message)}},[n]);(0,Et.useEffect)(()=>{i(null),m(null),S()},[S]),(0,Et.useEffect)(()=>{if(!y.collectionId){g(null);return}Gn(`/api/scenario_catalogs/${y.collectionId}`).then(E=>g(E.catalog)).catch(E=>x(E.message))},[y.collectionId]);let w=(h?.products||[]).flatMap(E=>(E.sets||[]).map(j=>({...j,product:E}))),A=w.find(E=>String(E.id)===String(y.setId)),k=async()=>{try{let j=(await Gn("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,X=await Gn(`/api/scenario_catalogs/${j}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),z=await Gn(`/api/scenario_catalogs/${j}/products/${X.product.id}/sets`,{method:"POST",body:{set:{name:"Explored",key:"explored",judge:{kind:"llm"}}},fallback:"Could not add the set"});r?.(),b({collectionId:String(j),setId:String(z.set.id)})}catch(E){x(E.message)}},_=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(Fe,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(cd,{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(),dt("/projects/new")}},"Create one")," from a repository first."))),v&&Et.default.createElement(da,{tone:"error"},v),a&&Et.default.createElement(Et.default.Fragment,null,s&&!s.ok&&Et.default.createElement(da,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Et.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),dt("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!_&&Et.default.createElement(da,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(),dt(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Et.default.createElement(qx,{projectId:a.id,sandboxReady:_,onStarted:E=>{m(E.id),S()}}),_&&u.sandbox&&u.modes.length>0&&Et.default.createElement(Zr,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Et.default.createElement(cf,{sandbox:u.sandbox,modes:u.modes})),Et.default.createElement(Zr,{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(cd,{label:"Collection",value:y.collectionId,onChange:E=>b({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(cd,{label:"Set",value:y.setId,onChange:E=>b(j=>({...j,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(ge,{size:"sm",variant:"ghost",onClick:k},"New collection for ",a.name))),d.length===0?Et.default.createElement(Fe,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(pf,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!A&&Et.default.createElement(da,null,"Choose the set to accept into, above."),Et.default.createElement(mf,{key:`${C}-${A?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:A?{id:A.id,label:`${A.product.name} / ${A.name}`}:null,onAccepted:()=>r?.()}))))}var qt=Z(J());var _2e=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],C2e=`catalog: support_desk + 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 qe=Z(J());var e2e=/^[A-Za-z_][A-Za-z0-9_]*$/,t2e=/^(?:PORT|DATABASE_URL|RUBYOPT|RUBYLIB|LD_PRELOAD|PATH|NODE_OPTIONS)$|_DATABASE_URL$|^ACTION_AGENT_SANDBOX_|^DYLD_|^BUNDLE_|^GIT_/,r2e={OPENAI_API_KEY:"openai",ANTHROPIC_API_KEY:"anthropic",OPENROUTER_API_KEY:"openrouter"},n2e=["sk_live_","rk_live_"],uR=8,cR=2e3;function tA(e){return e?e2e.test(e)?t2e.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 rA(e,t){let r=[],n=typeof t=="string"?t:"";return n2e.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||r2e[n.name]||null,set:r.has(n.name)||!!n.set,value:"",useOrganizationKey:!1,consent:!1}))}function dR(e,t){return[...e,...R0([{name:t}])]}function pR({name:e,edited:t,fullName:r}){return t?e:r}function eb(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 Dh(e){for(let t of e){let r=tA(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 fR({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 y3(e){return/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(e||"")}function o2e(e){return(e?.items||[]).filter(t=>t.blocking&&!t.ok)}function mR({capabilities:e,preflight:t,secretsProblem:r}={}){if(!e)return"Checking what this dashboard can do\u2026";let n=o2e(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 nA={supported:"success",bootstrap:"info",unsupported:"error"};function gR(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 hR(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 yR={succeeded:"success",failed:"error",running:"info",skipped:"muted",pending:"muted"};function vR(e){return e?.sandbox_state==="booting"}function gf(e){return e==null?"/projects/new":`/projects/${e}`}function tb(e=""){if(/^\/projects\/new\/?$/.test(e))return{creating:!0};let t=e.match(/^\/projects\/(\d+)/);return t?{projectId:t[1]}:{}}var xR=["overview","explorations","environment","browser","sessions"];function bR(e=""){let t=new URLSearchParams(e).get("tab");return xR.includes(t)?t:"overview"}function wR(e="",t="overview"){let r=new URLSearchParams(e);t==="overview"||!xR.includes(t)?r.delete("tab"):r.set("tab",t);let n=r.toString();return n?`?${n}`:""}function oA(e){if(!e?.project?.id)return null;let t=gf(e.project.id);return e.browser?.status==="running"?`${t}?tab=browser`:t}function SR(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 Tn=Z(J());function hf({sandbox:e,modes:t,watchOnOpen:r=!1,onChange:n}){let{darkMode:o}=ut(),[a,i]=(0,Tn.useState)(e.browser||null),[s,l]=(0,Tn.useState)(!1),[u,c]=(0,Tn.useState)(null),[d,p]=(0,Tn.useState)(null),f=`/api/sandboxes/${encodeURIComponent(e.session_id)}/browser`;(0,Tn.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||nt(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(OX({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=NX(a),w=TX(a),_=a?.status==="running";return Tn.default.createElement("div",{className:`mt-2 p-3 rounded-lg border space-y-3 ${v}`},Tn.default.createElement("div",{className:"flex flex-wrap items-center justify-between gap-2"},Tn.default.createElement("div",{className:"flex items-center gap-2"},Tn.default.createElement("p",{className:`text-sm font-medium ${g}`},"Browser"),S&&Tn.default.createElement(Bs,{tone:S.tone},S.label)),w?Tn.default.createElement("button",{type:"button",onClick:x,disabled:u!==null,className:b},u==="stop"?"Stopping\u2026":"Stop browser"):Tn.default.createElement("div",{className:"flex items-center gap-3"},t.includes("headed")&&Tn.default.createElement("label",{className:`flex items-center gap-1 text-xs ${h}`},Tn.default.createElement("input",{type:"checkbox",checked:s,onChange:k=>l(k.target.checked),disabled:u!==null}),"Open a window on this machine"),Tn.default.createElement("button",{type:"button",onClick:y,disabled:u!==null,className:b},u==="start"?"Starting\u2026":"Start browser"))),d&&Tn.default.createElement("p",{className:`text-xs ${o?"text-red-400":"text-red-600"}`,role:"alert"},d),!w&&!d&&Tn.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&&Tn.default.createElement("p",{className:`text-xs ${h}`},"Runs against this sandbox reach it as ",Tn.default.createElement("code",{className:"font-mono"},a.server_key),"."),_&&a.live_url&&Tn.default.createElement(h0,{key:a.started_at,sessionId:e.session_id,headed:a.mode==="headed",watchOnOpen:r}),_&&!a.live_url&&Tn.default.createElement("p",{className:`text-xs ${h}`},"This browser has no live view to watch."))}var tr=Z(J());var sn=Z(J());function kR(e,t=""){let r=t.toLowerCase();return(e||[]).filter(n=>n.full_name.toLowerCase().includes(r))}function aA(e,t){let r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r}var _R={loading:"Loading repositories\u2026",not_configured:"GitHub is not configured on this dashboard.",not_connected:"Connect GitHub to pick a repository.",reconnect_required:"GitHub rejected the stored token. Reconnect GitHub to list repositories again.",pending_approval:"The GitHub installation is waiting for an owner of the account to approve it. Check again once it is approved.",empty:"This GitHub connection reaches no repositories yet."};function yf({repositories:e,selection:t,onToggle:r,filter:n,onFilterChange:o,mode:a="multiple",selected:i=null,onSelect:s,state:l="ready",settingsHref:u,missingRepositoryUrl:c,onRefresh:d,onTypeName: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"}`,_=kR(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(),y3(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:!y3(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}`},_R[l]||_R.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 CR={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 AR(e){let t=e.account_type==="Organization"?"organization":"user";return`@${e.account_login} \xB7 ${t}`}function iA(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 ER(e){let t=e||[];if(t.length===0)return{text:null,active:0};let r=t.filter(a=>iA(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 NR(e,t){let r=new Map;return(t||[]).forEach(n=>{iA(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 TR(e){return e.source==="app"?`GitHub App (@${e.installation.account_login})`:"OAuth"}function OR(e){return/^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})$/.test(e)}function PR(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 v3({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 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&&!OR(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.");PR(document,D.url,D.manifest)}catch(T){r(T.message),b(!1)}};if(!e.configured)return tr.default.createElement("div",{className:"p-3 rounded-lg space-y-2",style:_},tr.default.createElement("p",{className:`text-sm font-medium ${w}`},"Use a GitHub App"),tr.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."),tr.default.createElement("div",{className:"flex items-center gap-2"},tr.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"}`}),tr.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 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 ${w}`},"GitHub App"),tr.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.")),tr.default.createElement("a",{href:et("/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&&tr.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=iA(j),D=j.repositories||[];return tr.default.createElement("div",{key:j.id,className:"p-3 rounded-lg space-y-2",style:_},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 ${w}`},AR(j)),tr.default.createElement("p",{className:`text-xs ${T?C[T.tone]:S}`},T?T.label:`${D.length} selected for sandboxes`)),tr.default.createElement("div",{className:"flex items-center gap-2 shrink-0"},a===j.id?tr.default.createElement(tr.default.Fragment,null,tr.default.createElement("button",{type:"button",onClick:Q,className:k},"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,T?tr.default.createElement("button",{type:"button",onClick:()=>I(j),disabled:y===j.id,className:`${k} disabled:opacity-50`},y===j.id?"Checking\u2026":"Check again"):tr.default.createElement("button",{type:"button",onClick:()=>E(j),className:k},"Choose repositories"),j.settings_url&&tr.default.createElement("a",{href:j.settings_url,target:"_blank",rel:"noreferrer",className:k},"Access on GitHub"),tr.default.createElement("button",{type:"button",onClick:()=>F(j),className:A},"Unlink")))),a===j.id&&s&&tr.default.createElement(yf,{repositories:s,selection:u,onToggle:M=>c(q=>aA(q,M)),filter:d,onFilterChange:p}))}))}var i2e={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 x3({callbackStatus:e,appCallbackStatus:t,refreshKey:r}){let{darkMode:n}=ut(),[o,a]=(0,qe.useState)(null),[i,s]=(0,qe.useState)(null),[l,u]=(0,qe.useState)(new Set),[c,d]=(0,qe.useState)(""),[p,f]=(0,qe.useState)(!1),[m,y]=(0,qe.useState)(null),[x,h]=(0,qe.useState)(i2e[e]||CR[t]||null),[g,v]=(0,qe.useState)([]),[b,S]=(0,qe.useState)(null),[w,_]=(0,qe.useState)({}),[k,A]=(0,qe.useState)(null),[C,E]=(0,qe.useState)(null),[I,Q]=(0,qe.useState)(0),[$,F]=(0,qe.useState)({}),N=(0,qe.useRef)({}),O=(0,qe.useCallback)(async()=>{try{let pe=await fetch("/api/github_connection");if(!pe.ok)throw new Error("status failed");let ue=await pe.json();a(ue),u(new Set((ue.connection?.repositories||[]).map(Ze=>Ze.full_name)))}catch{y("Could not load the GitHub connection. Are you signed in?")}},[]);(0,qe.useEffect)(()=>{O()},[O]);let j=(0,qe.useCallback)(async()=>{try{let pe=await fetch("/api/sandboxes?sandbox_type=app_runtime"),ue=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(nt(ue,`Could not list your sandboxes (HTTP ${pe.status}).`));v(ue.sandboxes||[]),S({codeSessions:!!ue.code_sessions_supported,claudeCode:{...JC(ue),sandboxes:ue.claude_code_sandboxes||[]},codex:QC(ue),pullRequests:ue.pull_requests_supported===!0,browserModes:Array.isArray(ue.browser_modes)?ue.browser_modes:[]})}catch(pe){y(pe.message)}},[]),T=o!==null,D=!!o?.connected;(0,qe.useEffect)(()=>{T&&j()},[T,D,j,r]);let M=g.filter(pe=>YC(pe)&&!$[pe.session_id]?.stopped).map(pe=>pe.session_id).join(" ");(0,qe.useEffect)(()=>{if(!M)return;let pe=!1,ue=setTimeout(async()=>{let Ze=await Promise.all(M.split(" ").map(async tt=>{try{let _t=await fetch(`/api/sandboxes/${encodeURIComponent(tt)}`);if(_t.status===404)return{id:tt,gone:!0};let Ut=await _t.json().catch(()=>({}));return _t.ok?{id:tt,sandbox:Ut.sandbox||null}:{id:tt,status:_t.status,error:nt(Ut,`Could not check on this sandbox (HTTP ${_t.status}).`)}}catch{return{id:tt,status:null,error:"Could not reach the dashboard to check on this sandbox."}}}));if(pe)return;let Je={};Ze.forEach(({id:tt,status:_t,error:Ut})=>{if(!Ut){delete N.current[tt],Je[tt]=null;return}let tn=(N.current[tt]||0)+1;N.current[tt]=tn,Je[tt]={message:Ut,stopped:KC(_t,tn)}}),F(tt=>Object.entries(Je).reduce((_t,[Ut,tn])=>{if(tn)return{..._t,[Ut]:tn};if(!(Ut in _t))return _t;let{[Ut]:Po,...ys}=_t;return ys},tt)),v(tt=>Ze.reduce((_t,Ut)=>Ut.gone?_t.filter(tn=>tn.session_id!==Ut.id):Ut.sandbox?CY(_t,Ut.sandbox,"session_id"):_t,tt)),Q(tt=>tt+1)},2e3);return()=>{pe=!0,clearTimeout(ue)}},[M,I]);let q=pe=>{delete N.current[pe],F(ue=>{let{[pe]:Ze,...Je}=ue;return Je})},V=(pe,ue)=>{_(Ze=>({...Ze,[pe]:ue}))},L=async()=>{y(null);try{let pe=await fetch("/api/github_connection/repositories"),ue=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(ue.error||"Could not list repositories.");s(ue.repositories||[])}catch(pe){y(pe.message)}},G=pe=>{u(ue=>aA(ue,pe))},W=async()=>{f(!0),y(null);try{let pe=await fetch("/api/github_connection",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({repositories:[...l]})}),ue=await pe.json().catch(()=>({}));if(!pe.ok)throw new Error(ue.error||"Could not save the selection.");a(Ze=>({...Ze,connection:ue.connection})),s(null),h({tone:"success",text:"Repository selection saved."})}catch(pe){y(pe.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.")}},Me=async pe=>{A(pe),V(pe,null);try{let ue=await fetch("/api/sandboxes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sandbox_type:"app_runtime",repository:pe})}),Ze=await ue.json().catch(()=>({}));if(!ue.ok)throw new Error(nt(Ze,`Could not start the sandbox (HTTP ${ue.status}).`));v(Je=>Qc(Je,Ze.sandbox,"session_id"))}catch(ue){V(pe,ue.message)}finally{A(null)}},he=async pe=>{if(!(pe.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(pe.session_id),V(pe.repository,null);try{let ue=await fetch(`/api/sandboxes/${encodeURIComponent(pe.session_id)}`,{method:"DELETE"}),Ze=await ue.json().catch(()=>({}));if(!ue.ok&&ue.status!==404)throw new Error(nt(Ze,`Could not stop the sandbox (HTTP ${ue.status}).`));v(Je=>Je.filter(tt=>tt.session_id!==pe.session_id)),q(pe.session_id)}catch(ue){V(pe.repository,ue.message)}finally{E(null)}}},ce=n?"text-gray-400":"text-gray-500",R=n?"text-white":"text-gray-900",te={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"}`,ee=o?.connection,U=ee?.repositories||[],P=o?.app?.configured?o.app.installations||[]:[],Y=NR(ee,P),{byRepository:B,others:se}=EY(g,Y.map(pe=>pe.full_name)),ne=P.length>0,ye=ER(P),at=n?"text-red-400":"text-red-600",it=(pe,{standalone:ue=!1}={})=>{let{label:Ze,tone:Je}=bY(pe.status),tt=YC(pe),_t=wY(pe),Ut=_t?xY(pe.expires_at):null,tn=tt?$[pe.session_id]:null;return qe.default.createElement("div",{key:pe.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?te:void 0},qe.default.createElement("div",{className:"flex items-center justify-between gap-3"},qe.default.createElement("div",{className:"flex items-center gap-2 min-w-0 text-xs"},qe.default.createElement(Bs,{tone:Je},Ze),qe.default.createElement("span",{className:`font-mono truncate ${ce}`},ue?pe.repository:"","@",pe.repository_ref),Ut&&qe.default.createElement("span",{className:`shrink-0 ${ce}`},"\xB7 ",Ut),oA(pe)&&qe.default.createElement("a",{href:et(oA(pe)),onClick:Po=>{Po.preventDefault(),lt(oA(pe))},className:`shrink-0 truncate hover:underline ${n?"text-blue-300":"text-blue-600"}`,"data-testid":"sandbox-project-link",title:pe.browser?.status==="running"?"Open the project's page on its browser":"Open the project's page"},"\xB7 ",pe.project.name," \u2192")),qe.default.createElement("button",{onClick:()=>he(pe),disabled:C===pe.session_id,className:`shrink-0 px-3 py-1 text-sm rounded disabled:opacity-50 ${n?"text-red-300 hover:bg-red-900/40":"text-red-600 hover:bg-red-50"}`},C===pe.session_id?"Stopping\u2026":pe.status==="failed"?"Dismiss":"Stop")),tt&&!tn?.stopped&&qe.default.createElement("p",{className:`text-xs ${ce}`},"Checking out the repository and booting its app; this can take a few minutes."),tn&&qe.default.createElement("p",{className:`text-xs ${at}`},tn.message," ",tn.stopped?qe.default.createElement(qe.default.Fragment,null,"Stopped checking; its status above may be out of date."," ",qe.default.createElement("button",{type:"button",onClick:()=>q(pe.session_id),className:"underline"},"Retry")):"Trying again\u2026"),pe.error_message&&qe.default.createElement("pre",{className:`p-2 rounded text-xs font-mono whitespace-pre-wrap break-words max-h-48 overflow-y-auto border ${n?"bg-red-900/20 border-red-800 text-red-300":"bg-red-50 border-red-200 text-red-700"}`},pe.error_message),pe.runtime_server_key&&qe.default.createElement("p",{className:`text-xs ${ce}`},"Enable ",qe.default.createElement("code",{className:"font-mono"},pe.runtime_server_key)," in an agent's Tools tab to run it, or evaluate it, with this checkout's tools."),_t&&b?.codeSessions&&qe.default.createElement(m0,{sandbox:pe,claudeCode:b.claudeCode?.mode==="sandbox_login"?{...b.claudeCode,connected:!!b.claudeCode.sandboxes.find(Po=>Po.session_id===pe.session_id)?.credential_mode}:b.claudeCode,codex:b.codex,onRecheckConnection:j}),_t&&b&&!b.codeSessions&&qe.default.createElement("p",{className:`text-xs ${ce}`},"The configured sandbox backend cannot run Claude Code sessions."),_t&&b?.pullRequests&&qe.default.createElement(j0,{sandbox:pe}),_t&&b?.browserModes.length>0&&qe.default.createElement(hf,{sandbox:pe,modes:b.browserModes}))};return qe.default.createElement("div",{className:"space-y-4"},qe.default.createElement("div",{className:"flex items-center justify-between"},qe.default.createElement("div",{className:"flex items-center space-x-3"},qe.default.createElement("span",{className:"text-xl"},"\u{1F419}"),qe.default.createElement("div",null,qe.default.createElement("p",{className:`font-medium ${R}`},"GitHub"),qe.default.createElement("p",{className:`text-sm ${o?.connected||ye.active>0?n?"text-green-400":"text-green-600":ce}`},o?[o.connected?`Connected as @${ee.login}`:null,ye.text].filter(Boolean).join(" \xB7 ")||"Not connected":"Loading\u2026"))),o?.connected?qe.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?qe.default.createElement("a",{href:et("/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&&qe.default.createElement("p",{className:`text-sm ${ce}`},"The operator has not configured a GitHub OAuth app. Set ",qe.default.createElement("code",null,"ActionAgent.github_client_id")," and"," ",qe.default.createElement("code",null,"github_client_secret")," (or ",qe.default.createElement("code",null,"GITHUB_CLIENT_ID")," / ",qe.default.createElement("code",null,"GITHUB_CLIENT_SECRET"),") and register"," ",qe.default.createElement("code",null,et("/api/github_connection/callback"))," as its callback URL."),x&&qe.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&&qe.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),qe.default.createElement(v3,{app:o?.app,onChanged:O,onError:y,onNotice:h}),o?.connected&&qe.default.createElement("div",{className:"space-y-3"},qe.default.createElement("div",{className:"flex items-center justify-between"},qe.default.createElement("div",null,qe.default.createElement("p",{className:`text-sm font-medium ${R}`},"OAuth connection"),qe.default.createElement("p",{className:`text-xs ${ce}`},U.length," selected for sandboxes, cloned with @",ee.login,"'s token.")),i?qe.default.createElement("div",{className:"flex items-center space-x-2"},qe.default.createElement("button",{onClick:()=>{s(null),u(new Set(U.map(pe=>pe.full_name)))},className:z},"Cancel"),qe.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})`)):qe.default.createElement("button",{onClick:L,className:z},"Choose repositories")),i&&qe.default.createElement(yf,{repositories:i,selection:l,onToggle:G,filter:c,onFilterChange:d})),(o?.connected||ne)&&!i&&qe.default.createElement("div",{className:"space-y-3"},qe.default.createElement("p",{className:`text-sm font-medium ${R}`},"Available repositories"),Y.length===0?qe.default.createElement("p",{className:`text-sm ${ce}`},"No repositories selected yet. Selected repositories can be checked out into sandboxes."):qe.default.createElement("div",{className:"space-y-2"},Y.map(pe=>{let ue=B[pe.full_name]||[],Ze=ue.some(YC),Je=o.app?.configured?` \xB7 via ${TR(pe)}`:"";return qe.default.createElement("div",{key:pe.full_name,className:"p-3 rounded-lg",style:te},qe.default.createElement("div",{className:"flex items-center justify-between"},qe.default.createElement("div",null,qe.default.createElement("p",{className:`text-sm font-mono ${R}`},pe.full_name),qe.default.createElement("p",{className:`text-xs ${ce}`},pe.private?"private":"public"," \xB7 ",pe.default_branch,Je)),qe.default.createElement("button",{onClick:()=>Me(pe.full_name),disabled:k===pe.full_name||Ze,className:`${z} disabled:opacity-50`},k===pe.full_name?"Starting\u2026":Ze?"Booting\u2026":"Start sandbox")),w[pe.full_name]&&qe.default.createElement("p",{className:`mt-2 text-xs ${at}`},w[pe.full_name]),ue.map(tt=>it(tt)))}))),!i&&se.length>0&&qe.default.createElement("div",{className:"space-y-2"},qe.default.createElement("p",{className:`text-sm font-medium ${R}`},D||ne?"Other sandboxes":"Checkout sandboxes"),qe.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(pe=>qe.default.createElement(qe.default.Fragment,{key:pe.session_id},w[pe.repository]&&qe.default.createElement("p",{className:`text-xs ${at}`},w[pe.repository]),it(pe,{standalone:!0})))))}var Mt=Z(J());var b3="claude_code";function w3({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===b3)||{configured:!1}),a(JC(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:b3,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/${b3}`,{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=FY(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:LY,"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:zY,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:BY,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(Xp,{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:et("/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 S3({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(QC(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=HY(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 MR=Z(J());var xn=Z(J());function k3({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 _3({onChange:e}){return MR.default.createElement(k3,{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 l2e(){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 C3({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)(l2e),[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(Q2("/api/provider_keys",o))]);if(!T.ok||!D.ok)throw new Error("Failed to load keys");let M=await T.json(),q=await D.json();f(M.api_keys||[]),y(q.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=R2({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(Q0,{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(x3,{callbackStatus:i,appCallbackStatus:s,refreshKey:c})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(w3,{onChange:()=>d(T=>T+1)})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(S3,{onChange:()=>d(T=>T+1)})),Oe.default.createElement("div",{className:"border rounded-lg p-6",style:O},Oe.default.createElement(_3,{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 Ye=Z(J());var u2e=[{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."}],A3={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"},Hs={color:"var(--color-text-muted)",fontSize:12};function IR(e){let t=e.latest_run?.path||e.path||"";return/^\/evaluations(?:\/\d+\/runs\/\d+\/report)?$/.test(t)?et(t):null}function c2e({card:e,onAsk:t,busy:r}){let n=IR(e),o=e.type==="demo_candidate",a=e.run_id||e.latest_run?.run_id,i=e.status||e.latest_run?.status;return Ye.default.createElement(Be,{padding:16,testId:"assistant-evidence-card",style:{display:"grid",gap:10}},Ye.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},Ye.default.createElement(Ce,{tone:o?"warning":"info"},o?"Historical pass":"Recorded evaluation"),i&&Ye.default.createElement(Ce,{tone:i==="errored"||i==="failed"?"error":"muted"},i),e.check_strength&&Ye.default.createElement("span",{style:Hs},String(e.check_strength).replaceAll("_"," "))),Ye.default.createElement("div",{style:{fontWeight:600,overflowWrap:"anywhere"}},e.recorded_prompt||e.title),Ye.default.createElement("div",{style:{...Hs,fontFamily:K}},[e.provider,e.model,a&&`run ${a}`].filter(Boolean).join(" \xB7 "),e.completed_at&&` \xB7 ${new Date(e.completed_at).toLocaleString()}`),e.output_excerpt&&Ye.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-text-secondary)"}},e.output_excerpt),(e.error||e.latest_run?.error)&&Ye.default.createElement("div",{style:{fontSize:13,whiteSpace:"pre-wrap",color:"var(--color-error)"}},e.error||e.latest_run.error),e.fault&&Ye.default.createElement("div",{style:Hs},"Fault: ",e.fault.replaceAll("_"," ")),e.samples_evaluated!=null&&Ye.default.createElement("div",{style:Hs},e.samples_passed||0," / ",e.samples_evaluated," scenarios passed"),e.tool_names?.length>0&&Ye.default.createElement("div",{style:Hs},"Tools recorded: ",e.tool_names.join(", ")),Array.isArray(e.caveats)&&e.caveats.length>0&&Ye.default.createElement("details",{style:Hs},Ye.default.createElement("summary",{style:{cursor:"pointer"}},"Evidence limits"),Ye.default.createElement("ul",{style:{paddingLeft:18,marginTop:8}},e.caveats.map((l,u)=>Ye.default.createElement("li",{key:u},l)))),Ye.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"}},n&&Ye.default.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-accent-ui)"}},n===et("/evaluations")?"Open evaluations \u2192":"Open report \u2192"),e.evaluation_id&&a&&Ye.default.createElement(fe,{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 d2e({draft:e,onReview:t}){return Ye.default.createElement(Be,{padding:18,testId:"assistant-agent-draft",style:{display:"grid",gap:12,borderColor:"var(--color-accent-ui)"}},Ye.default.createElement(We,null,"Agent draft \xB7 not saved"),Ye.default.createElement("div",{style:{fontWeight:600,fontSize:18}},e.name),Ye.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)",fontSize:13}},e.description),Ye.default.createElement("div",{style:{...Hs,fontFamily:K}},e.provider," / ",e.model),Ye.default.createElement("details",null,Ye.default.createElement("summary",{style:{cursor:"pointer",fontSize:13}},"Review instructions and tools"),Ye.default.createElement("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13,maxHeight:280,overflow:"auto"}},e.instructions),Ye.default.createElement("p",{style:Hs},"Tools: ",e.tools?.length?e.tools.join(", "):"None")),Ye.default.createElement(fe,{variant:"primary",onClick:()=>t(e),style:{justifySelf:"start"}},"Review in builder \u2192"))}function E3({session:e,onSessionChange:t,onReviewDraft:r,onOpenSettings:n,executionEnabled:o=!0}){let[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)(!1),y=(0,Ye.useRef)(null),x=(0,Ye.useRef)(null),h=(0,Ye.useRef)(e);h.current=e,(0,Ye.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 Ye.default.createElement("div",{style:{maxWidth:980,margin:"0 auto",color:"var(--color-text-primary)",display:"grid",gap:22}},Ye.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:16,alignItems:"start"}},Ye.default.createElement("div",null,Ye.default.createElement(We,null,"Workspace assistant"),Ye.default.createElement("h1",{style:{margin:"8px 0",fontSize:30,fontWeight:600,letterSpacing:"-0.035em"}},"Ask ActiveAgents"),Ye.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&&Ye.default.createElement(fe,{disabled:u,onClick:()=>{t({...e,messages:[]}),p(null),l(""),m(!1)}},"New conversation")),!g.length&&Ye.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:12}},u2e.map(k=>Ye.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"}},Ye.default.createElement("div",{style:{fontSize:14,fontWeight:600,marginBottom:8}},k.label," \u2197"),Ye.default.createElement("div",{style:{fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},k.message)))),Ye.default.createElement("div",{role:"log","aria-label":"Assistant conversation","aria-live":"polite",style:{display:"grid",gap:20}},g.map((k,A)=>Ye.default.createElement("div",{key:A,style:{display:"grid",gap:12}},Ye.default.createElement(We,{color:k.role==="user"?"var(--color-text-muted)":"var(--color-accent-ui)"},k.role==="user"?"You":"ActiveAgents"),Ye.default.createElement("div",{style:{whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.7,fontSize:14}},k.content),k.cards?.map(C=>Ye.default.createElement(c2e,{key:C.id,card:C,onAsk:E=>{l(E),x.current?.querySelector("textarea")?.focus()},busy:u})),k.references?.length>0&&Ye.default.createElement("div",{"aria-label":"Evidence references",style:{...Hs,display:"flex",gap:12,flexWrap:"wrap"}},k.references.map(C=>{let E=IR(C);return E&&Ye.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=>Ye.default.createElement(d2e,{key:C.id,draft:C,onReview:r})),k.limitations?.length>0&&Ye.default.createElement("details",{style:Hs},Ye.default.createElement("summary",{style:{cursor:"pointer"}},"Scope of this answer"),Ye.default.createElement("ul",{style:{paddingLeft:18}},k.limitations.map((C,E)=>Ye.default.createElement("li",{key:E},C)))))),u&&Ye.default.createElement("div",{role:"status",style:{color:"var(--color-text-secondary)",fontSize:13}},"Working with your workspace evidence\u2026")),d&&Ye.default.createElement(Be,{padding:16,role:"alert",style:{borderColor:"var(--color-warning)",display:"grid",gap:12}},Ye.default.createElement("div",{style:{fontSize:14}},d.message),d.setup&&Ye.default.createElement(fe,{onClick:n,style:{justifySelf:"start"}},"Configure provider \u2192")),Ye.default.createElement(Be,{padding:18},Ye.default.createElement("form",{ref:x,onSubmit:k=>{k.preventDefault(),_(s)},style:{display:"grid",gap:14}},Ye.default.createElement("label",{htmlFor:"assistant-question",style:{fontSize:13,fontWeight:600}},"What would you like to do?"),Ye.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:{...A3,resize:"vertical",boxSizing:"border-box"}}),Ye.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"end",flexWrap:"wrap"}},Ye.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"1 1 140px"}},"Provider",Ye.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:A3},Ye.default.createElement("option",{value:""},a?"Choose a provider\u2026":"Loading\u2026"),a?.providers?.map(k=>Ye.default.createElement("option",{key:k.id,value:k.id},k.id,k.configured?"":" \xB7 setup needed")))),Ye.default.createElement("label",{style:{display:"grid",gap:5,fontSize:11,flex:"2 1 200px"}},"Model",Ye.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:A3})),Ye.default.createElement(fe,{variant:"primary",type:"submit",disabled:u||!a||!s.trim()||!b.trim()||!o||!f},u?"Working\u2026":"Ask ActiveAgents \u2192")),Ye.default.createElement("label",{style:{display:"flex",gap:9,alignItems:"start",fontSize:12,lineHeight:1.6,color:"var(--color-text-secondary)"}},Ye.default.createElement("input",{type:"checkbox",checked:f,disabled:u||!a,onChange:k=>m(k.target.checked),style:{marginTop:4}}),Ye.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.")),Ye.default.createElement("div",{style:{...Hs,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 yt=Z(J());var na=Z(J());function p2e(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 N3({capabilities:e}){let t=e?.items||[],r=t.some(i=>!i.ok&&i.blocking),[n,o]=(0,na.useState)(r),a=p2e(t);return na.default.createElement(Qr,{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(Za,{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:K,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",overflowWrap:"anywhere"}},i.fix))))))}var en=Z(J());var DR={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:K,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function rb({rows:e,onChange:t,repository:r}){let[n,o]=(0,en.useState)(""),a=(s,l)=>t(e.map((u,c)=>c===s?{...u,...l}:u)),i=n?tA(n)||(e.some(s=>s.name===n)?`${n} is already listed.`:null):null;return en.default.createElement("div",{"data-testid":"project-secrets-form",style:{display:"flex",flexDirection:"column",gap:12}},e.length===0&&en.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=tA(s.name),c=s.useOrganizationKey?[]:rA(s.name,s.value);return en.default.createElement("div",{key:s.name,"data-testid":`secret-row-${s.name}`,style:{borderTop:"1px solid var(--color-border-light)",paddingTop:10}},en.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},en.default.createElement("span",{style:{fontFamily:K,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},s.name),s.required&&en.default.createElement(Ce,{tone:"warning"},"required"),s.set&&en.default.createElement(Ce,{tone:"success"},"set"),s.sources?.length>0&&en.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},s.sources.join(" \xB7 "))),s.description&&en.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},s.description),u?en.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},u):en.default.createElement(en.default.Fragment,null,!s.useOrganizationKey&&en.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:{...DR,marginTop:6}}),s.organizationKey&&en.default.createElement("label",{style:{display:"flex",gap:6,alignItems:"center",marginTop:6,fontSize:13,color:"var(--color-text-cell)"}},en.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&&en.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)"}},en.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=>en.default.createElement("div",{key:d.code,"data-testid":`secret-warning-${d.code}`,style:{marginTop:4,fontSize:12,color:"var(--color-warning-text)"}},d.message))))}),en.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start",borderTop:"1px solid var(--color-border-light)",paddingTop:10}},en.default.createElement("div",{style:{flex:1}},en.default.createElement(We,{as:"label",htmlFor:"project-secret-new-name"},"Another variable"),en.default.createElement("input",{id:"project-secret-new-name",type:"text",value:n,onChange:s=>o(s.target.value.trim()),placeholder:"NAME",style:{...DR,marginTop:4}}),i&&en.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"}},i)),en.default.createElement(fe,{size:"sm",style:{marginTop:20},disabled:!n||!!i,onClick:()=>{t(dR(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 f2e({repository:e,preflight:t}){return t?yt.default.createElement("div",{"data-testid":"project-preflight",style:{display:"flex",flexDirection:"column",gap:6}},yt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},yt.default.createElement("span",{style:{fontFamily:K,fontSize:13,color:"var(--color-text-primary)"}},e),yt.default.createElement(Ce,{tone:nA[t.status]||"muted"},t.summary)),yt.default.createElement("div",{style:{fontFamily:K,fontSize:12,color:"var(--color-text-muted)"}},"Ruby ",t.ruby||"unpinned",t.ruby_source?` (${t.ruby_source})`:""," \xB7 railties ",t.railties||"not locked"," ","\xB7 engine ",t.actionagent||"not bundled"," \xB7 ref ",t.ref),t.reasons?.slice(1).map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-error-text)"}},r)),t.warnings?.map(r=>yt.default.createElement("div",{key:r,style:{fontSize:13,color:"var(--color-warning-text)"}},r))):null}function T3({onCreated:e,onCancel:t}){let[r,n]=(0,yt.useState)(null),[o,a]=(0,yt.useState)(null),[i,s]=(0,yt.useState)(!1),[l,u]=(0,yt.useState)(""),[c,d]=(0,yt.useState)(null),[p,f]=(0,yt.useState)(null),[m,y]=(0,yt.useState)(null),[x,h]=(0,yt.useState)(!1),[g,v]=(0,yt.useState)([]),[b,S]=(0,yt.useState)(""),[w,_]=(0,yt.useState)(!1),[k,A]=(0,yt.useState)("/"),[C,E]=(0,yt.useState)(!1),[I,Q]=(0,yt.useState)(null),$=(0,yt.useCallback)(async()=>{let M=await fetch("/api/projects/capabilities"),q=await M.json().catch(()=>({}));if(!M.ok)throw new Error(nt(q,`Could not check what this dashboard can do (HTTP ${M.status}).`));return n(q),q},[]),F=(0,yt.useCallback)(async()=>{a(null);let M=await fetch("/api/github_connection/repositories"),q=await M.json().catch(()=>({}));if(q.reconnect_required){s(!0);return}if(!M.ok)throw new Error(nt(q,`Could not list repositories (HTTP ${M.status}).`));s(!1),a(q.repositories||[])},[]);(0,yt.useEffect)(()=>{$().then(M=>M.github?.connected?F():null).catch(M=>Q(M.message))},[$,F]);let N=(0,yt.useCallback)(async(M,{typed:q=!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 Me=nt(G,`Could not check ${M} (HTTP ${L.status}).`);q?f(Me):Q(Me);return}if(d(G.repository.full_name),y(G.preflight),S(Me=>pR({name:Me,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(nt(ie,`Could not read ${M}'s environment variables (HTTP ${W.status}).`));v(R0(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:eb(g)})}),q=await M.json().catch(()=>({}));if(!M.ok)throw new Error(nt(q,`Could not create the project (HTTP ${M.status}).`));e(q.project)}catch(M){Q(M.message)}finally{E(!1)}},j=r?.github,T=fR({github:j,repositories:o,reconnectRequired:i,pendingApproval:j?.pending_approval===!0}),D=x?"Checking the repository\u2026":mR({capabilities:r,preflight:m,secretsProblem:Dh(g)});return yt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"new-project"},yt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16}},yt.default.createElement("div",{style:{flex:1}},yt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"New project"),yt.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"Boot a repository in a sandbox, installing the engine there when it does not have it, and evaluate an agent against the running app.")),yt.default.createElement(fe,{onClick:t},"Cancel")),I&&yt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},I),yt.default.createElement(Be,null,yt.default.createElement(We,null,"Repository"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(yf,{mode:"single",state:T,repositories:o||[],filter:l,onFilterChange:u,selected:c,onSelect:M=>N(M),settingsHref:et("/settings?tab=integrations"),missingRepositoryUrl:j?.access_settings_url,onRefresh:()=>F().catch(M=>Q(M.message)),onTypeName:M=>N(M,{typed:!0}),typedNameError:p})),m&&yt.default.createElement("div",{style:{marginTop:12}},yt.default.createElement(f2e,{repository:c,preflight:m}))),r&&yt.default.createElement(N3,{capabilities:r}),m&&m.status!=="unsupported"&&yt.default.createElement(Be,null,yt.default.createElement(We,null,"Project"),yt.default.createElement("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12,marginTop:8}},yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Name",yt.default.createElement("input",{type:"text",value:b,onChange:M=>{S(M.target.value),_(M.target.value!=="")},style:{...jR,marginTop:4}})),yt.default.createElement("label",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Start URL (must not answer 5xx once booted)",yt.default.createElement("input",{type:"text",value:k,onChange:M=>A(M.target.value),style:{...jR,marginTop:4,fontFamily:K}}))),yt.default.createElement("div",{style:{marginTop:16}},yt.default.createElement(We,null,"Secrets the boot needs"),yt.default.createElement("div",{style:{marginTop:8}},yt.default.createElement(rb,{rows:g,onChange:v,repository:c})))),yt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:12,justifyContent:"flex-end"}},D&&yt.default.createElement("span",{"data-testid":"create-problem",style:{fontSize:13,color:"var(--color-text-secondary)"}},D),yt.default.createElement(fe,{variant:"primary",onClick:O,disabled:!!D||C,testId:"create-project"},C?"Creating\u2026":"Create project")))}var Ke=Z(J());var Lr=Z(J());var m2e={success:"success",error:"error",progress:"info",neutral:"muted"};function O3({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(nt(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(nt(h,`The conversation did not start (HTTP ${x.status}).`));lt(ps(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(Be,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(fe,{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(Be,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=ds(m.status),x=ps(Gp(m.id));return Lr.default.createElement("li",{key:m.id},Lr.default.createElement("a",{href:et(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:m2e[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:K}},e2(m))))}))))}var sr=Z(J());function $R(e){let t=Number(e)||0;return t>0?`Waiting for you: ${t}`:null}function P3(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 LR(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"&&!P3(e).some(n=>n.value===r)?"Choose one of the answers.":null:e.kind==="choice"?"Choose an answer.":"Type an answer."}function zR(e,t){return e?.kind==="confirm"?{answer:t===!0}:{answer:t}}function BR(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 FR(e){return["pending","running","awaiting_input"].includes(e?.setup?.last_run?.status)||M3(e)||(Number(e?.pending_input_requests)||0)>0}var g2e=6e4;function UR(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 VR(e,t=[],r=[]){let n=o=>JSON.stringify(o.map(a=>({model:a.model,filterable:[...a.filterable||[]].sort(),returns:[...a.returns||[]].sort()})).sort((a,i)=>a.model.localeCompare(i.model)));return n(D3(e,r))!==n(t)}function GR(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 YR(e){return e?e.status==="queued"||e.status==="publishing"?2e3:e.number&&!["merged","closed"].includes(e.state)?6e4:null:null}function XR(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 ZR(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 JR(e){return e.json().catch(()=>({}))}function j3({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 JR(m);if(m.status===409){o(null);return}if(!m.ok)throw new Error(nt(y,`Could not list the app's models (HTTP ${m.status}).`));o(y.models||[]),i(qR(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:D3(a,n||[]),apply:m,...y?{confirm:!0}:{}})}),h=await JR(x);if(x.status===409&&h.code==="confirmation_required"){r?.(h.confirmation,()=>f(m,!0));return}if(!x.ok)throw new Error(nt(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(h2e,{listed:e.app_models_listed,models:n,selection:a,changed:n?VR(a,d,n):!1,busy:u,error:s,onToggle:(m,y,x)=>i(h=>KR(h,m,y,x)),onSave:()=>f(!1),onSaveAndRestart:()=>f(!0)})}function h2e({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(Qr,{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:K,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:K,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(fe,{size:"sm",onClick:s,disabled:o||!n},"Save"),sr.default.createElement(fe,{size:"sm",variant:"primary",onClick:l,disabled:o,testId:"assistant-reads-restart"},o?"Saving\u2026":"Save and restart the sandbox")))}var Qa=Z(J());function $3({boot:e,logTail:t,error:r,sandboxState:n,waiting:o}){let a=e?.steps||[];return Qa.default.createElement(Qr,{title:"Boot",meta:$R(o)||n||"none",testId:"project-boot-progress"},a.length===0&&Qa.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&&Qa.default.createElement("ol",{style:{listStyle:"none",margin:0,padding:0}},a.map(i=>Qa.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)"}},Qa.default.createElement(Ce,{tone:yR[i.status]||"muted"},i.status),Qa.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},gR(i.name)," ",Qa.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},i.name)),Qa.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",overflowWrap:"anywhere"}},i.detail||""),Qa.default.createElement("span",{style:{fontFamily:K,fontSize:12,color:"var(--color-text-muted)",textAlign:"right"}},i.status==="pending"?"":hR(i.duration_ms))))),r&&Qa.default.createElement("div",{"data-testid":"boot-error",style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)",whiteSpace:"pre-wrap"}},r),t?.text&&Qa.default.createElement("div",{style:{borderTop:"1px solid var(--color-border-light)"}},Qa.default.createElement("div",{style:{padding:"6px 12px",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},t.truncated?"last lines of ":"",t.step,".log"),Qa.default.createElement("pre",{"data-testid":"boot-log-tail",style:{margin:0,padding:"8px 12px",maxHeight:280,overflow:"auto",fontFamily:K,fontSize:12,background:"var(--color-muted)",color:"var(--color-text-cell)",whiteSpace:"pre-wrap"}},t.text)))}var Sl=Z(J());var QR="/settings?tab=integrations";function L3({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=Sl.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=Sl.default.createElement(Sl.default.Fragment,null,Sl.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 ",Sl.default.createElement("span",{style:{fontFamily:K}},"browser:",o.session_id),"."),Sl.default.createElement(hf,{key:o.session_id,sandbox:o,modes:t,watchOnOpen:r,onChange:n})):s=Sl.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."),Sl.default.createElement(Qr,{title:"Browser",meta:Sl.default.createElement(vn,{href:et(QR),onClick:()=>lt(QR)},"Manage runtimes"),testId:"project-browser",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},s)}var Ln=Z(J());var y2e=e=>e?new Date(e).toLocaleString():"\u2014",v2e={entered:()=>"entered",organization_key:e=>`organization's ${e.provider} key`,setup_assistant:()=>"set by the setup assistant, not secret"};function z3({secrets:e,onReplace:t,onDelete:r,error:n}){let[o,a]=(0,Ln.useState)(null),[i,s]=(0,Ln.useState)(""),[l,u]=(0,Ln.useState)(!1),c=o?rA(o,i):[],d=async p=>{u(!0);try{await p()}catch{return}finally{u(!1)}};return Ln.default.createElement(Qr,{title:"Environment",meta:`${e.length} ${e.length===1?"secret":"secrets"}`,testId:"project-environment"},n&&Ln.default.createElement("div",{style:{padding:"8px 12px",fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},n),e.length===0&&Ln.default.createElement("p",{style:{margin:0,padding:12,fontSize:13,color:"var(--color-text-secondary)"}},"This project sets no environment variables."),Ln.default.createElement("ul",{style:{listStyle:"none",margin:0,padding:0}},e.map(p=>Ln.default.createElement("li",{key:p.name,"data-testid":`environment-${p.name}`,style:{padding:"10px 12px",borderTop:"1px solid var(--color-border-light)"}},Ln.default.createElement("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"}},Ln.default.createElement("span",{style:{fontFamily:K,fontSize:13,fontWeight:600,color:"var(--color-text-primary)"}},p.name),Ln.default.createElement(Ce,{tone:p.source==="organization_key"?"info":"muted"},v2e[p.source]?.(p)||"entered"),Ln.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-muted)"}},p.set_by?.name?`set by ${p.set_by.name}`:"set"," \xB7 ",y2e(p.updated_at)),Ln.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:6}},p.source!=="organization_key"&&Ln.default.createElement(fe,{size:"sm",onClick:()=>{a(p.name),s("")},disabled:l},"Replace"),Ln.default.createElement(fe,{size:"sm",variant:"danger",onClick:()=>d(()=>r(p.name)),disabled:l},"Delete"))),p.source==="setup_assistant"&&typeof p.value=="string"&&Ln.default.createElement("div",{style:{marginTop:4,fontFamily:K,fontSize:12,color:"var(--color-text-secondary)",wordBreak:"break-all"}},p.name,"=",p.value),o===p.name&&Ln.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("")})}},Ln.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:K,fontSize:13,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"}}),Ln.default.createElement(fe,{size:"sm",variant:"primary",type:"submit",disabled:!i||l},"Save"),Ln.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>a(null)},"Cancel"),c.map(f=>Ln.default.createElement("div",{key:f.code,style:{width:"100%",fontSize:12,color:"var(--color-warning-text)"}},f.message)))))))}var zn=Z(J());var ld=Z(J());var x2e=["proposed","edited"],U3={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."}},sA={pending:"info",running:"info",review:"accent",closed:"success",failed:"error"},RR={minutes:"Minutes",steps:"Browser steps",cost:"Cost"};function tee(e){return e?.status==="pending"||e?.status==="running"}function lA(e){return x2e.includes(e.state)}function W3(e=[],t=null){let r=e.filter(n=>lA(n)&&n.verdict==="answerable").map(n=>n.id);return Number.isInteger(t)&&t>=0?r.slice(0,t):r}function ree(e=[],t=[]){let r=new Set(t.filter(lA).map(n=>n.id));return e.filter(n=>r.has(n))}function eee(e,t){return e==="cost"?`$${Number(t||0).toFixed(2)}`:String(Math.round(Number(t||0)*10)/10)}function nee(e={},t={}){return Object.keys(RR).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:RR[r],used:o,limit:n,ratio:Math.min(o/n,1),text:`${eee(r,o)} / ${eee(r,n)}`}]})}function oee(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 aee({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 iee(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 B3(e){return(e||[]).join(", ")}function F3(e){return String(e||"").split(",").map(t=>t.trim()).filter(Boolean)}function see(e){let t=e.expectations||{};return{prompt:e.prompt||"",group:e.group||"",rubric:e.notes||"",tools:B3(t.tools),contains:B3(t.contains),not_contains:B3(t.not_contains)}}function lee(e){return{prompt:e.prompt.trim(),group:e.group.trim(),rubric:e.rubric.trim(),tools:F3(e.tools),contains:F3(e.contains),not_contains:F3(e.not_contains)}}function uA(e){return`/explorations/${e}`}function cA(e){return{explorationId:String(e||"").match(/^\/explorations\/(\d+)/)?.[1]||null}}function vf({explorations:e,onOpen:t,selectedId:r=null}){return ld.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 ld.default.createElement(Be,{key:n.id,padding:12,testId:`exploration-${n.id}`,style:a?{borderColor:"var(--color-accent-ui)"}:void 0},ld.default.createElement("button",{type:"button",onClick:()=>t(n),style:{all:"unset",cursor:"pointer",display:"flex",gap:8,alignItems:"center",width:"100%",flexWrap:"wrap"}},ld.default.createElement("span",{style:{fontFamily:K,fontSize:12,color:"var(--color-text-primary)"}},"#",n.id),ld.default.createElement(Ce,{tone:sA[n.status]||"muted"},n.status),ld.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},n.source),ld.default.createElement("span",{style:{marginLeft:"auto",fontFamily:K,fontSize:11,color:"var(--color-text-muted)"}},o.total||0," found \xB7 ",o.open||0," to review \xB7 ",o.accepted||0," accepted \xB7 ",vo(n.created_at))))}))}var kt=Z(J());var xf=Z(J());function H3({budget:e,usage:t}){let r=nee(e,t);return r.length===0?null:xf.default.createElement(Qr,{title:"Budget",testId:"exploration-budget",bodyStyle:{padding:"10px 12px",display:"flex",flexDirection:"column",gap:8}},r.map(n=>{let o=n.ratio>=1?yo.error:n.ratio>=.8?yo.warning:yo.info;return xf.default.createElement("div",{key:n.key,"data-testid":`exploration-budget-${n.key}`,style:{display:"flex",alignItems:"center",gap:10}},xf.default.createElement("span",{style:{width:110,fontSize:12,color:"var(--color-text-secondary)"}},n.label),xf.default.createElement("span",{style:{flex:1,height:6,borderRadius:999,background:"var(--color-muted)",overflow:"hidden"}},xf.default.createElement("span",{style:{display:"block",width:`${Math.round(n.ratio*100)}%`,height:"100%",background:o.strong}})),xf.default.createElement("span",{style:{fontFamily:K,fontSize:11,minWidth:90,textAlign:"right",color:o.text}},n.text))}))}var It=Z(J());var b2e={proposed:"info",edited:"info",accepted:"success",rejected:"muted"},jh={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 $h({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=U3[e.verdict]||U3.unverified,d=e.expectations||{},p=new Set(e.missing_tools||[]),f=e.provenance||{},m=oee(e),y=lA(e),x=g=>v=>u({...l,[g]:v.target.value}),h=async()=>{await n(e.id,lee(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:b2e[e.state]||"muted"},e.state),e.group&&It.default.createElement(Ce,null,e.group),e.scenario_key&&It.default.createElement("span",{style:{fontFamily:K,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($h,{label:"Prompt"},It.default.createElement("input",{style:jh,value:l.prompt,onChange:x("prompt")})),It.default.createElement($h,{label:"Rubric: what a good answer does (the judge grades against it)"},It.default.createElement("textarea",{style:{...jh,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($h,{label:"Group"},It.default.createElement("input",{style:jh,value:l.group,onChange:x("group")})),It.default.createElement($h,{label:"Tools (comma-separated)"},It.default.createElement("input",{style:jh,value:l.tools,onChange:x("tools")})),It.default.createElement($h,{label:"Contains"},It.default.createElement("input",{style:jh,value:l.contains,onChange:x("contains")})),It.default.createElement($h,{label:"Does not contain"},It.default.createElement("input",{style:jh,value:l.not_contains,onChange:x("not_contains")}))),It.default.createElement("div",{style:{display:"flex",gap:8}},It.default.createElement(fe,{size:"sm",variant:"primary",onClick:h,disabled:a||!l.prompt.trim()},"Save"),It.default.createElement(fe,{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:K,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:K,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:K,fontSize:11}},"Screenshots: ",f.screenshots.join(", "))),!l&&It.default.createElement("div",{style:{display:"flex",gap:6,flexWrap:"wrap"}},m&&It.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(m),testId:`candidate-replay-${e.id}`},"Replay"),e.verdict==="needs_tool"&&s&&It.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${s}/edit`)},"Give the agent the tool"),e.state!=="rejected"&&It.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>u(see(e)),disabled:a},"Edit"),y&&It.default.createElement(fe,{size:"sm",variant:"danger",onClick:()=>o(e.id,"rejected"),disabled:a},"Reject"),e.state==="rejected"&&It.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>o(e.id,"proposed"),disabled:a},"Reconsider"))))}var K3={minutes:15,steps:150},uee={minutes:120,steps:1e3,cost:100},cee={minutes:"Minutes",steps:"Browser steps",cost:"Cost cap"};function pee(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:`${cee[r]} must be a ${a?"whole number":"number"} above 0.`};if(o>uee[r])return{error:`${cee[r]} may be at most ${uee[r]}.`};t[r]=o}return{budget:t}}var dee={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 fee(e,t={}){return e===402?t.message||t.error||"Your plan has no explorations left.":t.code&&dee[t.code]?dee[t.code]:t.error||`The exploration did not start (HTTP ${e}).`}var w2e={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 mee(e){return e?w2e[e]||e:null}var S2e={signed_in:"success",failed:"error",unsupported:"warning",error:"error"};function gee(e){return e?{tone:S2e[e.status]||"muted",text:e.message||e.status}:null}function hee(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 V3(e=[]){return e.filter(t=>!t.kind||t.kind==="env")}async function yee(e){return e.json().catch(()=>({}))}var _2e={explorer:"explorer agent",external:"submitted from outside the dashboard"};function bf({explorationId:e,onLoaded:t,scenarioSet:r=null,requireScenarioSet:n=!1,onAccepted:o}){let[a,i]=(0,kt.useState)(null),[s,l]=(0,kt.useState)(null),[u,c]=(0,kt.useState)([]),[d,p]=(0,kt.useState)(!1),[f,m]=(0,kt.useState)(!1),[y,x]=(0,kt.useState)({}),[h,g]=(0,kt.useState)(null),[v,b]=(0,kt.useState)(null),S=(0,kt.useRef)(t);S.current=t;let w=(0,kt.useCallback)(async()=>{let M=await fetch(`/api/explorations/${e}`),q=await yee(M);if(!M.ok)throw new Error(nt(q,`Could not load the exploration (HTTP ${M.status}).`));return i(q),S.current?.(q),q},[e]);(0,kt.useEffect)(()=>{w().catch(M=>l(M.message))},[w]);let _=a?.candidates||[];(0,kt.useEffect)(()=>{a&&c(M=>d?ree(M,_):W3(_,a.preselect_limit))},[a,d]);let k=tee(a?.exploration);(0,kt.useEffect)(()=>{if(!k)return;let M=setInterval(()=>w().catch(q=>l(q.message)),3e3);return()=>clearInterval(M)},[k,w]),Th("ExplorationChannel",{exploration_id:e},M=>{Oh(M)&&w().catch(()=>{})},!!e);let A=async(M,q,V)=>{m(!0),l(null);try{let L=await fetch(M,{method:q,headers:{"Content-Type":"application/json"},body:JSON.stringify(V||{})}),G=await yee(L);return{res:L,data:G}}finally{m(!1)}},C=async(M,q)=>{let{res:V,data:L}=await A(`/api/explorations/${e}/candidates/${M}`,"PATCH",q);return V.ok?(x({...y,[M]:null}),await w(),!0):(x({...y,[M]:nt(L,`Could not save the candidate (HTTP ${V.status}).`)}),!1)},E=async(M,q)=>C(M,{state:q}),I=M=>{p(!0),c(q=>q.includes(M)?q.filter(V=>V!==M):[...q,M])},Q=async()=>{let M={candidate_ids:u,...r?{scenario_set_id:r.id}:{}},{res:q,data:V}=await A(`/api/explorations/${e}/accept`,"POST",M);return q.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(nt(V,`Could not accept the candidates (HTTP ${q.status}).`)),null)},$=async(M,q,{confirm:V=!1}={})=>{let L=q?`/api/projects/${q.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:q});return}if(!G.ok){l(nt(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:q}=await A(`/api/explorations/${e}/stop`,"POST");if(!M.ok&&M.status!==409){l(nt(q,`Could not stop the exploration (HTTP ${M.status}).`));return}await w()};if(!a)return s?kt.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s):kt.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the exploration\u2026");let{exploration:O}=a,j=O.counts||{},T=aee({evaluation:a.evaluation,candidates:_,selectedIds:u}),D=W3(_);return kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"exploration-review"},kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(We,null,"Exploration ",O.id),kt.default.createElement(Ce,{tone:sA[O.status]||"muted",testId:"exploration-status"},O.status),kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},_2e[O.source]||O.source," \xB7 ",vo(O.created_at),O.start_url?` \xB7 from ${O.start_url}`:""),k&&kt.default.createElement(fe,{size:"sm",onClick:N,disabled:f,style:{marginLeft:"auto"},testId:"exploration-stop"},"Stop and review")),O.stop_reason&&kt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},mee(O.stop_reason)),O.error_message&&kt.default.createElement("div",{style:{padding:"8px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},O.error_message),kt.default.createElement(H3,{budget:O.budget,usage:O.usage}),s&&kt.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},s),h&&kt.default.createElement(Be,{padding:12,testId:"exploration-accepted"},kt.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&&kt.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${h.evaluation.id}`)},"Open evaluation")),v&&kt.default.createElement(Be,{testId:"exploration-run-confirmation",style:{borderColor:"var(--color-warning)"}},kt.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},v.question),kt.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},kt.default.createElement(fe,{variant:"primary",onClick:()=>$(v.evaluation,v.project,{confirm:!0}),disabled:f},"Run it on this machine"),kt.default.createElement(fe,{onClick:()=>b(null)},"Cancel"))),kt.default.createElement(Qr,{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?kt.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."):kt.default.createElement("ul",{style:{margin:0,padding:0}},_.map(M=>kt.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&&kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:8}},kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c(D)},disabled:f},"Select every answerable"),kt.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>{p(!0),c([])},disabled:f},"Clear"),a.preselect_limit!=null&&D.length>a.preselect_limit&&kt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"Your plan starts with ",a.preselect_limit," selected.")),kt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},kt.default.createElement(fe,{variant:"primary",onClick:Q,disabled:f||u.length===0||n&&!r,testId:"exploration-accept"},"Accept ",u.length,r?` into ${r.label}`:""),!r&&!n&&kt.default.createElement(kt.default.Fragment,null,kt.default.createElement(fe,{onClick:F,disabled:f||u.length===0,testId:"exploration-accept-run"},"Accept and run"),kt.default.createElement("span",{style:{fontFamily:K,fontSize:11,color:"var(--color-text-secondary)"},"data-testid":"exploration-run-estimate"},iee(T,a.runs_remaining))))))}var Ra=Z(J());var C2e={width:90,padding:"6px 8px",borderRadius:6,fontSize:13,fontFamily:K,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"};function nb({projectId:e,sandboxReady:t,onStarted:r}){let[n,o]=(0,Ra.useState)({minutes:"",steps:"",cost:""}),[a,i]=(0,Ra.useState)(null),[s,l]=(0,Ra.useState)(!1),{error:u,budget:c}=pee(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(fee(f.status,m));r?.(m.exploration)}catch(f){i(f.message)}finally{l(!1)}},p=(f,m,y)=>Ra.default.createElement("label",{style:{display:"flex",flexDirection:"column",gap:4}},Ra.default.createElement(We,null,m),Ra.default.createElement("input",{type:"number",min:"0",value:n[f],placeholder:y,onChange:x=>o({...n,[f]:x.target.value}),"aria-label":m,style:C2e}));return Ra.default.createElement(Qr,{title:"Explore the app",testId:"explorer-start",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:10}},Ra.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."),Ra.default.createElement("div",{style:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"}},p("minutes","Minutes",String(K3.minutes)),p("steps","Browser steps",String(K3.steps)),p("cost","Cost cap ($)","none"),Ra.default.createElement(fe,{variant:"primary",onClick:d,disabled:s||!t||!!u,testId:"explorer-start-button"},s?"Starting\u2026":"Explore the app")),!t&&Ra.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)&&Ra.default.createElement("div",{style:{fontSize:12,color:"var(--color-error-text)"},"data-testid":"explorer-start-error"},u||a))}var Yt=Z(J());var A2e={width:"100%",padding:"6px 10px",borderRadius:6,fontSize:13,fontFamily:K,border:"1px solid var(--color-border)",background:"var(--color-card)",color:"var(--color-text-primary)"},E2e=[{value:"credentials",label:"Seeded account"},{value:"by_hand",label:"Sign in by hand"},{value:"none",label:"No sign-in"}],vee=e=>e?new Date(e).toLocaleString():"\u2014";async function wf(e,t,r){let n=await fetch(e,{method:t,headers:{"Content-Type":"application/json"},body:r?JSON.stringify(r):void 0}),o=await n.json().catch(()=>({}));if(!n.ok)throw new Error(nt(o,`The request failed (HTTP ${n.status}).`));return o}function G3({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 wf(`/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}=hee(s,{passwordSaved:!!v?.password_set}),w=gee(u),_=()=>g(async()=>{let $=await wf(`/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 wf(`/api/projects/${e}/sign_in/check`,"POST");c($.result),o($.sign_in)}),A=()=>g(async()=>{await wf(`/api/sandboxes/${t}/browser`,"POST",{mode:"headed"}),await h(),m("A browser window opened on the app. Sign in there, then save its sign-in.")}),C=()=>g(async()=>{let $=await wf(`/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 wf(`/api/sandboxes/${t}/browser`,"DELETE"),await h()}),I=()=>g(async()=>{let $=await wf(`/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:A2e}));return Yt.default.createElement(Qr,{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 ",vee(v.updated_at)),n?.storage_state&&Yt.default.createElement(Ce,{tone:"success"},"browser sign-in saved ",vee(n.storage_state.updated_at)),!v&&!n?.storage_state&&n&&Yt.default.createElement(Ce,null,"no sign-in")),Yt.default.createElement(cs,{options:E2e,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(fe,{variant:"primary",size:"sm",onClick:_,disabled:y||!!b},"Save credentials"),Yt.default.createElement(fe,{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(fe,{size:"sm",onClick:A,disabled:y||!r||n?.browser_running},"Open a browser window"),Yt.default.createElement(fe,{variant:"primary",size:"sm",onClick:C,disabled:y||!n?.browser_running},"Save the browser's sign-in"),n?.browser_running&&Yt.default.createElement(fe,{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(fe,{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:yo[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 Y3({projectId:e,project:t,onCount:r}){let[n,o]=(0,zn.useState)(null),[a,i]=(0,zn.useState)(null),[s,l]=(0,zn.useState)(null),u=(0,zn.useCallback)(async()=>{let f=await fetch(`/api/explorations?project_id=${e}`),m=await f.json().catch(()=>({}));if(!f.ok)throw new Error(nt(m,`Could not list the project's explorations (HTTP ${f.status}).`));o(m.explorations||[]),r?.(m.explorations?.length||0)},[e,r]);(0,zn.useEffect)(()=>{u().catch(f=>l(f.message))},[u]);let c=t?.sandbox_state==="ready",d=zn.default.createElement(zn.default.Fragment,null,zn.default.createElement(nb,{projectId:e,sandboxReady:c,onStarted:f=>{i(f.id),u().catch(m=>l(m.message))}}),zn.default.createElement(G3,{projectId:e,sandboxId:t?.sandbox?.session_id,sandboxReady:c}));if(s)return zn.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s);if(!n)return zn.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026");if(n.length===0)return zn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},d,zn.default.createElement(Be,{testId:"project-explorations-empty"},zn.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 zn.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-explorations"},d,zn.default.createElement(vf,{explorations:n,selectedId:p,onOpen:f=>i(f.id)}),zn.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end"}},zn.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(uA(p))},"Open on its own page")),zn.default.createElement(bf,{key:p,explorationId:p,onLoaded:()=>u().catch(()=>{})}))}var dr=Z(J());var N2e={text:"question",choice:"choice",confirm:"approval",secret:"secret"};async function xee(e){return e.json().catch(()=>({}))}function X3({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 xee(c);if(!c.ok)throw new Error(nt(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 xee(f);if(!f.ok)throw new Error(nt(m,`Could not send the answer (HTTP ${f.status}).`));await l(),n?.()};return!o?.length&&!i?null:dr.default.createElement(Qr,{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(T2e,{key:c.id,request:c,onSettle:u,storesProjectSecret:t!=null&&c.agent?.id===t})))}function T2e({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(O2e,{request:e,storesProjectSecret:r,value:n,onChange:o,busy:a,error:s,onAnswer:c=>u("answer",zR(e,c)),onDecline:()=>u("decline")})}function O2e({request:e,storesProjectSecret:t,value:r,onChange:n,busy:o,error:a,onAnswer:i,onDecline:s}){let l=LR(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"},N2e[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:K,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"),P3(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"?K:"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(fe,{variant:"primary",size:"sm",onClick:()=>i(!0),disabled:o},"Approve"),dr.default.createElement(fe,{size:"sm",onClick:()=>i(!1),disabled:o},"Decline")):dr.default.createElement(dr.default.Fragment,null,dr.default.createElement(fe,{variant:"primary",size:"sm",type:"submit",disabled:o||!!l},o?"Sending\u2026":"Answer"),dr.default.createElement(fe,{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 zt=Z(J());async function dA(e){return e.json().catch(()=>({}))}function Z3({project:e,onProjectChanged:t,onConfirmationRequired:r}){let n=`/api/projects/${e.id}/install_pull_request`,[o,a]=(0,zt.useState)(null),[i,s]=(0,zt.useState)(null),[l,u]=(0,zt.useState)(null),[c,d]=(0,zt.useState)(0),[p,f]=(0,zt.useState)(!1),m=(0,zt.useCallback)(async()=>{let h=await fetch(n),g=await dA(h);if(!h.ok)throw new Error(nt(g,`Could not read the install pull request (HTTP ${h.status}).`));return g},[n]);(0,zt.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=YR(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 dA(g);if(!g.ok)throw new Error(nt(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:zt.default.createElement(zt.default.Fragment,null,zt.default.createElement(P2e,{project:e,pullRequest:x,publishing:o?.publishing,allowlist:o?.allowlist||[],error:i,opening:p,onOpenDialog:u,onOpenBranch:y}),l&&zt.default.createElement(M2e,{project:e,base:n,pullRequest:x,mode:l,onConfirmationRequired:r,onClose:()=>u(null),onPublished:()=>{u(null),d(h=>h+1)}}))}function P2e({project:e,pullRequest:t,publishing:r,allowlist:n,error:o,opening:a,onOpenDialog:i,onOpenBranch:s}){let{label:l,tone:u}=GR(t),{canOpen:c,canUpdate:d,openBranch:p}=XR(t);return zt.default.createElement(Be,{testId:"project-install-pull-request"},zt.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}},zt.default.createElement(We,null,"Install pull request"),zt.default.createElement(Ce,{tone:u},l),t?.url&&zt.default.createElement("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",style:{fontSize:13,color:"var(--color-info)"}},"#",t.number),zt.default.createElement("span",{style:{marginLeft:"auto",display:"flex",gap:8}},d&&zt.default.createElement(fe,{size:"sm",onClick:()=>i("update")},"Update draft PR"),c&&e.install_state!=="installed"&&zt.default.createElement(fe,{size:"sm",variant:"primary",onClick:()=>i("create"),testId:"open-install-pr"},"Open install PR"),p&&zt.default.createElement(fe,{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"))),zt.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&&zt.default.createElement("p",{style:{margin:"4px 0 0",fontFamily:K,fontSize:12,color:"var(--color-text-muted)"}},t.branch,t.base_branch?` \u2192 ${t.base_branch}`:""),t?.status==="failed"&&t.error_message&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},t.error_message),r&&!r.available&&r.live&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-text-secondary)"}},r.refusal),n.length>0&&zt.default.createElement("details",{style:{marginTop:6}},zt.default.createElement("summary",{style:{cursor:"pointer",fontSize:12,color:"var(--color-text-secondary)"}},"What it may publish"),zt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontFamily:K,fontSize:12,color:"var(--color-text-secondary)"}},n.map(f=>zt.default.createElement("li",{key:f},f)))),o&&zt.default.createElement("p",{style:{margin:"6px 0 0",fontSize:12,color:"var(--color-error-text)"}},o))}function M2e({project:e,base:t,pullRequest:r,mode:n,onConfirmationRequired:o,onClose:a,onPublished:i}){let s=n==="update",[l,u]=(0,zt.useState)(null),[c,d]=(0,zt.useState)(null),[p,f]=(0,zt.useState)(!0),[m,y]=(0,zt.useState)(null),[x,h]=(0,zt.useState)(new Set),[g,v]=(0,zt.useState)(s?r?.title||"":"Install ActiveAgent"),[b,S]=(0,zt.useState)(""),[w,_]=(0,zt.useState)(s&&r?.branch||""),[k,A]=(0,zt.useState)(w2),[C,E]=(0,zt.useState)(!1),[I,Q]=(0,zt.useState)(0);(0,zt.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 dA(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(nt(D,`Could not read the sandbox's changes (HTTP ${T.status}).`));y(null),u(D.preview),d(D.publishing),h(k2(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=C2({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 dA(N);if(!N.ok)throw S2(O.code)&&Q(j=>j+1),new Error(nt(O,`Could not publish (HTTP ${N.status}).`));i(O.pull_request)}catch(F){y(F.message)}finally{E(!1)}};return zt.default.createElement(cD,{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=>_2(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)=>ZR(e.id,F,N)})}var ln=Z(J());var I2e={awaiting_input:"warning",running:"info",pending:"info",complete:"success",failed:"error"},D2e={progress:"info",success:"success",error:"error",neutral:"muted"};function J3({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(Be,{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:D2e[ds(l.status).tone]||"muted"},ds(l.status).label),I3(e)&&n&&ln.default.createElement(fe,{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)"}},WR(e)),l?.id&&ln.default.createElement("a",{href:et(ps(l.id)),onClick:u=>{u.preventDefault(),lt(ps(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(m0,{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:I2e[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(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${a.agent_id}/interactions`)},"Open its runs"),HR(e)&&ln.default.createElement(fe,{size:"sm",variant:I3(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)"}},BR(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 bee="/settings?tab=integrations",j2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"},$2e={installed:"bundles the engine",detected:"installs the engine in the sandbox",bootstrapped:"engine installed in the sandbox"};async function qs(e){return e.json().catch(()=>({}))}function Q3({projectId:e,onBack:t,onDeleted:r}){let[n,o]=(0,Ke.useState)(null),[a,i]=(0,Ke.useState)(null),[s,l]=(0,Ke.useState)([]),[u,c]=(0,Ke.useState)(()=>bR(window.location.search)),[d,p]=(0,Ke.useState)(!1),[f,m]=(0,Ke.useState)(null),[y,x]=(0,Ke.useState)(null),[h,g]=(0,Ke.useState)(null),[v,b]=(0,Ke.useState)(!1),[S,w]=(0,Ke.useState)(null),[_,k]=(0,Ke.useState)(null),[A,C]=(0,Ke.useState)(null),E=(0,Ke.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/boot`),Y=await qs(P);if(!P.ok)throw new Error(nt(Y,`Could not load the project (HTTP ${P.status}).`));o(Y.project),i(Y)},[e]),I=(0,Ke.useCallback)(async()=>{let P=await fetch(`/api/projects/${e}/secrets`),Y=await qs(P);if(!P.ok)throw new Error(nt(Y,`Could not list the project's secrets (HTTP ${P.status}).`));l(Y.secrets||[])},[e]);(0,Ke.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}${wR(B,P)}`)},$=n?.sandbox_state==="failed",[F,N]=(0,Ke.useState)(null);(0,Ke.useEffect)(()=>{N($?Date.now():null)},[$,n?.sandbox?.session_id]);let O=vR(n),j=O||FR(n)||UR(n,F);(0,Ke.useEffect)(()=>{if(!j)return;let P=setTimeout(()=>E().catch(Y=>m(Y.message)),cR);return()=>clearTimeout(P)},[j,a,E]);let T=n?.sandbox?.session_id;Th("SandboxChannel",{session_id:T},P=>{Oh(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 qs(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(nt(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)}}),q=(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 qs(se);if(!se.ok)throw new Error(nt(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 qs(P);if(!P.ok){m(nt(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 qs(Y);if(!Y.ok)throw new Error(nt(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 qs(Y);return Y.ok?(l(B.secrets||[]),!0):(x(nt(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 qs(B);if(!B.ok){let ne=nt(se,`Could not replace ${P} (HTTP ${B.status}).`);throw x(ne),new Error(ne)}await I()},Me=async P=>{x(null);let Y=await fetch(`/api/projects/${e}/secrets/${encodeURIComponent(P)}`,{method:"DELETE"});if(!Y.ok){x(nt(await qs(Y),`Could not delete ${P} (HTTP ${Y.status}).`));return}await I()},he=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 qs(Y);if(!Y.ok){x(nt(B,`Could not read the repository's environment variables (HTTP ${Y.status}).`));return}C(R0(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(nt(await qs(P),`Could not delete the project (HTTP ${P.status}).`))};if(!n)return f?Ke.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},f):Ke.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading the project\u2026");let R=a?.browser_modes||[],te=SR(n,R),z=P=>{P&&p(!0),Q("browser")},ee=n.target_agent,U=!ee&&n.install_state==="installed";return Ke.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"project-detail"},Ke.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"}},Ke.default.createElement("div",{style:{flex:1,minWidth:260}},Ke.default.createElement(fe,{size:"sm",variant:"ghost",onClick:t,style:{padding:0}},"\u2190 Projects"),Ke.default.createElement("h1",{style:{margin:"4px 0 0",fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},n.name),Ke.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:4,flexWrap:"wrap"}},Ke.default.createElement("span",{style:{fontFamily:K,fontSize:13,color:"var(--color-text-secondary)"}},n.repository,n.default_ref?`@${n.default_ref}`:""),Ke.default.createElement(Ce,{tone:j2e[n.sandbox_state]||"muted"},"sandbox ",n.sandbox_state),Ke.default.createElement(Ce,{tone:nA[n.install_state==="installed"?"supported":"bootstrap"]},$2e[n.install_state]),Ke.default.createElement(vn,{href:et(bee),onClick:()=>lt(bee),title:"Every sandbox and browser, in Settings \u2192 Integrations"},"Manage runtimes"))),Ke.default.createElement("div",{style:{display:"flex",gap:8}},Ke.default.createElement(fe,{onClick:()=>D(`/api/projects/${e}/boot`),disabled:v||O,testId:"boot-project"},n.sandbox_state==="ready"?"Sandbox running":O?"Booting\u2026":"Boot sandbox"),te&&Ke.default.createElement(fe,{onClick:()=>z(te.watch),testId:"project-watch-live"},te.label),Ke.default.createElement(fe,{variant:"primary",onClick:()=>M(),disabled:v||!ee,testId:"run-project-evaluation",title:ee?"Boots the sandbox first when it is not running":"Choose the agent to evaluate first"},"Run evaluation"))),h&&Ke.default.createElement(Be,{testId:"local-boot-confirmation",style:{borderColor:"var(--color-warning)"}},Ke.default.createElement("p",{style:{margin:0,fontSize:14,color:"var(--color-text-primary)"}},h.question),Ke.default.createElement("div",{style:{display:"flex",gap:8,marginTop:10}},Ke.default.createElement(fe,{variant:"primary",onClick:()=>{let{retry:P}=h;g(null),P?.()},disabled:v},"Run it on this machine"),Ke.default.createElement(fe,{onClick:()=>g(null)},"Cancel"))),f&&Ke.default.createElement("div",{style:{padding:"10px 12px",borderRadius:8,fontSize:13,background:"var(--color-error-soft)",color:"var(--color-error-text)"}},f),Ke.default.createElement(cs,{options:[{value:"overview",label:"Overview"},{value:"explorations",label:"Explorations"},{value:"environment",label:`Environment (${V3(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"&&Ke.default.createElement(Ke.default.Fragment,null,Ke.default.createElement($3,{boot:a?.boot,logTail:a?.log_tail,error:a?.error,sandboxState:n.sandbox_state,waiting:n.pending_input_requests}),Ke.default.createElement(X3,{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(()=>{})}),Ke.default.createElement(J3,{project:n,busy:v,onAsk:()=>V("POST"),onFixWithClaudeCode:()=>V("POST",null,"setup/claude_code"),onToggleAuto:P=>V("PATCH",{auto:P})}),Ke.default.createElement(Be,null,Ke.default.createElement(We,null,"Agent under evaluation"),ee&&Ke.default.createElement("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},Ke.default.createElement("span",{style:{fontSize:14,fontWeight:600,color:"var(--color-text-primary)"}},ee.name),Ke.default.createElement(Ce,{tone:"accent"},ee.kind==="app_assistant"?"App assistant":`synced agent ${ee.synced_agent}`),Ke.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/agents/${ee.id}/edit`)},"Open agent"),n.evaluation&&Ke.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${n.evaluation.id}`)},"Open evaluation"),n.install_state==="installed"&&Ke.default.createElement(fe,{size:"sm",onClick:L},"Change")),U&&!_&&Ke.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.",Ke.default.createElement("div",{style:{marginTop:8}},Ke.default.createElement(fe,{size:"sm",onClick:L,disabled:n.sandbox_state!=="ready"},"List the checkout's agents"))),_&&Ke.default.createElement("ul",{style:{listStyle:"none",margin:"8px 0 0",padding:0},"data-testid":"synced-agents"},_.length===0&&Ke.default.createElement("li",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"The sandbox serves no agents."),_.map(P=>Ke.default.createElement("li",{key:P.slug,style:{display:"flex",gap:8,alignItems:"center",padding:"6px 0"}},Ke.default.createElement("span",{style:{fontFamily:K,fontSize:13}},P.tool),Ke.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)",flex:1}},P.description),Ke.default.createElement(fe,{size:"sm",onClick:()=>G({synced_agent:P.slug}),disabled:v},"Evaluate this agent")))),S&&Ke.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":"","."," ",Ke.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${S.evaluation_id}/runs/${S.id}`)},"Open run"))),ee?.kind==="app_assistant"&&Ke.default.createElement(j3,{project:n,onSaved:P=>{P&&o(P),E().catch(()=>{})},onConfirmationRequired:q}),Ke.default.createElement(Z3,{project:n,onProjectChanged:P=>o(Y=>Y&&P.install_state!==Y.install_state?P:Y),onConfirmationRequired:q}),Ke.default.createElement("div",null,Ke.default.createElement(fe,{variant:"danger",size:"sm",onClick:ce},"Delete project"))),u==="explorations"&&Ke.default.createElement(Y3,{projectId:e,project:n}),u==="browser"&&Ke.default.createElement(L3,{project:n,modes:R,watchOnOpen:d,onChange:()=>E().catch(()=>{})}),u==="sessions"&&Ke.default.createElement(O3,{project:n}),u==="environment"&&Ke.default.createElement(Ke.default.Fragment,null,Ke.default.createElement(z3,{secrets:V3(s),onReplace:ie,onDelete:Me,error:y}),A?Ke.default.createElement(Be,null,Ke.default.createElement(We,null,"Add secrets"),Ke.default.createElement("div",{style:{marginTop:8}},Ke.default.createElement(rb,{rows:A,onChange:C,repository:n.repository})),Ke.default.createElement("div",{style:{display:"flex",gap:8,marginTop:12,alignItems:"center"}},Ke.default.createElement(fe,{variant:"primary",disabled:!!Dh(A)||eb(A).length===0,onClick:async()=>{await W(eb(A))&&C(null)}},"Save secrets"),Ke.default.createElement(fe,{onClick:()=>C(null)},"Cancel"),Dh(A)&&Ke.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},Dh(A)))):Ke.default.createElement("div",null,Ke.default.createElement(fe,{size:"sm",onClick:he},"Add secrets"))))}var ma=Z(J());var L2e={ready:"success",booting:"info",failed:"error",expired:"muted",none:"muted"};function R3({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(fe,{variant:"primary",onClick:r,testId:"new-project-button"},"New project")),e.length===0&&ma.default.createElement(Be,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(Be,{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:K,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:L2e[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 ej({visit:e=0}){let[t,r]=(0,ga.useState)(()=>tb(Gn())),[n,o]=(0,ga.useState)(null),[a,i]=(0,ga.useState)(null);(0,ga.useEffect)(()=>{r(tb(Gn()))},[e]),(0,ga.useEffect)(()=>{let u=()=>r(tb(Gn()));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(nt(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=>{Jc(u),r(tb(u))};return t.creating?ga.default.createElement(T3,{onCreated:u=>l(gf(u.id)),onCancel:()=>l("/projects")}):t.projectId?ga.default.createElement(Q3,{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(R3,{projects:n,onOpen:u=>l(gf(u.id)),onNew:()=>l(gf(null))}):ga.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading projects\u2026")}var Vr=Z(J());function tj({visit:e=0}){let[t,r]=(0,Vr.useState)(()=>cA(Gn())),[n,o]=(0,Vr.useState)(null),[a,i]=(0,Vr.useState)(null),[s,l]=(0,Vr.useState)(null);(0,Vr.useEffect)(()=>{r(cA(Gn()))},[e]),(0,Vr.useEffect)(()=>{let c=()=>r(cA(Gn()));return window.addEventListener("popstate",c),window.addEventListener("dashboard:navigate",c),()=>{window.removeEventListener("popstate",c),window.removeEventListener("dashboard:navigate",c)}},[]);let u=(0,Vr.useCallback)(async()=>{try{let c=await fetch("/api/explorations"),d=await c.json().catch(()=>({}));if(!c.ok)throw new Error(nt(d,`Could not list explorations (HTTP ${c.status}).`));o(d.explorations||[])}catch(c){l(c.message)}},[]);if((0,Vr.useEffect)(()=>{t.explorationId||u()},[t,u]),t.explorationId){let c=a?.project,d=a?.evaluation;return Vr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12}},Vr.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},c?Vr.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(gf(c.id)),style:{padding:0}},"\u2190 ",c.name):Vr.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt("/explorations"),style:{padding:0}},"\u2190 Explorations"),!c&&d&&Vr.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>lt(`/evaluations/${d.id}`)},"Open ",d.name)),Vr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Review candidate scenarios"),Vr.default.createElement(bf,{key:t.explorationId,explorationId:t.explorationId,onLoaded:i}))}return Vr.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16}},Vr.default.createElement("div",null,Vr.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Explorations"),Vr.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&&Vr.default.createElement("div",{style:{fontSize:13,color:"var(--color-error-text)"}},s),!s&&!n&&Vr.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-secondary)"}},"Loading explorations\u2026"),n?.length===0&&Vr.default.createElement(Be,null,Vr.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&&Vr.default.createElement(vf,{explorations:n,onOpen:c=>lt(uA(c.id))}))}var vt=Z(J());var ve=Z(J());var ei=Z(J());var rj=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?K:void 0}),wee={display:"flex",flexDirection:"column",gap:4,fontSize:12,color:"var(--color-text-secondary)"},See=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,ei.useId)(),u={id:l,value:t,onChange:c=>r(c.target.value),placeholder:n,"aria-label":See(e),"data-testid":s};return ei.default.createElement("div",{style:wee},ei.default.createElement("label",{htmlFor:l},e),a?ei.default.createElement("textarea",{...u,rows:i,style:{...rj(o),resize:"vertical"}}):ei.default.createElement("input",{...u,style:rj(o)}))}function ud({label:e,value:t,onChange:r,children:n,testId:o}){let a=(0,ei.useId)();return ei.default.createElement("div",{style:wee},ei.default.createElement("label",{htmlFor:a},e),ei.default.createElement("select",{id:a,value:t,onChange:i=>r(i.target.value),"aria-label":See(e),style:rj(!1),"data-testid":o},n))}function ob({label:e,checked:t,onChange:r}){return ei.default.createElement("label",{style:{display:"inline-flex",gap:6,alignItems:"center",fontSize:12,color:"var(--color-text-secondary)"}},ei.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 ei.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 Yn(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(nt(i,`${n} (HTTP ${a.status}).`));return i}async function kee(e){let t=await fetch(e);if(!t.ok)throw new Error(`The export failed (HTTP ${t.status}).`);return t.text()}var z2e=["collections","generate","import"],B2e=/^\/(?:scenarios|catalogs)(?:\/(\d+|generate|import))?\/?$/;function nj(e=""){let r=String(e).match(B2e)?.[1];return r?/^\d+$/.test(r)?{tab:"collections",collectionId:Number(r)}:{tab:r,collectionId:null}:{tab:"collections",collectionId:null}}function _ee({tab:e="collections",collectionId:t=null}={}){return t?`/scenarios/${t}`:e==="collections"||!z2e.includes(e)?"/scenarios":`/scenarios/${e}`}function oj(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 pA(e){let t=String(e??"").split(/[,\n]/).map(r=>r.trim()).filter(Boolean);return[...new Set(t)]}function Cee(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 Aee(e){return{scenario:{key:e.key.trim(),prompt:e.prompt.trim(),notes:e.notes.trim(),expect:{tools:pA(e.tools),contains:pA(e.contains),not_contains:pA(e.notContains)},tags:pA(e.tags),production_only:e.productionOnly,enabled:e.enabled}}}function Eee(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 Nee(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 F2e=["create","update","remove","keep"],U2e={create:"New",update:"Overwritten",remove:"Removed",keep:"Kept (not in the document)"};function Tee(e){let t=e?.changes||[];return F2e.map(r=>({action:r,label:U2e[r],changes:t.filter(n=>n.action===r)})).filter(r=>r.changes.length>0)}function Oee(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 Pee(e=[]){return e.some(t=>(t.counts?.update||0)+(t.counts?.remove||0)>0)}function Mee(e,t){return e.includes(t)?e.filter(r=>r!==t):[...e,t]}function aj({collectionId:e,agents:t,projects:r,storageAvailable:n,onBack:o,onChanged:a,onDeleted:i}){let[s,l]=(0,ve.useState)(null),[u,c]=(0,ve.useState)(null),[d,p]=(0,ve.useState)(null),[f,m]=(0,ve.useState)({productIds:[],setIds:[],scenarioIds:[]}),[y,x]=(0,ve.useState)(!1),[h,g]=(0,ve.useState)(!1),v=`/api/scenario_catalogs/${e}`,b=(0,ve.useCallback)(async()=>{try{let E=await Yn(v,{fallback:"Could not open the collection"});l(E.catalog),c(null)}catch(E){c(E.message)}},[v]);(0,ve.useEffect)(()=>{b()},[b]);let S=async(E,I,Q,$)=>{let F=await Yn(`${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]:Mee(Q[E],I)})),A=E=>w(async()=>{let I=await kee(oj(e,E,{inline:!0})),Q=await x2(I);p(Q?"YAML copied.":"The browser refused the clipboard; use Download instead.")}),C=E=>window.open(oj(e,E),"_blank");return s?ve.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenario-collection"},ve.default.createElement("div",null,ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:o,style:{padding:0}},"\u2190 Scenarios")),y?ve.default.createElement(W2e,{collection:s,onCancel:()=>x(!1),onSave:async E=>{await S("","PATCH",{catalog:E},"Could not save the collection"),x(!1)}}):ve.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap",alignItems:"flex-start"}},ve.default.createElement("div",null,ve.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},s.name),ve.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},ve.default.createElement("code",null,s.key),s.source_path?` \xB7 ${s.source_path}`:"",s.description?` \xB7 ${s.description}`:""),ve.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")),ve.default.createElement("div",{style:{display:"flex",gap:8,flexWrap:"wrap"}},ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>x(!0)},"Rename"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>C({}),testId:"scenarios-export-all"},"Export all"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>A({})},"Copy YAML"),n&&ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>w(async()=>{await S("/sync","POST",{direction:"push"},"Sync failed"),p("Written to storage.")})},"Write to storage"),ve.default.createElement(fe,{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 Yn(v,{method:"DELETE",fallback:"Delete failed"}),i?.())})},"Delete"))),u&&ve.default.createElement(ha,{tone:"error"},u),d&&ve.default.createElement(ha,null,d),_>0&&ve.default.createElement(Be,{padding:12,testId:"scenarios-selection-bar",style:{position:"sticky",top:8,zIndex:1}},ve.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ve.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},_," selected"),ve.default.createElement(fe,{size:"sm",onClick:()=>C(f),testId:"scenarios-export-selection"},"Download YAML"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>A(f)},"Copy YAML"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>m({productIds:[],setIds:[],scenarioIds:[]})},"Clear"),ve.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&&ve.default.createElement(Be,{testId:"scenarios-collection-empty"},ve.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=>ve.default.createElement(H2e,{key:E.id,product:E,collection:s,agents:t,projects:r,selection:f,onToggle:k,change:S,act:w,setNotice:p})),h?ve.default.createElement(Dee,{agents:t,projects:r,onCancel:()=>g(!1),onSave:async E=>{await S("/products","POST",{product:E},"Could not add the product"),g(!1)}}):ve.default.createElement("div",null,ve.default.createElement(fe,{size:"sm",onClick:()=>g(!0),testId:"scenarios-add-product"},"Add product"))):u?ve.default.createElement(ha,{tone:"error"},u):ve.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading the collection\u2026")}function W2e({collection:e,onSave:t,onCancel:r}){let[n,o]=(0,ve.useState)(e.name||""),[a,i]=(0,ve.useState)(e.description||"");return ve.default.createElement(fA,{onSave:()=>t({name:n.trim(),description:a.trim()}),onCancel:r},ve.default.createElement(bn,{label:"Name",value:n,onChange:o}),ve.default.createElement(bn,{label:"Description",value:a,onChange:i}))}function H2e({product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l}){let[u,c]=(0,ve.useState)(!1),[d,p]=(0,ve.useState)(!1),f=`/products/${e.id}`;return ve.default.createElement(Be,{testId:"scenarios-product"},u?ve.default.createElement(Dee,{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)}}):ve.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},ve.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"flex-start"}},ve.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}}),ve.default.createElement("div",null,ve.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ve.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},ve.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&&ve.default.createElement("p",{style:{margin:"4px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},e.description))),ve.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ve.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-secondary)"}},e.set_count," sets \xB7 ",e.scenario_count," scenarios"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>c(!0)},"Edit"),ve.default.createElement(fe,{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"))),ve.default.createElement("div",{style:{display:"grid",gap:8,marginTop:12}},(e.sets||[]).map(m=>ve.default.createElement(q2e,{key:m.id,set:m,product:e,collection:t,agents:r,projects:n,selection:o,onToggle:a,change:i,act:s,setNotice:l})),d?ve.default.createElement(jee,{onCancel:()=>p(!1),onSave:async m=>{await i(`${f}/sets`,"POST",{set:m},"Could not add the set"),p(!1)}}):ve.default.createElement("div",null,ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>p(!0)},"Add set"))))}function q2e({set:e,product:t,collection:r,agents:n,projects:o,selection:a,onToggle:i,change:s,act:l,setNotice:u}){let[c,d]=(0,ve.useState)((e.scenarios||[]).length<=5),[p,f]=(0,ve.useState)(!1),[m,y]=(0,ve.useState)(null),x=t.project?`project:${t.project.id}`:t.agent?`agent:${t.agent.id}`:"",[h,g]=(0,ve.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 Yn(`/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 ve.default.createElement("div",{style:{border:"1px solid var(--color-border)",borderRadius:8,padding:10},"data-testid":"scenarios-set"},p?ve.default.createElement(jee,{set:e,onCancel:()=>f(!1),onSave:async S=>{await s(v,"PATCH",{set:S},"Could not save the set"),f(!1)}}):ve.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:10,flexWrap:"wrap",alignItems:"center"}},ve.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},ve.default.createElement("input",{type:"checkbox","aria-label":`Select set ${e.key}`,checked:a.setIds.includes(e.id),onChange:()=>i("setIds",e.id)}),ve.default.createElement("span",{style:{fontWeight:600,color:"var(--color-text-primary)"}},e.name),ve.default.createElement("code",{style:{fontSize:12,color:"var(--color-text-secondary)"}},e.key),ve.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"\xB7 ",e.scenario_count," scenarios"),e.judge?.kind&&ve.default.createElement(Ce,null,`judge ${e.judge.kind}`),e.evaluation&&ve.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})`:"")),ve.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"}},ve.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)"}},ve.default.createElement("option",{value:""},"Run against\u2026"),o.length>0&&ve.default.createElement("optgroup",{label:"Projects (booted app and browser)"},o.map(S=>ve.default.createElement("option",{key:`project-${S.id}`,value:`project:${S.id}`},S.name))),n.length>0&&ve.default.createElement("optgroup",{label:"Agents"},n.map(S=>ve.default.createElement("option",{key:`agent-${S.id}`,value:`agent:${S.id}`},S.name)))),ve.default.createElement(fe,{size:"sm",onClick:b,disabled:!h&&!t.agent&&!t.project||e.scenario_count===0},"Run set"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>d(S=>!S)},c?"Hide":"Scenarios"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>f(!0)},"Edit"),ve.default.createElement(fe,{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&&ve.default.createElement("ul",{style:{listStyle:"none",margin:"10px 0 0",padding:0,display:"grid",gap:6}},(e.scenarios||[]).map(S=>m===S.id?ve.default.createElement("li",{key:S.id},ve.default.createElement(Iee,{scenario:S,onCancel:()=>y(null),onSave:async w=>{await s(`${v}/scenarios/${S.id}`,"PATCH",w,"Could not save the scenario"),y(null)}})):ve.default.createElement(K2e,{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")})})),ve.default.createElement("li",null,m==="new"?ve.default.createElement(Iee,{onCancel:()=>y(null),onSave:async S=>{await s(`${v}/scenarios`,"POST",S,"Could not add the scenario"),y(null)}}):ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:()=>{d(!0),y("new")},testId:"scenarios-add-scenario"},"Add scenario"))))}function K2e({scenario:e,selected:t,onToggle:r,onEdit:n,onDelete:o}){let a=Nee(e.expectations);return ve.default.createElement("li",{style:{display:"flex",gap:8,alignItems:"flex-start",padding:"6px 8px",borderRadius:6,background:"var(--color-surface)"},"data-testid":"scenarios-scenario"},ve.default.createElement("input",{type:"checkbox","aria-label":`Select scenario ${e.key}`,checked:t,onChange:r,style:{marginTop:3}}),ve.default.createElement("div",{style:{flex:1,minWidth:0}},ve.default.createElement("div",{style:{fontSize:13,color:"var(--color-text-primary)",opacity:e.enabled?1:.6}},ve.default.createElement("code",{style:{fontSize:11,color:"var(--color-text-secondary)"}},e.key)," ",e.prompt),(e.notes||a)&&ve.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",marginTop:2}},e.notes,e.notes&&a?" \xB7 ":"",a&&ve.default.createElement("span",{style:{fontFamily:K}},a)),ve.default.createElement("div",{style:{display:"flex",gap:4,marginTop:2,flexWrap:"wrap"}},(e.tags||[]).map(i=>ve.default.createElement(Ce,{key:i},i)),e.production_only&&ve.default.createElement(Ce,{tone:"warning"},"production only"),!e.enabled&&ve.default.createElement(Ce,null,"disabled"))),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:n},"Edit"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:o},"Delete"))}function fA({children:e,onSave:t,onCancel:r,problem:n=null,testId:o}){let[a,i]=(0,ve.useState)(!1),[s,l]=(0,ve.useState)(null);return ve.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&&ve.default.createElement(ha,{tone:"error"},s),ve.default.createElement("div",{style:{display:"flex",gap:8}},ve.default.createElement(fe,{type:"submit",size:"sm",variant:"primary",disabled:a},a?"Saving\u2026":"Save"),ve.default.createElement(fe,{size:"sm",variant:"ghost",onClick:r},"Cancel")))}function Dee({product:e=null,agents:t,projects:r,onSave:n,onCancel:o}){let[a,i]=(0,ve.useState)(e?.name||""),[s,l]=(0,ve.useState)(e?.key||""),[u,c]=(0,ve.useState)(e?.description||""),[d,p]=(0,ve.useState)(e?.agent?String(e.agent.id):""),[f,m]=(0,ve.useState)(e?.project?String(e.project.id):"");return ve.default.createElement(fA,{onCancel:o,onSave:()=>n({name:a.trim(),key:s.trim(),description:u.trim(),agent_id:d,project_id:f}),testId:"scenarios-product-form"},ve.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ve.default.createElement(bn,{label:"Name",value:a,onChange:i,placeholder:"Triage"}),ve.default.createElement(bn,{label:"Key",value:s,onChange:l,placeholder:"made from the name when empty",mono:!0}),ve.default.createElement(ud,{label:"Agent",value:d,onChange:p},ve.default.createElement("option",{value:""},"None"),t.map(y=>ve.default.createElement("option",{key:y.id,value:y.id},y.name))),ve.default.createElement(ud,{label:"Project",value:f,onChange:m},ve.default.createElement("option",{value:""},"None"),r.map(y=>ve.default.createElement("option",{key:y.id,value:y.id},y.name)))),ve.default.createElement(bn,{label:"Description",value:u,onChange:c,placeholder:"optional"}))}function jee({set:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ve.useState)(e?.name||""),[a,i]=(0,ve.useState)(e?.key||""),[s,l]=(0,ve.useState)(e?.description||""),[u,c]=(0,ve.useState)(e?.judge?.kind||"");return ve.default.createElement(fA,{onCancel:r,onSave:()=>t({name:n.trim(),key:a.trim(),description:s.trim(),...u?{judge:{kind:u}}:{}}),testId:"scenarios-set-form"},ve.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ve.default.createElement(bn,{label:"Name",value:n,onChange:o,placeholder:"Smoke"}),ve.default.createElement(bn,{label:"Key",value:a,onChange:i,placeholder:"made from the name when empty",mono:!0}),ve.default.createElement(ud,{label:"Judge",value:u,onChange:c},ve.default.createElement("option",{value:""},"The evaluation's default"),ve.default.createElement("option",{value:"rules"},"Rules (expectations only)"),ve.default.createElement("option",{value:"llm"},"LLM judge (grades against the notes)"))),ve.default.createElement(bn,{label:"Description",value:s,onChange:l,placeholder:"optional"}))}function Iee({scenario:e=null,onSave:t,onCancel:r}){let[n,o]=(0,ve.useState)(()=>Cee(e||{})),a=i=>s=>o(l=>({...l,[i]:s}));return ve.default.createElement(fA,{onCancel:r,onSave:()=>t(Aee(n)),problem:Eee(n),testId:"scenarios-scenario-form"},ve.default.createElement(bn,{label:"Prompt: what a user asks the agent",value:n.prompt,onChange:a("prompt"),multiline:!0,testId:"scenario-prompt"}),ve.default.createElement(bn,{label:"Notes: the rubric, what a good answer does",value:n.notes,onChange:a("notes"),multiline:!0,rows:2}),ve.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},ve.default.createElement(bn,{label:"Expected tools",value:n.tools,onChange:a("tools"),placeholder:"lookup_order, refund_order",mono:!0}),ve.default.createElement(bn,{label:"Answer contains",value:n.contains,onChange:a("contains"),placeholder:"comma-separated"}),ve.default.createElement(bn,{label:"Answer never contains",value:n.notContains,onChange:a("notContains"),placeholder:"comma-separated"}),ve.default.createElement(bn,{label:"Tags",value:n.tags,onChange:a("tags"),placeholder:"billing, regression"}),ve.default.createElement(bn,{label:"Key",value:n.key,onChange:a("key"),placeholder:"made from the prompt when empty",mono:!0})),ve.default.createElement("div",{style:{display:"flex",gap:16}},ve.default.createElement(ob,{label:"Enabled",checked:n.enabled,onChange:a("enabled")}),ve.default.createElement(ob,{label:"Production only",checked:n.productionOnly,onChange:a("productionOnly")})))}var Nt=Z(J());function ij({projects:e,collections:t,onAccepted:r}){let[n,o]=(0,Nt.useState)(""),[a,i]=(0,Nt.useState)(null),[s,l]=(0,Nt.useState)(null),[u,c]=(0,Nt.useState)({sandbox:null,modes:[]}),[d,p]=(0,Nt.useState)([]),[f,m]=(0,Nt.useState)(null),[y,x]=(0,Nt.useState)({collectionId:"",setId:""}),[h,g]=(0,Nt.useState)(null),[v,b]=(0,Nt.useState)(null),S=(0,Nt.useCallback)(async()=>{if(n)try{let[E,I,Q,$]=await Promise.all([Yn(`/api/projects/${n}`,{fallback:"Could not load the project"}),Yn("/api/projects/capabilities").catch(()=>({})),Yn("/api/sandboxes").catch(()=>({})),Yn(`/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,Nt.useEffect)(()=>{i(null),m(null),S()},[S]),(0,Nt.useEffect)(()=>{if(!y.collectionId){g(null);return}Yn(`/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 Yn("/api/scenario_catalogs",{method:"POST",body:{catalog:{name:a.name}},fallback:"Could not create the collection"})).catalogs[0].id,Q=await Yn(`/api/scenario_catalogs/${I}/products`,{method:"POST",body:{product:{name:a.name,project_id:a.id}},fallback:"Could not add the product"}),$=await Yn(`/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 Nt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-generator"},Nt.default.createElement(Be,null,Nt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Nt.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."),Nt.default.createElement(ud,{label:"Project",value:n,onChange:o,testId:"scenarios-generator-project"},Nt.default.createElement("option",{value:""},"Choose a project\u2026"),e.map(E=>Nt.default.createElement("option",{key:E.id,value:E.id},E.name))),e.length===0&&Nt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},"No projects yet. ",Nt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/projects/new")}},"Create one")," from a repository first."))),v&&Nt.default.createElement(ha,{tone:"error"},v),a&&Nt.default.createElement(Nt.default.Fragment,null,s&&!s.ok&&Nt.default.createElement(ha,{tone:"error"},"The explorer runs on a model: ",s.detail||"no provider has credentials","."," ",Nt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt("/settings?tab=api-keys")}},"Add a provider key"),", then start it."),!A&&Nt.default.createElement(ha,null,a.name,"'s sandbox is ",a.sandbox_state||"not booted",". The explorer walks the app the sandbox serves:"," ",Nt.default.createElement("a",{href:"#",onClick:E=>{E.preventDefault(),lt(`/projects/${a.id}`)}},"boot it on the project's page"),"."),Nt.default.createElement(nb,{projectId:a.id,sandboxReady:A,onStarted:E=>{m(E.id),S()}}),A&&u.sandbox&&u.modes.length>0&&Nt.default.createElement(Qr,{title:"The sandbox's browser",meta:"watch the explorer walk the app",bodyStyle:{padding:12}},Nt.default.createElement(hf,{sandbox:u.sandbox,modes:u.modes})),Nt.default.createElement(Qr,{title:"Accept into",testId:"scenarios-generator-destination",bodyStyle:{padding:12,display:"flex",flexDirection:"column",gap:8}},Nt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},Nt.default.createElement(ud,{label:"Collection",value:y.collectionId,onChange:E=>x({collectionId:E,setId:""})},Nt.default.createElement("option",{value:""},"Choose a collection\u2026"),t.map(E=>Nt.default.createElement("option",{key:E.id,value:E.id},E.name))),Nt.default.createElement(ud,{label:"Set",value:y.setId,onChange:E=>x(I=>({...I,setId:E}))},Nt.default.createElement("option",{value:""},h&&w.length===0?"The collection has no sets yet":"Choose a set\u2026"),w.map(E=>Nt.default.createElement("option",{key:E.id,value:E.id},E.product.name," / ",E.name)))),Nt.default.createElement("div",null,Nt.default.createElement(fe,{size:"sm",variant:"ghost",onClick:k},"New collection for ",a.name))),d.length===0?Nt.default.createElement(Be,null,Nt.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.")):Nt.default.createElement(Nt.default.Fragment,null,Nt.default.createElement(vf,{explorations:d,selectedId:C,onOpen:E=>m(E.id)}),!_&&Nt.default.createElement(ha,null,"Choose the set to accept into, above."),Nt.default.createElement(bf,{key:`${C}-${_?.id||"none"}`,explorationId:C,requireScenarioSet:!0,scenarioSet:_?{id:_.id,label:`${_.product.name} / ${_.name}`}:null,onAccepted:()=>r?.()}))))}var Kt=Z(J());var V2e=[{value:"document",label:"Paste YAML"},{value:"file",label:"Upload a file"},{value:"repository",label:"From a repository"}],G2e=`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] }`,A2e={create:"success",update:"warning",remove:"error",keep:"muted"};function W3({onImported:e}){let[t,r]=(0,qt.useState)("document"),[n,o]=(0,qt.useState)(""),[a,i]=(0,qt.useState)(""),[s,l]=(0,qt.useState)(""),[u,c]=(0,qt.useState)(""),[d,p]=(0,qt.useState)(".activeagents/evals"),[f,m]=(0,qt.useState)(!0),[y,b]=(0,qt.useState)(null),[h,g]=(0,qt.useState)(!1),[v,x]=(0,qt.useState)(null),S=()=>{let j=f?"merge":"replace";return t==="repository"?{repository:s.trim(),ref:u.trim()||void 0,path:d.trim()||void 0,mode:j}:{document:n,mode:j,...a?{source_path:a}:{}}},w=t==="repository"?!!s.trim():!!n.trim(),A=j=>X=>{j(X),b(null)},k=async j=>{g(!0),x(null);try{await j()}catch(X){x(X.message)}finally{g(!1)}},_=()=>k(async()=>{let j=await Gn("/api/scenario_catalogs/preview",{method:"POST",body:S(),fallback:"The preview failed"});b(j.previews||[])}),C=()=>k(async()=>{let j=await Gn("/api/scenario_catalogs",{method:"POST",body:S(),fallback:"Import refused"});b(null),o(""),i(""),e?.(j.catalogs||[])}),E=j=>{if(!j)return;let X=new FileReader;X.onload=()=>{i(j.name),A(o)(String(X.result||""))},X.onerror=()=>x(`Could not read ${j.name}.`),X.readAsText(j)};return qt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:12},"data-testid":"scenarios-import"},qt.default.createElement(Fe,null,qt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},qt.default.createElement(us,{options:_2e,value:t,onChange:j=>{r(j),b(null)}}),t==="document"&&qt.default.createElement(yn,{label:"YAML",value:n,onChange:A(o),placeholder:C2e,mono:!0,multiline:!0,rows:12,testId:"scenarios-import-yaml"}),t==="file"&&qt.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",qt.default.createElement("input",{type:"file",accept:".yml,.yaml,application/x-yaml,text/yaml",onChange:j=>E(j.target.files?.[0])}),a&&qt.default.createElement("span",{style:{fontFamily:V}},a," \xB7 ",n.length," characters")),t==="repository"&&qt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))"}},qt.default.createElement(yn,{label:"Repository",value:s,onChange:A(l),placeholder:"owner/name",mono:!0}),qt.default.createElement(yn,{label:"Ref",value:u,onChange:A(c),placeholder:"the default branch when empty",mono:!0}),qt.default.createElement(yn,{label:"Path",value:d,onChange:A(p),placeholder:".activeagents/evals or one .yml file",mono:!0})),qt.default.createElement(Kx,{label:"Keep what the document leaves out (merge). Off: the document replaces the collection.",checked:f,onChange:A(m)}),qt.default.createElement("div",{style:{display:"flex",gap:8}},qt.default.createElement(ge,{onClick:_,disabled:h||!w,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),qt.default.createElement(ge,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},uee(y||[])?"Apply, overwriting":"Apply")))),v&&qt.default.createElement(da,{tone:"error"},v),y&&y.map(j=>qt.default.createElement(E2e,{key:`${j.catalog?.key}-${j.source_path||""}`,preview:j})))}function E2e({preview:e}){let t=see(e);return qt.default.createElement(Fe,{testId:"scenarios-import-preview-result"},qt.default.createElement("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"}},qt.default.createElement(Ee,{tone:e.catalog?.action==="create"?"success":"info"},e.catalog?.action==="create"?"new collection":"existing collection"),qt.default.createElement("span",{style:{fontSize:13,color:"var(--color-text-primary)"}},lee(e))),e.source_path&&qt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:V,marginTop:4}},e.source_path),t.length===0?qt.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,color:"var(--color-text-secondary)"}},"Nothing changes: the collection already holds this document."):qt.default.createElement("div",{style:{display:"grid",gap:8,marginTop:10}},t.map(r=>qt.default.createElement("div",{key:r.action},qt.default.createElement("div",{style:{display:"flex",gap:6,alignItems:"center"}},qt.default.createElement(Ee,{tone:A2e[r.action]},r.label),qt.default.createElement("span",{style:{fontSize:12,color:"var(--color-text-secondary)"}},r.changes.length)),qt.default.createElement("ul",{style:{margin:"4px 0 0",paddingLeft:18,fontSize:12,fontFamily:V,color:"var(--color-text-secondary)"}},r.changes.slice(0,50).map(n=>qt.default.createElement("li",{key:`${n.level}-${n.path}`},n.level," ",n.path)),r.changes.length>50&&qt.default.createElement("li",null,"and ",r.changes.length-50," more"))))))}var N2e=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function H3({visit:e=0}){let[t,r]=(0,vt.useState)(()=>z3(Vn())),[n,o]=(0,vt.useState)(null),[a,i]=(0,vt.useState)(!1),[s,l]=(0,vt.useState)({agents:[],projects:[]}),[u,c]=(0,vt.useState)(null),[d,p]=(0,vt.useState)(null),[f,m]=(0,vt.useState)(!1);(0,vt.useEffect)(()=>{let v=()=>r(z3(Vn()));return window.addEventListener("popstate",v),window.addEventListener("dashboard:navigate",v),()=>{window.removeEventListener("popstate",v),window.removeEventListener("dashboard:navigate",v)}},[]);let y=(0,vt.useCallback)(async()=>{try{let v=await Gn("/api/scenario_catalogs",{fallback:"Could not list the collections"});o(v.catalogs||[]),i(v.storage_available===!0),c(null)}catch(v){c(v.message)}},[]),b=(0,vt.useCallback)(async()=>{try{let[v,x]=await Promise.all([Gn("/api/agents").catch(()=>({})),Gn("/api/projects").catch(()=>({}))]);l({agents:(v.agents||[]).filter(S=>!S.observed),projects:x.projects||[]})}catch{}},[]);(0,vt.useEffect)(()=>{y(),b()},[y,b,e]);let h=v=>{p(null),c(null),dt(ree(v))},g=async v=>{let x=await Gn("/api/scenario_catalogs",{method:"POST",body:{catalog:v},fallback:"Could not create the collection"});m(!1),await y(),h({collectionId:x.catalogs?.[0]?.id})};return t.collectionId?vt.default.createElement(F3,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:y,onDeleted:async()=>{await y(),h({})}}):vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),vt.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"What your agents are evaluated on, by product and set. Write them here, generate them by exploring a project's app, or import and export them as YAML.")),t.tab==="collections"&&vt.default.createElement(ge,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},f?"Close":"New collection")),vt.default.createElement(us,{options:N2e,value:t.tab,onChange:v=>h({tab:v})}),u&&vt.default.createElement(da,{tone:"error"},u),d&&vt.default.createElement(da,null,d),t.tab==="generate"&&vt.default.createElement(U3,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&vt.default.createElement(W3,{onImported:async v=>{await y(),v.length===1?h({collectionId:v[0].id}):p(`Imported ${v.map(x=>x.key).join(", ")||"nothing"}.`)}}),t.tab==="collections"&&vt.default.createElement(vt.default.Fragment,null,f&&vt.default.createElement(T2e,{onCreate:g}),n===null?vt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?vt.default.createElement(Fe,{testId:"scenarios-empty"},vt.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No scenarios yet. Start a new collection, generate scenarios by exploring a project's app, or import YAML, such as the"," ",vt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):vt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(v=>vt.default.createElement(Fe,{key:v.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:v.id}),testId:"scenarios-collection-card"},vt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},v.name),vt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vt.default.createElement("code",null,v.key),v.source_path?` \xB7 ${v.source_path}`:v.source_kind==="api"?" \xB7 written here":` \xB7 ${v.source_kind}`)),vt.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",vt.default.createElement("div",null,v.synced?"synced to storage":a?"not synced":"database only"))))))))}function T2e({onCreate:e}){let[t,r]=(0,vt.useState)(""),[n,o]=(0,vt.useState)(""),[a,i]=(0,vt.useState)(""),[s,l]=(0,vt.useState)(!1),[u,c]=(0,vt.useState)(null);return vt.default.createElement(Fe,{testId:"scenarios-new-collection-form"},vt.default.createElement("form",{onSubmit:async p=>{p.preventDefault(),l(!0),c(null);try{await e({name:t.trim(),key:n.trim(),description:a.trim()})}catch(f){c(f.message)}finally{l(!1)}},style:{display:"flex",flexDirection:"column",gap:10}},vt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},vt.default.createElement(yn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),vt.default.createElement(yn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),vt.default.createElement(yn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&vt.default.createElement(da,{tone:"error"},u),vt.default.createElement("div",null,vt.default.createElement(ge,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var an=Z(J());var O2e='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function P2e({request:e,onSettle:t}){let[r,n]=(0,an.useState)(""),o=(0,an.useRef)(null),a=(0,an.useRef)(null),i=(0,an.useId)(),s=(0,an.useId)(),l=NJ(e,r);(0,an.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(O2e)||[]];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 an.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"}},an.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)"}},an.default.createElement("h2",{id:i,style:{margin:0,fontSize:16,fontWeight:600}},e.title),an.default.createElement("div",{id:s},e.message&&an.default.createElement("p",{style:{margin:"8px 0 0",fontSize:13,lineHeight:1.5,color:"var(--color-text-secondary)"}},e.message),e.requireText&&an.default.createElement("label",{style:{display:"block",marginTop:14,fontSize:13,color:"var(--color-text-secondary)"}},"Type ",an.default.createElement("code",{style:{fontFamily:"var(--font-mono)",color:"var(--color-text-primary)",fontWeight:600}},e.requireText)," to confirm.",an.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)"}}))),an.default.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:18}},an.default.createElement(ge,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),an.default.createElement(ge,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function mee(){let[e,t]=(0,an.useState)(AJ());return(0,an.useEffect)(()=>EJ(t),[]),e?an.default.createElement(P2e,{key:I2e(e),request:e,onSettle:CJ}):null}var q3=new WeakMap,M2e=0;function I2e(e){return q3.has(e)||q3.set(e,++M2e),q3.get(e)}function D2e({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),[b,h]=(0,Nt.useState)(!1),[g,v]=(0,Nt.useState)("recent"),[x,S]=(0,Nt.useState)({messages:[]}),[w,A]=(0,Nt.useState)(null),k=yG(r),[_,C]=(0,Nt.useState)(null),{requests:E}=TC({refreshKey:l}),[j,X]=(0,Nt.useState)(0),[z,U]=(0,Nt.useState)(null);(0,Nt.useEffect)(()=>{let ce=()=>{let Q=vG(Vn(),k);Q.focusServer&&C(Q.focusServer),Q.sessionId&&U({kind:Q.sessionKind,id:Q.sessionId}),Q.replacePath&&window.history.replaceState({},"",nt(Q.replacePath)),Q.agentId?N(Q.agentId,Q.view):u(Q.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,Q)=>{f(!0);try{let $=await(await fetch(`/api/agents/${ce}`)).json();d($.agent),u(Q)}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)}},D=ce=>{v(ce),O(ce)},T=(ce,Q="info")=>{y({message:ce,type:Q}),setTimeout(()=>y(null),3e3)},I=(ce,Q=null)=>{let ee=kC(ce,{agent:Q,features:k});ee!==null&&window.history.pushState({},"",nt(ee))},P=async ce=>{f(!0);try{let Q=await fetch("/api/agents",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:ce})});if(Q.ok){let B=await Q.json();return s([B.agent,...i]),d(B.agent),u("editor"),T("Agent created successfully!","success"),I("editor",B.agent),null}let ee=await Q.json().catch(()=>({})),$={errors:ee.errors?.length?ee.errors:[ee.error||`Failed to create agent (${Q.status})`],fieldErrors:ee.field_errors||{}};return T($.errors.join(", "),"error"),$}catch{return T("Failed to create agent","error"),{errors:["Failed to create agent: the request did not complete"],fieldErrors:{}}}finally{f(!1)}},H=async(ce,Q)=>{f(!0);try{let ee=await fetch(`/api/agents/${ce}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:Q})});if(ee.ok){let $=await ee.json();s(i.map(B=>B.id===ce?$.agent:B)),d($.agent),T("Agent updated!","success")}else{let $=await ee.json();T($.errors?.join(", ")||"Failed to update agent","error")}}catch{T("Failed to update agent","error")}finally{f(!1)}},G=async ce=>{let Q=i.find(ee=>ee.id===ce);if(await Jr({title:Q?`Delete ${Q.name}?`:"Delete this agent?",message:"Its versions and run history are deleted with it. This cannot be undone.",confirmLabel:"Delete agent",danger:!0,requireText:Q?.name})){f(!0);try{(await fetch(`/api/agents/${ce}`,{method:"DELETE"})).ok&&(s(i.filter($=>$.id!==ce)),d(null),u("list"),T("Agent deleted","success"),I("list"))}catch{T("Failed to delete agent","error")}finally{f(!1)}}},L=async ce=>{f(!0);try{let Q=await fetch(`/api/agents/${ce}/duplicate`,{method:"POST"});if(Q.ok){let ee=await Q.json();s([ee.agent,...i]),T("Agent duplicated!","success")}}catch{T("Failed to duplicate agent","error")}finally{f(!1)}},Y=ce=>{s([ce,...i]),h(!1),T("Agent created from template!","success"),ie("editor",ce)},W=["editor","runner","agent-analytics","history"],ie=(ce,Q=null)=>{$0(ce,k)&&(X(ee=>ee+1),ce==="builder"&&A(null),Q?.id&&W.includes(ce)&&Q.instructions===void 0?N(Q.id,ce):(d(Q),u(ce)),I(ce,Q))},Me={assistant:()=>Nt.default.createElement(l3,{session:x,onSessionChange:S,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>ie("settings"),onReviewDraft:ce=>{A(ce),u("builder"),I("builder")}}),builder:()=>Nt.default.createElement(VN,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:P,onCancel:()=>ie(w?"assistant":"list"),isLoading:p}),editor:()=>c?Nt.default.createElement(w2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:ce=>H(c.id,ce),onDelete:()=>G(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(hD,{agent:c,recorderUrl:r.recorderUrl,onBack:()=>ie("editor",c)}):null,"agent-analytics":()=>c?Nt.default.createElement(w2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:ce=>H(c.id,ce),onDelete:()=>G(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(vD,{agent:c,onBack:()=>ie("editor",c)}):null,analytics:()=>Nt.default.createElement(yD,{onSelectAgent:ce=>{N(ce.id,"agent-analytics")}}),traces:()=>Nt.default.createElement($p,null),metrics:()=>Nt.default.createElement(PD,null),interactions:()=>Nt.default.createElement(Tu,null),tools:()=>Nt.default.createElement(MD,{onOpenServer:ce=>{C(ce),ie("mcp")}}),mcp:()=>Nt.default.createElement(ID,{focusServer:_,onOpenTools:()=>{C(null),ie("tools")}}),evaluations:()=>Nt.default.createElement(Cx,null),projects:()=>Nt.default.createElement(j3,{visit:j}),scenarios:()=>Nt.default.createElement(H3,{visit:j}),sessions:()=>Nt.default.createElement(QD,{agents:i,user:e}),exploration:()=>Nt.default.createElement($3,{visit:j}),replay:()=>z?Nt.default.createElement(GD,{key:`${z.kind}-${z.id}`,kind:z.kind,id:z.id,onHandoff:ce=>{let Q=ce?.handoff_state||{};Q.url&&window.open(Q.url,"_blank","noopener,noreferrer");let ee=Object.entries(Q.form_values||{}).map(([$,B])=>`${$}: ${B}`).join(" \xB7 ");T(Q.url?`Taking over in a new tab${ee?` \u2014 already entered: ${ee}`:""}`:"Taking over session...","info")},onBack:()=>MQ(window.history.state)?window.history.back():ie("sessions")}):null,sandbox:()=>Nt.default.createElement(BD,{initialType:"playwright_mcp",onClose:()=>ie("list")}),organization:()=>Nt.default.createElement(RD,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>Nt.default.createElement(i3,{user:e}),list:()=>Nt.default.createElement(qN,{agents:i,meta:r,onSelect:ce=>ie("editor",ce),onNew:()=>ie("builder"),onBrowseTemplates:()=>h(!0),onDuplicate:L,onDelete:G,onRefresh:O,sort:g,onSortChange:D,isLoading:p})},pe=()=>$0(l,k)?(Me[l]||Me.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(bD,{currentView:xG(l),onNavigate:ie,agentCount:i.length,pendingInputCount:DG(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(wD,{user:e,account:n}),Nt.default.createElement("main",{className:"flex-1 p-6 overflow-x-clip"},pe())),b&&Nt.default.createElement(xD,{onUseTemplate:Y,onClose:()=>h(!1)}),Nt.default.createElement(mee,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 K3(e){return Nt.default.createElement(V8,null,Nt.default.createElement($V,null,Nt.default.createElement(D2e,{...e})))}var j2e=new Set(["POST","PUT","PATCH","DELETE"]);function $2e(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(!j2e.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 L2e(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function gee(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=$2e(o,a,{base:r,csrfToken:L2e(),origin:t.location.origin});return i?n(...i):n(o,a)}}var z2e="active-agent-dashboard";function hee(){let e=document.getElementById(z2e);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,gee(t.mountPath||"/"),(0,vee.createRoot)(e).render(yee.default.createElement(K3,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",hee):hee(); + expect: { tools: [lookup_order] }`,Y2e={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),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 Yn("/api/scenario_catalogs/preview",{method:"POST",body:S(),fallback:"The preview failed"});x(I.previews||[])}),C=()=>k(async()=>{let I=await Yn("/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(Be,null,Kt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:10}},Kt.default.createElement(cs,{options:V2e,value:t,onChange:I=>{r(I),x(null)}}),t==="document"&&Kt.default.createElement(bn,{label:"YAML",value:n,onChange:_(o),placeholder:G2e,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:K}},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(ob,{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(fe,{onClick:A,disabled:h||!w,testId:"scenarios-import-preview"},h&&!y?"Reading\u2026":"Preview"),Kt.default.createElement(fe,{variant:"primary",onClick:C,disabled:h||!y||y.length===0,testId:"scenarios-import-apply"},Pee(y||[])?"Apply, overwriting":"Apply")))),v&&Kt.default.createElement(ha,{tone:"error"},v),y&&y.map(I=>Kt.default.createElement(X2e,{key:`${I.catalog?.key}-${I.source_path||""}`,preview:I})))}function X2e({preview:e}){let t=Tee(e);return Kt.default.createElement(Be,{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)"}},Oee(e))),e.source_path&&Kt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)",fontFamily:K,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:Y2e[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:K,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 Z2e=[{value:"collections",label:"Collections"},{value:"generate",label:"Generate"},{value:"import",label:"Import"}];function lj({visit:e=0}){let[t,r]=(0,vt.useState)(()=>nj(Gn())),[n,o]=(0,vt.useState)(null),[a,i]=(0,vt.useState)(!1),[s,l]=(0,vt.useState)({agents:[],projects:[]}),[u,c]=(0,vt.useState)(null),[d,p]=(0,vt.useState)(null),[f,m]=(0,vt.useState)(!1);(0,vt.useEffect)(()=>{let v=()=>r(nj(Gn()));return window.addEventListener("popstate",v),window.addEventListener("dashboard:navigate",v),()=>{window.removeEventListener("popstate",v),window.removeEventListener("dashboard:navigate",v)}},[]);let y=(0,vt.useCallback)(async()=>{try{let v=await Yn("/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,vt.useCallback)(async()=>{try{let[v,b]=await Promise.all([Yn("/api/agents").catch(()=>({})),Yn("/api/projects").catch(()=>({}))]);l({agents:(v.agents||[]).filter(S=>!S.observed),projects:b.projects||[]})}catch{}},[]);(0,vt.useEffect)(()=>{y(),x()},[y,x,e]);let h=v=>{p(null),c(null),lt(_ee(v))},g=async v=>{let b=await Yn("/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?vt.default.createElement(aj,{key:t.collectionId,collectionId:t.collectionId,agents:s.agents,projects:s.projects,storageAvailable:a,onBack:()=>h({}),onChanged:y,onDeleted:async()=>{await y(),h({})}}):vt.default.createElement("div",{style:{display:"flex",flexDirection:"column",gap:16},"data-testid":"scenarios-view"},vt.default.createElement("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("h1",{style:{margin:0,fontSize:24,fontWeight:700,letterSpacing:"-0.01em",color:"var(--color-text-primary)"}},"Scenarios"),vt.default.createElement("p",{style:{margin:"4px 0 0",fontSize:14,color:"var(--color-text-secondary)"}},"What your agents are evaluated on, by product and set. Write them here, generate them by exploring a project's app, or import and export them as YAML.")),t.tab==="collections"&&vt.default.createElement(fe,{variant:"primary",onClick:()=>m(v=>!v),testId:"scenarios-new-collection"},f?"Close":"New collection")),vt.default.createElement(cs,{options:Z2e,value:t.tab,onChange:v=>h({tab:v})}),u&&vt.default.createElement(ha,{tone:"error"},u),d&&vt.default.createElement(ha,null,d),t.tab==="generate"&&vt.default.createElement(ij,{projects:s.projects,collections:n||[],onAccepted:y}),t.tab==="import"&&vt.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"&&vt.default.createElement(vt.default.Fragment,null,f&&vt.default.createElement(J2e,{onCreate:g}),n===null?vt.default.createElement("p",{style:{color:"var(--color-text-secondary)"}},"Loading\u2026"):n.length===0?vt.default.createElement(Be,{testId:"scenarios-empty"},vt.default.createElement("p",{style:{margin:0,color:"var(--color-text-secondary)"}},"No scenarios yet. Start a new collection, generate scenarios by exploring a project's app, or import YAML, such as the"," ",vt.default.createElement("code",null,".activeagents/evals")," directory of a connected repository.")):vt.default.createElement("div",{style:{display:"grid",gap:12}},n.map(v=>vt.default.createElement(Be,{key:v.id,style:{cursor:"pointer"},onClick:()=>h({collectionId:v.id}),testId:"scenarios-collection-card"},vt.default.createElement("div",{style:{display:"flex",justifyContent:"space-between",gap:12,flexWrap:"wrap"}},vt.default.createElement("div",null,vt.default.createElement("div",{style:{fontWeight:600,color:"var(--color-text-primary)"}},v.name),vt.default.createElement("div",{style:{fontSize:12,color:"var(--color-text-secondary)"}},vt.default.createElement("code",null,v.key),v.source_path?` \xB7 ${v.source_path}`:v.source_kind==="api"?" \xB7 written here":` \xB7 ${v.source_kind}`)),vt.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",vt.default.createElement("div",null,v.synced?"synced to storage":a?"not synced":"database only"))))))))}function J2e({onCreate:e}){let[t,r]=(0,vt.useState)(""),[n,o]=(0,vt.useState)(""),[a,i]=(0,vt.useState)(""),[s,l]=(0,vt.useState)(!1),[u,c]=(0,vt.useState)(null);return vt.default.createElement(Be,{testId:"scenarios-new-collection-form"},vt.default.createElement("form",{onSubmit:async p=>{p.preventDefault(),l(!0),c(null);try{await e({name:t.trim(),key:n.trim(),description:a.trim()})}catch(f){c(f.message)}finally{l(!1)}},style:{display:"flex",flexDirection:"column",gap:10}},vt.default.createElement("div",{style:{display:"grid",gap:8,gridTemplateColumns:"repeat(auto-fit, minmax(200px, 1fr))"}},vt.default.createElement(bn,{label:"Name",value:t,onChange:r,placeholder:"Support desk"}),vt.default.createElement(bn,{label:"Key",value:n,onChange:o,placeholder:"made from the name when empty",mono:!0})),vt.default.createElement(bn,{label:"Description",value:a,onChange:i,placeholder:"optional"}),u&&vt.default.createElement(ha,{tone:"error"},u),vt.default.createElement("div",null,vt.default.createElement(fe,{type:"submit",variant:"primary",disabled:s||!t.trim()&&!n.trim()},s?"Creating\u2026":"Create collection"))))}var un=Z(J());var Q2e='button:not([disabled]), input:not([disabled]), [href], [tabindex]:not([tabindex="-1"])';function R2e({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=YJ(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(Q2e)||[]];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(fe,{testId:"confirm-cancel",onClick:()=>t(!1)},e.cancelLabel),un.default.createElement(fe,{testId:"confirm-confirm",variant:"primary",onClick:u,disabled:!l,style:d},e.confirmLabel))))}function $ee(){let[e,t]=(0,un.useState)(VJ());return(0,un.useEffect)(()=>GJ(t),[]),e?un.default.createElement(R2e,{key:tAe(e),request:e,onSettle:KJ}):null}var uj=new WeakMap,eAe=0;function tAe(e){return uj.has(e)||uj.set(e,++eAe),uj.get(e)}function rAe({user:e,initialAgents:t=[],meta:r={},account:n=null,subscription:o=null}){let{darkMode:a}=ut(),[i,s]=(0,Tt.useState)(t),[l,u]=(0,Tt.useState)("list"),[c,d]=(0,Tt.useState)(null),[p,f]=(0,Tt.useState)(!1),[m,y]=(0,Tt.useState)(null),[x,h]=(0,Tt.useState)(!1),[g,v]=(0,Tt.useState)("recent"),[b,S]=(0,Tt.useState)({messages:[]}),[w,_]=(0,Tt.useState)(null),k=GG(r),[A,C]=(0,Tt.useState)(null),{requests:E}=HC({refreshKey:l}),[I,Q]=(0,Tt.useState)(0),[$,F]=(0,Tt.useState)(null);(0,Tt.useEffect)(()=>{let ce=()=>{let R=YG(Gn(),k);R.focusServer&&C(R.focusServer),R.sessionId&&F({kind:R.sessionKind,id:R.sessionId}),R.replacePath&&window.history.replaceState({},"",et(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 te=await(await fetch(`/api/agents?sort=${ce}`)).json();s(te.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 te=FC(ce,{agent:R,features:k});te!==null&&window.history.pushState({},"",et(te))},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 ee=await R.json();return s([ee.agent,...i]),d(ee.agent),u("editor"),T("Agent created successfully!","success"),D("editor",ee.agent),null}let te=await R.json().catch(()=>({})),z={errors:te.errors?.length?te.errors:[te.error||`Failed to create agent (${R.status})`],fieldErrors:te.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)}},q=async(ce,R)=>{f(!0);try{let te=await fetch(`/api/agents/${ce}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:R})});if(te.ok){let z=await te.json();s(i.map(ee=>ee.id===ce?z.agent:ee)),d(z.agent),T("Agent updated!","success")}else{let z=await te.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(te=>te.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 te=await R.json();s([te.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)=>{Zx(ce,k)&&(Q(te=>te+1),ce==="builder"&&_(null),R?.id&&W.includes(ce)&&R.instructions===void 0?N(R.id,ce):(d(R),u(ce)),D(ce,R))},Me={assistant:()=>Tt.default.createElement(E3,{session:b,onSessionChange:S,executionEnabled:r.executionEnabled!==!1,onOpenSettings:()=>ie("settings"),onReviewDraft:ce=>{_(ce),u("builder"),D("builder")}}),builder:()=>Tt.default.createElement(mT,{key:w?.id||"new-agent",initialDraft:w,meta:r,onSave:M,onCancel:()=>ie(w?"assistant":"list"),isLoading:p}),editor:()=>c?Tt.default.createElement(L2,{key:`editor-${c.id}`,agent:c,meta:r,onSave:ce=>q(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?Tt.default.createElement(ID,{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?Tt.default.createElement(L2,{key:`agent-analytics-${c.id}`,agent:c,meta:r,initialTab:"metrics",onSave:ce=>q(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?Tt.default.createElement(jD,{agent:c,onBack:()=>ie("editor",c)}):null,analytics:()=>Tt.default.createElement(DD,{onSelectAgent:ce=>{N(ce.id,"agent-analytics")}}),traces:()=>Tt.default.createElement(Hp,null),metrics:()=>Tt.default.createElement(YD,null),interactions:()=>Tt.default.createElement(Tu,null),tools:()=>Tt.default.createElement(XD,{onOpenServer:ce=>{C(ce),ie("mcp")}}),mcp:()=>Tt.default.createElement(ZD,{focusServer:A,onOpenTools:()=>{C(null),ie("tools")}}),evaluations:()=>Tt.default.createElement(z0,null),projects:()=>Tt.default.createElement(ej,{visit:I}),scenarios:()=>Tt.default.createElement(lj,{visit:I}),sessions:()=>Tt.default.createElement(g3,{agents:i,user:e}),exploration:()=>Tt.default.createElement(tj,{visit:I}),replay:()=>$?Tt.default.createElement(c3,{key:`${$.kind}-${$.id}`,kind:$.kind,id:$.id,onHandoff:ce=>{let R=ce?.handoff_state||{};R.url&&window.open(R.url,"_blank","noopener,noreferrer");let te=Object.entries(R.form_values||{}).map(([z,ee])=>`${z}: ${ee}`).join(" \xB7 ");T(R.url?`Taking over in a new tab${te?` \u2014 already entered: ${te}`:""}`:"Taking over session...","info")},onBack:()=>RQ(window.history.state)?window.history.back():ie("sessions")}):null,sandbox:()=>Tt.default.createElement(r3,{initialType:"playwright_mcp",showAgents:!0,onClose:()=>ie("list")}),organization:()=>Tt.default.createElement(h3,{user:e,account:n,subscription:o,agentCount:i.length}),settings:()=>Tt.default.createElement(C3,{user:e}),list:()=>Tt.default.createElement(aT,{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})},he=()=>Zx(l,k)?(Me[l]||Me.list)():null;return Tt.default.createElement("div",{className:`aa-dashboard min-h-screen flex${a?" theme-dark":""}`,style:{backgroundColor:a?"#0f0f0f":"#f9fafb"}},Tt.default.createElement(LD,{currentView:XG(l),onNavigate:ie,agentCount:i.length,pendingInputCount:eY(E),account:n,user:e,gemVersion:r.activeagentVersion,features:k}),Tt.default.createElement("div",{className:"flex-1 flex flex-col min-w-0"},Tt.default.createElement(zD,{user:e,account:n}),Tt.default.createElement("main",{className:"flex-1 p-6 overflow-x-clip"},he())),x&&Tt.default.createElement($D,{onUseTemplate:G,onClose:()=>h(!1)}),Tt.default.createElement($ee,null),m&&Tt.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&&Tt.default.createElement("div",{className:"fixed inset-0 bg-black bg-opacity-20 flex items-center justify-center z-50"},Tt.default.createElement("div",{className:`rounded-lg p-4 shadow-xl ${a?"bg-gray-800":"bg-white"}`},Tt.default.createElement("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-red-500"}))))}function cj(e){return Tt.default.createElement(s6,null,Tt.default.createElement(pG,null,Tt.default.createElement(rAe,{...e})))}var nAe=new Set(["POST","PUT","PATCH","DELETE"]);function oAe(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(!nAe.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 aAe(e=globalThis.document){return e?.querySelector('meta[name="csrf-token"]')?.content||null}function Lee(e,t=globalThis){let r=e.replace(/\/$/,""),n=t.fetch.bind(t);t.fetch=(o,a)=>{let i=oAe(o,a,{base:r,csrfToken:aAe(),origin:t.location.origin});return i?n(...i):n(o,a)}}var iAe="active-agent-dashboard";function zee(){let e=document.getElementById(iAe);if(!e)return;let t=JSON.parse(e.dataset.props||"{}");window.ACTIVE_AGENT_DASHBOARD=t,Lee(t.mountPath||"/"),(0,Fee.createRoot)(e).render(Bee.default.createElement(cj,{...t}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",zee):zee(); /*! Bundled license information: react/cjs/react.production.js: diff --git a/actionagent/app/controllers/action_agent/api/agents_controller.rb b/actionagent/app/controllers/action_agent/api/agents_controller.rb index 5cf9bf491..f9b864c3e 100644 --- a/actionagent/app/controllers/action_agent/api/agents_controller.rb +++ b/actionagent/app/controllers/action_agent/api/agents_controller.rb @@ -292,6 +292,29 @@ def tool_roster ).as_json end + # GET /api/agents/tool_roster + # + # The roster an agent not created yet can be given — what the builder's + # Configure step offers. The same rows as #tool_roster for a saved + # agent with nothing enabled: every tool the toolbox or the host's + # schema tools implement, and every MCP service the catalog, the host's + # registrations and the caller's live checkout runtimes describe, each + # saying whether a run can call it. Usage reads the workspace instead of + # an agent's history: which services its agents already enable. + def new_tool_roster + agent = owner_agents.build + runtimes = SandboxSession.runtime_server_listings( + SandboxSession.for_owner(agent.owner).where(id: owned(SandboxSession).select(:id)) + ) + + render json: AgentToolRoster.new( + agent: agent, + traces: owned_traces, + runtimes: runtimes, + workspace_agents: owner_agents + ).as_json + end + # GET /api/agents/:id/recorded_models # # The model names this agent's generations were recorded under, most diff --git a/actionagent/app/models/action_agent/agent.rb b/actionagent/app/models/action_agent/agent.rb index 0db362883..870e8cac9 100644 --- a/actionagent/app/models/action_agent/agent.rb +++ b/actionagent/app/models/action_agent/agent.rb @@ -51,6 +51,7 @@ def self.polymorphic_name # Callbacks before_validation :generate_slug, on: :create before_validation :apply_conventional_schema_tools, on: :create + before_validation :require_approval_for_gained_side_effects, unless: :observed? after_create :create_initial_version after_update :create_version_on_config_change, if: :configuration_changed? after_destroy :release_telemetry_traces, if: :observed? @@ -83,6 +84,30 @@ def self.polymorphic_name github ruby rails aws gcp python typescript docker kubernetes ].freeze + # What each instruction set adds to the instructions a run executes + # under (#composed_instructions_for): the conventions of that stack, as a + # developer message the model can act on. + INSTRUCTION_SET_GUIDANCE = { + "github" => "Work the GitHub way: small focused commits with messages that say why, branches named for the " \ + "change, pull requests that describe what changed and how it was verified, and issues referenced by number.", + "ruby" => "Write idiomatic Ruby: follow the project's RuboCop configuration, prefer small methods and plain " \ + "objects, use keyword arguments for options, and add or update tests (Minitest or RSpec, as the project uses).", + "rails" => "Follow Rails conventions: fat models and thin controllers, strong parameters, migrations for every " \ + "schema change, scopes and validations on the model, and bin/rails commands for generators, tests and tasks.", + "aws" => "For AWS, prefer least-privilege IAM, keep infrastructure in code (CloudFormation, CDK or Terraform), " \ + "name the region explicitly, and never print or commit credentials.", + "gcp" => "For Google Cloud, prefer least-privilege service accounts, keep infrastructure in code (Terraform), " \ + "name the project and region explicitly, and use Secret Manager rather than plain environment values.", + "python" => "Write idiomatic Python: PEP 8, type hints on public functions, the project's own environment and " \ + "dependency tool, and pytest tests for new behaviour.", + "typescript" => "Write strict TypeScript: no implicit any, explicit types on exported APIs, the project's lint and " \ + "format settings, and tests in the framework the project already uses.", + "docker" => "For Docker, keep images small and reproducible: pinned base image versions, multi-stage builds, a " \ + "non-root user, and no secrets baked into layers.", + "kubernetes" => "For Kubernetes, write declarative manifests with resource requests and limits, readiness and " \ + "liveness probes, and Secrets for credentials; apply changes namespace by namespace." + }.freeze + # Built-in tools/MCPs. Host-declared schema tools are offered alongside # these — see .available_tools, which is what the editor and the APIs # serialize. This constant stays the built-in set so existing references @@ -156,6 +181,24 @@ def apply_conventional_schema_tools self.tools = defaults if defaults.any? end + # run_command, write_file, edit_file and slack_post_message wait for a + # person's approval unless the agent's approval list says otherwise + # (AgentToolbox::APPROVAL_BY_DEFAULT). They join the list when the agent + # gains their capability and this save brought no approval list of its + # own: an agent built from a template, a POST to the agents API with + # tools alone, a PATCH that enables a capability. The builder and the + # Tools tab send the list, so an Approval switch turned off holds. + def require_approval_for_gained_side_effects + return unless has_attribute?(:approval_required_tools) + return if attribute_came_from_user?("approval_required_tools") + + gained = Array(tools).map(&:to_s) - Array(tools_in_database).map(&:to_s) + names = AgentToolbox.default_approvals(gained) + return if names.empty? + + self[:approval_required_tools] = approval_required_tools | names + end + # The ActiveAgent class name this agent's runs are recorded under — the # correlation key between platform Agent records and telemetry traces # (TelemetryTrace#agent_class) and solid_agent contexts. An observed @@ -229,9 +272,19 @@ def action_prompt_for(action_name) # The system instructions an action executes under: named actions stack # their prompt below the agent's base instructions; the default action # uses the base instructions alone. + # + # The agent's instruction sets come last, as the conventions to work by. def composed_instructions_for(action_name) action = action_prompt_for(action_name) - [ instructions, action&.dig("prompt") ].map(&:presence).compact.join("\n\n").presence + [ instructions, action&.dig("prompt"), instruction_set_guidance ].map(&:presence).compact.join("\n\n").presence + end + + # The guidance of the instruction sets this agent selected, or nil. + def instruction_set_guidance + lines = Array(instruction_sets).filter_map { |set| INSTRUCTION_SET_GUIDANCE[set.to_s] } + return nil if lines.empty? + + "Conventions to follow:\n#{lines.map { |line| "- #{line}" }.join("\n")}" end # Returns the configuration as a hash for versioning diff --git a/actionagent/app/models/action_agent/provider_key.rb b/actionagent/app/models/action_agent/provider_key.rb index f8d4d1b54..57df59e48 100644 --- a/actionagent/app/models/action_agent/provider_key.rb +++ b/actionagent/app/models/action_agent/provider_key.rb @@ -39,7 +39,8 @@ class ProviderKey < ApplicationRecord HOST_PROVIDERS = %w[ollama].freeze # Tools connected with a credential, configured beside the providers # (Settings -> Integrations) but never offered to the agent builder. - CONNECTION_PROVIDERS = %w[claude_code codex].freeze + # Slack's is the bot token the agents' slack tools post with (SlackTools). + CONNECTION_PROVIDERS = %w[claude_code codex slack].freeze PROVIDERS = (KEY_PROVIDERS + HOST_PROVIDERS + CONNECTION_PROVIDERS).freeze # Only an Anthropic API key (sk-ant-api03-…, from the Claude Console or @@ -52,6 +53,7 @@ class ProviderKey < ApplicationRecord # dashboard never touches the credential. CLAUDE_CODE_CREDENTIAL = /\Ask-ant-api\d{2}-[A-Za-z0-9_-]+\z/ CODEX_CREDENTIAL = /\Ask-(?!ant-|or-)[A-Za-z0-9_-]+\z/ + SLACK_CREDENTIAL = /\Axoxb-[A-Za-z0-9-]+\z/ # A Claude subscription token, as earlier versions stored. Recognized so # a stored one is never handed out (see #needs_replacing?). SUBSCRIPTION_TOKEN_PREFIX = "sk-ant-oat" @@ -95,6 +97,8 @@ class ProviderKey < ApplicationRecord }, if: -> { provider == "claude_code" } validates :credential, format: { with: CODEX_CREDENTIAL, message: "must be an OpenAI API key (sk-…)" }, if: -> { provider == "codex" } + validates :credential, format: { with: SLACK_CREDENTIAL, message: "must be a Slack bot token (xoxb-…)" }, + if: -> { provider == "slack" } validates :api_key, length: { maximum: 500 }, allow_nil: true # Deletes every Claude Code connection that still holds a Claude diff --git a/actionagent/app/services/action_agent/agent_execution_service.rb b/actionagent/app/services/action_agent/agent_execution_service.rb index a28ac595b..60e68d50a 100644 --- a/actionagent/app/services/action_agent/agent_execution_service.rb +++ b/actionagent/app/services/action_agent/agent_execution_service.rb @@ -537,6 +537,12 @@ def dispatch_tool(name, kwargs, tool_call_id) } when "call_agent" call_agent(slug: kwargs[:slug], message: kwargs[:message]) + when "translate_text" + translate_text(**kwargs.to_h.symbolize_keys.slice(:text, :target_language, :source_language)) + when *CheckoutTools::FUNCTIONS + checkout_tools.call(name.to_s, kwargs) + when *SlackTools::FUNCTIONS + SlackTools.new(SlackTools.token_for(owner)).call(name.to_s, kwargs) when "request_handoff" request_handoff(**kwargs.slice(:reason, :url, :form_values, :instructions)) else @@ -727,6 +733,37 @@ def estimated_tokens(text) (text.length / 4.0).round end + # The checkout tools act on the sandbox the run was given, found among + # the agent's owner's sessions as the dispatcher finds its runtime. + def checkout_tools + @checkout_tools ||= begin + sandbox_id = @run.try(:sandbox_id) + CheckoutTools.new(sandbox_id && SandboxSession.for_owner(owner).find_by(session_id: sandbox_id)) + end + end + + # translate_text: one generation on this run's provider, model and the + # owner's credentials, with no tools and no conversation. + def translate_text(text:, target_language:, source_language: nil) + return { error: "No text to translate" } if text.to_s.strip.empty? + return { error: "target_language is required" } if target_language.to_s.strip.empty? + + name = provider + options = { model: requested_model }.merge(owner_provider_options(name)) + translator = Class.new(ActiveAgent::Base) do + define_singleton_method(:name) { "ActionAgent::Translator" } + generate_with name, **options + end + from = source_language.present? ? " from #{source_language}" : "" + instructions = "Translate the user's text#{from} into #{target_language}. Reply with the translation only — " \ + "no notes, quotes or preamble. Keep formatting, code, URLs and placeholders exactly as they are." + response = translator.prompt(message: text.to_s, instructions: instructions).generate_now + + { translation: response&.message&.content.to_s, target_language: target_language } + rescue StandardError => e + { error: "Translation failed: #{e.message}" } + end + def call_agent(slug:, message:) depth = Thread.current[:agent_call_depth].to_i return { error: "call_agent depth limit (#{MAX_CALL_DEPTH}) reached" } if depth >= MAX_CALL_DEPTH diff --git a/actionagent/app/services/action_agent/agent_tool_roster.rb b/actionagent/app/services/action_agent/agent_tool_roster.rb index a30a02cda..ac77ed6a2 100644 --- a/actionagent/app/services/action_agent/agent_tool_roster.rb +++ b/actionagent/app/services/action_agent/agent_tool_roster.rb @@ -50,18 +50,25 @@ class AgentToolRoster # workspace already talks to, then the rest of the catalog. STATUS_RANK = { "active" => 0, "configured" => 1, "available" => 2, "idle" => 3 }.freeze - attr_reader :agent, :discovery, :runtimes + attr_reader :agent, :discovery, :runtimes, :workspace_agents # @param agent [ActionAgent::Agent] the agent being edited # @param traces [ActiveRecord::Relation] the traces the caller may read # @param hours [Integer] the window the usage columns are scoped to # @param runtimes [Array] live checkout sandbox runtimes this agent # can be given, as SandboxSession.runtime_server_listings returns them - def initialize(agent:, traces:, hours: ToolDiscovery::DEFAULT_WINDOW_HOURS, runtimes: []) + # @param workspace_agents [ActiveRecord::Relation, nil] the workspace's + # other agents, whose MCP servers each service row counts as + # +workspace_agents+ — what a new agent's builder shows as already in + # use, since an unsaved agent has no usage of its own to show + def initialize(agent:, traces:, hours: ToolDiscovery::DEFAULT_WINDOW_HOURS, runtimes: [], workspace_agents: nil) @agent = agent @runtimes = Array(runtimes).index_by { |runtime| runtime[:key] } + @workspace_agents = workspace_agents + # An agent not saved yet has no traces of its own, and no name to + # match unattributed ones by. @discovery = ToolDiscovery.new( - traces: agent.telemetry_traces(traces), + traces: agent.persisted? ? agent.telemetry_traces(traces) : traces.none, agents: Agent.where(id: agent.id), hours: hours ) @@ -118,6 +125,7 @@ def service_row(key) used = detected_by_server[key] || [] calls = used.sum { |tool| tool[:calls] } enabled = configured_servers.key?(key) + unreachable = MCPToolDispatcher.unreachable_reason(MCPCatalog.connection(key) || runtimes[key]) { key: key, @@ -133,10 +141,25 @@ def service_row(key) calls: calls, errors: used.sum { |tool| tool[:errors] }, last_seen: used.filter_map { |tool| tool[:last_seen] }.max, + # Whether a dashboard run reaches it (MCPToolDispatcher), and when + # not, why: a stdio server, or one needing a credential it can't send. + callable: unreachable.nil?, + unavailable_reason: unreachable, + workspace_agents: workspace_usage[key].to_i, tools: service_tools(key, catalog, used) } end + # server key => how many of the workspace's agents enable it. Empty + # unless the caller handed in +workspace_agents+. + def workspace_usage + @workspace_usage ||= Array(workspace_agents).each_with_object(Hash.new(0)) do |other, counts| + next if agent.persisted? && other.id == agent.id + + self.class.configured_servers(other).each_key { |key| counts[key] += 1 } + end + end + # How to reach the server, in the one line the expanded panel shows: # "Streamable HTTP · " for the ones the dashboard can call, # "sandbox · " for the ones it can start, "stdio · " @@ -233,6 +256,10 @@ def dashboard_rows description: Agent::TOOL_DESCRIPTIONS[capability], enabled: saved_tools.include?(capability), editable: true, + # Whether AgentToolbox gives the model anything for it. A capability + # without definitions is a name on the roster and nothing more, so + # the builder offers its MCP service (or nothing) in its place. + implemented: AgentToolbox::DEFINITIONS.key?(capability), approval_names: capability_functions(capability) - AgentToolbox::INPUT_FUNCTIONS ) end @@ -283,27 +310,35 @@ def dashboard_function_names # carries a top-level Hash keyed by server name — the same three shapes # EvaluationToolResolver tolerates. def configured_servers - @configured_servers ||= configured_entries.each_with_object({}) do |entry, map| - key = entry_key(entry) - map[key] = entry if key.present? - end + @configured_servers ||= self.class.configured_servers(agent) end - def configured_entries - servers = agent.mcp_servers + class << self + # server key => the entry +agent+ stores for it, in any of the three + # shapes above. + def configured_servers(agent) + configured_entries(agent.mcp_servers).each_with_object({}) do |entry, map| + key = entry_key(entry) + map[key] = entry if key.present? + end + end + + private - if servers.is_a?(Hash) - servers.map { |key, value| value.respond_to?(:key?) ? value.to_h.stringify_keys.merge("key" => key.to_s) : key.to_s } - else - Array(servers) + def configured_entries(servers) + if servers.is_a?(Hash) + servers.map { |key, value| value.respond_to?(:key?) ? value.to_h.stringify_keys.merge("key" => key.to_s) : key.to_s } + else + Array(servers) + end end - end - def entry_key(entry) - return entry.to_s.strip.presence if entry.is_a?(String) || entry.is_a?(Symbol) - return nil unless entry.respond_to?(:key?) + def entry_key(entry) + return entry.to_s.strip.presence if entry.is_a?(String) || entry.is_a?(Symbol) + return nil unless entry.respond_to?(:key?) - (entry["key"] || entry[:key] || entry["name"] || entry[:name]).to_s.strip.presence + (entry["key"] || entry[:key] || entry["name"] || entry[:name]).to_s.strip.presence + end end # The per-server allow-list, or nil when the entry names none — which diff --git a/actionagent/app/services/action_agent/agent_toolbox.rb b/actionagent/app/services/action_agent/agent_toolbox.rb index 218d92c4c..3a28a42c7 100644 --- a/actionagent/app/services/action_agent/agent_toolbox.rb +++ b/actionagent/app/services/action_agent/agent_toolbox.rb @@ -11,9 +11,11 @@ module ActionAgent # tool-call roundtrips that show up as :tool spans in Traces, tool messages # in Interactions, and tool counts in Metrics. # - # Only tools with a safe server-side implementation are mapped; anything - # else an agent enables (terminal, playwright, ...) is ignored for platform - # execution. + # Every capability in Agent::AVAILABLE_TOOLS has definitions here. The ones + # that act for the run — on its checkout (CheckoutTools), its Slack + # connection (SlackTools), its provider (translate_text), its memory, its + # workspace's agents, or a person — are routed by AgentExecutionService and + # have no FUNCTIONS entry. class AgentToolbox FETCH_LIMIT_BYTES = 50_000 FETCH_TIMEOUT_SECONDS = 5 @@ -262,6 +264,138 @@ class AgentToolbox } } ], + # The checkout capabilities: they act on the checkout sandbox the run + # was given (CheckoutTools), so AgentExecutionService routes them, and + # they are NOT in FUNCTIONS below. + "terminal" => [ + { + name: "run_command", + description: "Run a shell command (bash) in the root of the repository checkout this run was given, with the " \ + "app's environment and database, and return its exit status and combined output. Use it to run tests, " \ + "rake tasks, scripts or git. Each call starts a fresh shell.", + parameters: { + type: "object", + properties: { + command: { type: "string", description: "The command line, e.g. bin/rails test test/models" }, + timeout_seconds: { type: "integer", description: "Stop the command after this many seconds (at most 120)" } + }, + required: [ "command" ] + } + } + ], + "filesystem" => [ + { + name: "list_files", + description: "List the files in the repository checkout this run was given, tracked and untracked, without " \ + "the ones .gitignore excludes. Pass a directory to list only what is under it.", + parameters: { + type: "object", + properties: { path: { type: "string", description: "A directory relative to the checkout root, e.g. app/models" } }, + required: [] + } + }, + { + name: "read_file", + description: "Read a text file from the repository checkout this run was given.", + parameters: { + type: "object", + properties: { path: { type: "string", description: "The file's path relative to the checkout root" } }, + required: [ "path" ] + } + }, + { + name: "write_file", + description: "Write a text file in the repository checkout this run was given, replacing it if it exists and " \ + "creating the directories it needs.", + parameters: { + type: "object", + properties: { + path: { type: "string", description: "The file's path relative to the checkout root" }, + content: { type: "string", description: "The file's complete new content" } + }, + required: [ "path", "content" ] + } + } + ], + "edit" => [ + { + name: "edit_file", + description: "Edit a file in the repository checkout this run was given by replacing one exact passage. " \ + "old_text must appear exactly once in the file; include enough surrounding lines to make it unique.", + parameters: { + type: "object", + properties: { + path: { type: "string", description: "The file's path relative to the checkout root" }, + old_text: { type: "string", description: "The exact text to replace" }, + new_text: { type: "string", description: "What to put in its place" } + }, + required: [ "path", "old_text", "new_text" ] + } + } + ], + "database" => [ + { + name: "query_database", + description: "Run a read-only SQL query against the app's database in the repository checkout this run was " \ + "given, and return the columns and up to 200 rows. Writes are refused.", + parameters: { + type: "object", + properties: { sql: { type: "string", description: "One SQL statement, e.g. SELECT id, email FROM users LIMIT 10" } }, + required: [ "sql" ] + } + } + ], + # Through the owner's Slack bot token (SlackTools), routed by + # AgentExecutionService. + "slack" => [ + { + name: "slack_list_channels", + description: "List the Slack channels the workspace's bot can see, with their ids.", + parameters: { type: "object", properties: {}, required: [] } + }, + { + name: "slack_read_channel", + description: "Read a Slack channel's most recent messages, newest first.", + parameters: { + type: "object", + properties: { + channel: { type: "string", description: "The channel id, e.g. C0123456789" }, + limit: { type: "integer", description: "How many messages (default 20, at most 50)" } + }, + required: [ "channel" ] + } + }, + { + name: "slack_post_message", + description: "Post a message to a Slack channel as the workspace's bot, or reply in a thread.", + parameters: { + type: "object", + properties: { + channel: { type: "string", description: "The channel id, e.g. C0123456789" }, + text: { type: "string", description: "The message, in Slack mrkdwn" }, + thread_ts: { type: "string", description: "Reply in the thread of this message ts" } + }, + required: [ "channel", "text" ] + } + } + ], + # A generation on the run's own provider, model and credentials, + # routed by AgentExecutionService. + "translate" => [ + { + name: "translate_text", + description: "Translate text into another language, keeping its formatting, code and placeholders.", + parameters: { + type: "object", + properties: { + text: { type: "string", description: "The text to translate" }, + target_language: { type: "string", description: "The language to translate into, e.g. Spanish or ja" }, + source_language: { type: "string", description: "The text's language, when known" } + }, + required: [ "text", "target_language" ] + } + } + ], # Memory tools mirror solid_agent's HasMemory contract. They are NOT in # FUNCTIONS below — execution is subject-bound, so AgentExecutionService # routes them to the run's AgentMemory instead of this module. @@ -315,6 +449,19 @@ class AgentToolbox # AgentExecutionService. INPUT_FUNCTIONS = %w[ask_user request_approval request_secret].freeze + # The functions with side effects outside the conversation, by the + # capability that exposes them. They wait for a person's approval unless + # the agent's approval list says otherwise: Agent puts them on the list + # when a capability is gained without one (a template, the agents API), + # and the builder and the Tools tab add them when a capability is + # switched on (frontend/utils/builderRoster.mjs keeps the same table). + APPROVAL_BY_DEFAULT = { + "terminal" => %w[run_command], + "filesystem" => %w[write_file], + "edit" => %w[edit_file], + "slack" => %w[slack_post_message] + }.freeze + # Function name => implementation method, for routing tool calls. FUNCTIONS = { "fetch_url" => :fetch_url, @@ -365,6 +512,12 @@ def definitions_for(tool_names, browser_attached: false) end.reject { |definition| definition[:name].to_s == REQUEST_SECRET_DEFINITION[:name] } end + # The approval list +tool_names+ get by default: the side-effecting + # functions of the capabilities among them (APPROVAL_BY_DEFAULT). + def default_approvals(tool_names) + Array(tool_names).flat_map { |name| APPROVAL_BY_DEFAULT[name.to_s] || [] }.uniq + end + # Whether runs may use the process-wide browser: never in a # multi-tenant install. def shared_browser? diff --git a/actionagent/app/services/action_agent/checkout_tools.rb b/actionagent/app/services/action_agent/checkout_tools.rb new file mode 100644 index 000000000..55bd66d68 --- /dev/null +++ b/actionagent/app/services/action_agent/checkout_tools.rb @@ -0,0 +1,154 @@ +# frozen_string_literal: true + +module ActionAgent + # The toolbox capabilities that work in a checkout: terminal (run_command), + # filesystem (list_files, read_file, write_file), edit (edit_file) and + # database (query_database). Each acts on the checkout sandbox the run was + # given (AgentRun#sandbox_id — the runner's and an evaluation's + # `sandbox_id`), through SandboxOrchestrator, so they reach exactly what a + # Claude Code session in that checkout reaches. + # + # A run given no checkout gets an error saying how to give it one, rather + # than a tool that silently does nothing. Results and errors are returned + # as hashes for the model to read. + class CheckoutTools + FUNCTIONS = %w[run_command list_files read_file write_file edit_file query_database].freeze + + # Rows query_database returns at most, and how long it may take, Rails + # boot included. + MAX_QUERY_ROWS = 200 + QUERY_TIMEOUT = 90 + # The line the query script's JSON follows, so whatever the app prints + # while booting is not mistaken for the result. + QUERY_MARKER = "__ACTION_AGENT_QUERY__" + + NO_CHECKOUT = "This run has no checkout sandbox. Choose one under Checkout on the agent's Run page " \ + "(or run an evaluation against one), then run again." + + def self.function?(name) + FUNCTIONS.include?(name.to_s) + end + + # @param sandbox [SandboxSession, nil] the run's checkout, or nil + def initialize(sandbox, orchestrator: nil) + @sandbox = sandbox + @orchestrator = orchestrator + end + + # @return [Hash] + def call(name, kwargs) + return { error: "Unknown tool: #{name}" } unless self.class.function?(name) + return { error: NO_CHECKOUT } unless @sandbox + unless @sandbox.ready? || @sandbox.running? + return { error: "The checkout sandbox #{@sandbox.session_id} is #{@sandbox.status}; start it again and rerun" } + end + + args = kwargs.to_h.symbolize_keys + case name.to_s + when "run_command" then run_command(**args.slice(:command, :timeout_seconds)) + when "list_files" then list_files(**args.slice(:path)) + when "read_file" then read_file(**args.slice(:path)) + when "write_file" then write_file(**args.slice(:path, :content)) + when "edit_file" then edit_file(**args.slice(:path, :old_text, :new_text)) + when "query_database" then query_database(**args.slice(:sql)) + end + rescue ArgumentError, SandboxOrchestrator::UnsupportedBackendError, LocalSandboxBackend::Error => e + { error: e.message } + end + + def run_command(command:, timeout_seconds: nil) + orchestrator.run_command(@sandbox, command.to_s, timeout: timeout_seconds&.to_i) + end + + def list_files(path: nil) + orchestrator.list_files(@sandbox, path.presence) + end + + def read_file(path:) + content = orchestrator.read_file(@sandbox, path.to_s) + return { error: "#{path} does not exist in the checkout" } if content.nil? + + text = content.dup.force_encoding(Encoding::UTF_8) + return { error: "#{path} is not a text file" } unless text.valid_encoding? + + { path: path, content: text } + end + + def write_file(path:, content:) + orchestrator.write_file(@sandbox, path.to_s, content.to_s) + end + + # One exact replacement, the edit a model can say precisely: +old_text+ + # must appear exactly once, so the edit lands where it was meant to. + def edit_file(path:, old_text:, new_text:) + current = read_file(path: path) + return current if current[:error] + + occurrences = current[:content].scan(old_text.to_s).size + return { error: "old_text is empty" } if old_text.to_s.empty? + return { error: "old_text was not found in #{path}" } if occurrences.zero? + return { error: "old_text appears #{occurrences} times in #{path}; include more context so it appears once" } if occurrences > 1 + + written = orchestrator.write_file(@sandbox, path.to_s, current[:content].sub(old_text.to_s) { new_text.to_s }) + written.merge(replaced: 1) + end + + # Runs +sql+ in the checkout's own Rails environment, against the + # database its boot provisioned, inside a read-only transaction that is + # rolled back (PostgreSQL, MySQL), or on a query_only connection (SQLite). The SQL travels base64-encoded inside the script, so + # nothing in it reaches the shell. + def query_database(sql:) + return { error: "No SQL to run" } if sql.to_s.strip.empty? + + result = orchestrator.run_command(@sandbox, query_command(sql.to_s), timeout: QUERY_TIMEOUT) + line = result[:output].to_s.lines.reverse.find { |candidate| candidate.start_with?(QUERY_MARKER) } + unless line + return { error: "The query did not run", exit_status: result[:exit_status], output: result[:output].to_s.last(4_000) } + end + + JSON.parse(line.delete_prefix(QUERY_MARKER)) + rescue JSON::ParserError + { error: "The query's result could not be read", output: result[:output].to_s.last(4_000) } + end + + private + + def orchestrator + @orchestrator ||= SandboxOrchestrator.new + end + + def query_command(sql) + encoded = [ sql ].pack("m0") + script = <<~RUBY + sql = "#{encoded}".unpack1("m0").force_encoding("UTF-8") + connection = ActiveRecord::Base.connection + adapter = connection.adapter_name.downcase + out = nil + read = lambda do + result = connection.select_all(sql) + out = { columns: result.columns, rows: result.rows.first(#{MAX_QUERY_ROWS}), row_count: result.rows.size, truncated: result.rows.size > #{MAX_QUERY_ROWS} } + end + begin + if adapter.include?("sqlite") + # Rails opens SQLite transactions with BEGIN IMMEDIATE, which + # query_only refuses; query_only alone keeps the connection from writing. + connection.execute("PRAGMA query_only = ON") + read.call + else + connection.execute("SET SESSION TRANSACTION READ ONLY") if adapter.match?(/mysql|trilogy/) + connection.transaction do + connection.execute("SET TRANSACTION READ ONLY") if adapter.include?("postg") + read.call + raise ActiveRecord::Rollback + end + end + rescue => e + out = { error: e.message.to_s[0, 2000] } + end + puts "#{QUERY_MARKER}" + out.to_json + RUBY + + "bin/rails runner #{Shellwords.escape(script)}" + end + end +end diff --git a/actionagent/app/services/action_agent/local_sandbox_backend.rb b/actionagent/app/services/action_agent/local_sandbox_backend.rb index 2af1a0f5c..c9effa59f 100644 --- a/actionagent/app/services/action_agent/local_sandbox_backend.rb +++ b/actionagent/app/services/action_agent/local_sandbox_backend.rb @@ -98,6 +98,13 @@ class Error < RuntimeError; end MAX_LISTING_BYTES = 4 * 1024 * 1024 MAX_CHANGED_FILES = 5_000 MAX_READ_BYTES = 1024 * 1024 + # What #write_file takes, and #run_command's bounds: a command the model + # runs returns at most this much output and is stopped at this deadline. + MAX_WRITE_BYTES = 1024 * 1024 + MAX_COMMAND_OUTPUT_BYTES = 64 * 1024 + COMMAND_TIMEOUT = 120 + # The paths #list_files returns at most. + MAX_LISTED_FILES = 2_000 # The verified trees one backend keeps, by object id (see #tree_entries). MAX_CACHED_TREES = 256 # The environment of the git commands that read a checkout's changes. @@ -891,6 +898,102 @@ def read_file(sandbox, path, base: false) base ? read_committed_file(workspace, app, path) : read_working_file(app, path) end + # Runs +command+ with bash in +sandbox+'s checkout, the way a code + # session's commands run there: the sanitized environment, the boot's + # database variables, and the session id, in a process group of its own + # that is stopped at +timeout+. stdout and stderr come back together, + # at most MAX_COMMAND_OUTPUT_BYTES, scrubbed of the sandbox's secrets. + # + # @return [Hash] { exit_status: Integer or nil when it was stopped, + # output: String, truncated: Boolean, timed_out: Boolean } + def run_command(sandbox, command, timeout: COMMAND_TIMEOUT) + workspace, app = checkout_workspace!(sandbox) + raise Error, "No command to run" if command.to_s.strip.empty? + + database_env = read_state(workspace)["database_env"] + env = self.class.sanitized_environment + .merge(database_env.is_a?(Hash) ? database_env.transform_values(&:to_s) : {}) + .merge(SESSION_ID_ENV => workspace.basename.to_s) + timeout = timeout.to_i.clamp(1, COMMAND_TIMEOUT) + + output, status = capture(env, [ "bash", "-c", command.to_s ], chdir: app, + limit: MAX_COMMAND_OUTPUT_BYTES, timeout: timeout, err: [ :child, :out ]) + truncated = output.bytesize >= MAX_COMMAND_OUTPUT_BYTES + text = SecretScrubber.scrub(output.force_encoding(Encoding::UTF_8).scrub, sandbox_secrets(sandbox, {})) + + { + exit_status: status && exit_code(status), + output: text, + truncated: truncated, + timed_out: status.nil? && !truncated + } + end + + # The checkout's files under +path+ (the whole checkout when blank): + # tracked and untracked, without what .gitignore excludes, listed by + # `git ls-files` with the same read-only git as #changed_files. + # + # @return [Hash] { files: [String], truncated: Boolean } + def list_files(sandbox, path = nil) + _workspace, app = checkout_workspace!(sandbox) + path = path.to_s.delete_suffix("/") + raise Error, "#{path.inspect} is not a path inside the checkout" if path.present? && !checkout_path?(path) + + env = read_only_git_environment + git = git_command(app) + if filter_drivers?(app, env, git) + raise Error, "The checkout's git config defines filter drivers, which would run commands, so its files are not listed" + end + + listed = git_listing!(env, [ *git, "ls-files", "-z", "--cached", "--others", "--exclude-standard", "--", path.presence || "." ], app) + files = listed.uniq.reject { |file| SandboxCredentialPaths.protected?(file) } + { files: files.first(MAX_LISTED_FILES), truncated: files.size > MAX_LISTED_FILES } + end + + # Writes +content+ to +path+ in +sandbox+'s checkout, creating the + # directories it needs. Held to #read_file's rules: a relative path + # outside .git and the credential paths, reached through no symlink, and + # replacing only a regular file. + # + # @return [Hash] { path:, bytes:, created: Boolean } + def write_file(sandbox, path, content) + raise Error, "Claude configuration is never written through the checkout API" if SandboxCredentialPaths.protected?(path) + _workspace, app = checkout_workspace!(sandbox) + raise Error, "#{path.inspect} is not a path inside the checkout" unless checkout_path?(path) + + bytes = content.to_s.b + raise Error, "#{path} would be larger than #{MAX_WRITE_BYTES} bytes" if bytes.bytesize > MAX_WRITE_BYTES + + *parents, _name = path.split("/") + directory = app + parents.each do |part| + directory = directory.join(part) + stat = begin + File.lstat(directory) + rescue Errno::ENOENT + nil + end + if stat.nil? + Dir.mkdir(directory) + elsif !stat.directory? + raise Error, "#{path} is not inside the checkout: #{directory.relative_path_from(app)} is not a directory" + end + end + + full = app.join(path) + existing = working_tree_stat(app, path) + raise Error, "#{path} is not a regular file" if existing && !existing.file? + + File.open(full, File::WRONLY | File::CREAT | File::TRUNC | File::NOFOLLOW, 0o644) do |file| + raise Error, "#{path} is not inside the checkout" unless File.realpath(full).start_with?("#{File.realpath(app)}/") + + file.write(bytes) + end + { path: path, bytes: bytes.bytesize, created: existing.nil? } + rescue Errno::ELOOP + raise Error, "#{path} changed while it was written" + end + # The modes #start_browser runs a browser in on this machine: headless # always, and headed where there is a display to show a window on. # diff --git a/actionagent/app/services/action_agent/mcp_catalog.rb b/actionagent/app/services/action_agent/mcp_catalog.rb index 3b35a689d..085110c0f 100644 --- a/actionagent/app/services/action_agent/mcp_catalog.rb +++ b/actionagent/app/services/action_agent/mcp_catalog.rb @@ -199,6 +199,18 @@ def find(key) present(entry) if entry end + # The entry as a client connects to it: #find plus the +headers+ a host + # registration carries (an Authorization header, say). Kept out of + # #find and #all, which feed API responses, so a registered credential + # never reaches the browser; MCPToolDispatcher reads this one. + # + # @param key [String, Symbol] + # @return [Hash, nil] + def connection(key) + entry = index[key.to_s] or return nil + present(entry).merge(headers: entry[:headers].to_h) + end + # Every catalog key, built-ins first. # # @return [Array] diff --git a/actionagent/app/services/action_agent/mcp_tool_dispatcher.rb b/actionagent/app/services/action_agent/mcp_tool_dispatcher.rb index e5d00f28b..e22d558c7 100644 --- a/actionagent/app/services/action_agent/mcp_tool_dispatcher.rb +++ b/actionagent/app/services/action_agent/mcp_tool_dispatcher.rb @@ -29,6 +29,41 @@ class SandboxUnavailable < MCPClient::Error; end attr_reader :extra_server_keys + # Why a dashboard run could not call the server +entry+ describes, or nil + # when it can. The same rules #reachable_entry and #absolute_url apply at + # call time, read ahead of it, so the builder and the Tools tab offer a + # service as working only when a run would actually reach it. + # + # A credential the catalog lists is one the dashboard has no way to send: + # only a host registration (ActionAgent.mcp_catalog) or a checkout runtime + # carries the headers that would hold it. + # + # @param entry [Hash, nil] a catalog entry or a runtime listing + # @return [String, nil] + def self.unreachable_reason(entry) + return "Unknown to the catalog" if entry.nil? + return nil if SandboxSession.runtime_server_key?(entry[:key].to_s) + + transport = entry[:transport].to_s + unless transport.in?(HTTP_TRANSPORTS) + return "#{transport.presence || 'stdio'} server: it runs inside a launched sandbox, not from a dashboard run" + end + + url = entry[:url].to_s + return "No URL to call" if url.blank? + return "Served by this dashboard over MCP for other clients, not callable from its own runs" if url.include?("") + if !url.start_with?("http://", "https://") && ENV["ACTIONAGENT_MCP_ORIGIN"].blank? + return "Set ACTIONAGENT_MCP_ORIGIN to reach #{url}" + end + + credentials = Array(entry[:requires_credentials]) + if credentials.any? && entry[:headers].blank? + return "Needs #{credentials.to_sentence}: register it in ActionAgent.mcp_catalog with the headers that carry it" + end + + nil + end + # A runtime or browser explicitly selected for this run must not silently # disappear between enqueue, discovery and a tool call. def ensure_extra_servers_live! @@ -257,7 +292,7 @@ def catalog_entry(key) if SandboxSession.browser_server_key?(key) return extra_server_keys.include?(key) ? SandboxSession.browser_server_entry(key, owner: agent.try(:owner)) : nil end - return MCPCatalog.find(key) unless SandboxSession.runtime_server_key?(key) + return MCPCatalog.connection(key) unless SandboxSession.runtime_server_key?(key) SandboxSession.runtime_server_entry(key, owner: agent.try(:owner)) end diff --git a/actionagent/app/services/action_agent/sandbox_orchestrator.rb b/actionagent/app/services/action_agent/sandbox_orchestrator.rb index 21ffb6383..38dc8e110 100644 --- a/actionagent/app/services/action_agent/sandbox_orchestrator.rb +++ b/actionagent/app/services/action_agent/sandbox_orchestrator.rb @@ -53,6 +53,9 @@ class SandboxOrchestrator # that name and signature. changed_files: %i[changed_files], read_file: %i[read_file], + list_files: %i[list_files], + write_file: %i[write_file], + run_command: %i[run_command], start_browser: %i[start_browser], stop_browser: %i[stop_browser], resume_boot: %i[resume_boot], @@ -333,6 +336,43 @@ def read_file(sandbox_session, path, base: false) end end + # The files under +path+ in +sandbox_session+'s checkout (all of it when + # blank), without what the repository ignores. + # + # @return [Hash] { files: [String], truncated: Boolean } + # @raise [ArgumentError] when +path+ climbs out of the checkout + # @raise [UnsupportedBackendError] when the backend does not implement it + def list_files(sandbox_session, path = nil) + if path.present? && !checkout_relative?(path.to_s.delete_suffix("/")) + raise ArgumentError, "#{path.inspect} is not a path inside the checkout" + end + + @backend.public_send(adapter_method(:list_files), sandbox_session, path.presence) + end + + # Writes +content+ to +path+ in +sandbox_session+'s checkout. + # + # @return [Hash] { path:, bytes:, created: } + # @raise [ArgumentError] when +path+ is absolute or climbs out of the checkout + # @raise [UnsupportedBackendError] when the backend does not implement it + def write_file(sandbox_session, path, content) + raise ArgumentError, "#{path.inspect} is not a path inside the checkout" unless checkout_relative?(path) + + @backend.public_send(adapter_method(:write_file), sandbox_session, path, content) + end + + # Runs a shell +command+ in +sandbox_session+'s checkout, bounded in time + # and output, as the backend's code sessions run theirs. + # + # @return [Hash] { exit_status:, output:, truncated:, timed_out: } + # @raise [UnsupportedBackendError] when the backend does not implement it + def run_command(sandbox_session, command, timeout: nil) + method = adapter_method(:run_command) + return @backend.public_send(method, sandbox_session, command) if timeout.nil? + + @backend.public_send(method, sandbox_session, command, timeout: timeout) + end + # Starts a browser for +sandbox_session+, one per sandbox, and returns how # an agent reaches it over MCP. The backend reads the rest of what it # needs from sandbox_session.browser_launch (see SandboxSession): the diff --git a/actionagent/app/services/action_agent/slack_tools.rb b/actionagent/app/services/action_agent/slack_tools.rb new file mode 100644 index 000000000..53fa2168c --- /dev/null +++ b/actionagent/app/services/action_agent/slack_tools.rb @@ -0,0 +1,101 @@ +# frozen_string_literal: true + +require "net/http" + +module ActionAgent + # The slack capability: reading channels and posting as the workspace's bot, + # through the Slack Web API with the bot token the owner connected in + # Settings -> Integrations (a ProviderKey of provider "slack"). Results and + # errors are hashes for the model to read; the token never appears in them. + class SlackTools + FUNCTIONS = %w[slack_list_channels slack_read_channel slack_post_message].freeze + API = "https://slack.com/api/" + TIMEOUT_SECONDS = 10 + MAX_CHANNELS = 200 + MAX_MESSAGES = 50 + + NOT_CONNECTED = "Slack is not connected: add a bot token (xoxb-…) in Settings -> Integrations -> Slack" + + def self.function?(name) + FUNCTIONS.include?(name.to_s) + end + + # The bot token +owner+ connected, or nil. + def self.token_for(owner) + ProviderKey.for_owner(owner).find_by(provider: "slack")&.credential.presence + end + + # @param token [String, nil] + def initialize(token) + @token = token + end + + # @return [Hash] + def call(name, kwargs) + return { error: "Unknown tool: #{name}" } unless self.class.function?(name) + return { error: NOT_CONNECTED } if @token.blank? + + args = kwargs.to_h.symbolize_keys + case name.to_s + when "slack_list_channels" then list_channels + when "slack_read_channel" then read_channel(**args.slice(:channel, :limit)) + when "slack_post_message" then post_message(**args.slice(:channel, :text, :thread_ts)) + end + end + + def list_channels + body = request("conversations.list", { types: "public_channel,private_channel", exclude_archived: true, limit: MAX_CHANNELS }) + return body if body[:error] + + channels = Array(body["channels"]).map do |channel| + { id: channel["id"], name: channel["name"], is_member: channel["is_member"], topic: channel.dig("topic", "value").presence }.compact + end + { channels: channels } + end + + def read_channel(channel:, limit: nil) + count = (limit || 20).to_i.clamp(1, MAX_MESSAGES) + body = request("conversations.history", { channel: channel.to_s, limit: count }) + return body if body[:error] + + messages = Array(body["messages"]).map do |message| + { ts: message["ts"], user: message["user"] || message["bot_id"], text: message["text"], thread_ts: message["thread_ts"] }.compact + end + { channel: channel, messages: messages } + end + + def post_message(channel:, text:, thread_ts: nil) + return { error: "No text to post" } if text.to_s.strip.empty? + + body = request("chat.postMessage", { channel: channel.to_s, text: text.to_s, thread_ts: thread_ts.presence }.compact, post: true) + return body if body[:error] + + { posted: true, channel: body["channel"], ts: body["ts"] } + end + + private + + # Slack answers 200 with { ok: false, error: } for most failures. + def request(method, params, post: false) + uri = URI.join(API, method) + response = Net::HTTP.start(uri.host, uri.port, use_ssl: true, open_timeout: TIMEOUT_SECONDS, read_timeout: TIMEOUT_SECONDS) do |http| + headers = { "Authorization" => "Bearer #{@token}", "User-Agent" => "ActiveAgents-Toolbox/1.0" } + if post + http.post(uri.path, params.to_json, headers.merge("Content-Type" => "application/json; charset=utf-8")) + else + uri.query = URI.encode_www_form(params) + http.get(uri.request_uri, headers) + end + end + + body = JSON.parse(response.body.to_s) + return { error: "Slack refused #{method}: #{body['error'] || "HTTP #{response.code}"}" } unless body["ok"] + + body + rescue JSON::ParserError + { error: "Slack answered #{method} with something other than JSON (HTTP #{response&.code})" } + rescue Net::OpenTimeout, Net::ReadTimeout, SocketError, SystemCallError, OpenSSL::SSL::SSLError => e + { error: "Could not reach Slack: #{e.message}" } + end + end +end diff --git a/actionagent/config/routes.rb b/actionagent/config/routes.rb index fbb22b347..04788ba64 100644 --- a/actionagent/config/routes.rb +++ b/actionagent/config/routes.rb @@ -59,6 +59,8 @@ end collection do get :presets + # The builder's roster for an agent not created yet. + get :tool_roster, action: :new_tool_roster end end diff --git a/actionagent/frontend/components/dashboard/AgentBuilder.jsx b/actionagent/frontend/components/dashboard/AgentBuilder.jsx index f3aeced37..d05e82473 100644 --- a/actionagent/frontend/components/dashboard/AgentBuilder.jsx +++ b/actionagent/frontend/components/dashboard/AgentBuilder.jsx @@ -4,6 +4,16 @@ import { ICONS } from '../../utils/designTokens'; import { FALLBACK_PROVIDER_MODELS } from '../../utils/providerModels'; import { useProviderModels } from '../../hooks/useProviderModels'; import ModelPicker from './ModelPicker'; +import { + builderServices, + builderTools, + checkoutToolsEnabled, + defaultApprovals, + offeredTools, + serverEnabled, + toggleServer, + workspaceUseLabel, +} from '../../utils/builderRoster.mjs'; const STEPS = [ { id: 'basics', label: 'Basics', icon: '1' }, @@ -11,6 +21,14 @@ const STEPS = [ { id: 'review', label: 'Review', icon: '3' } ]; +// The toolbox capabilities the lander's TOOLS doesn't draw, labelled for the +// builder's chips; anything else (a host schema tool) shows its own name. +const TOOL_CHIPS = { + ...TOOLS, + agents: { emoji: '\u{1F91D}', label: 'Delegate to agents' }, + ask: { emoji: '\u{1F64B}', label: 'Ask the user' }, +}; + // Fields on the Basics step; the slug is derived from the name, so its // errors are the name's to show. const BASICS_FIELDS = ['name', 'slug', 'description', 'provider', 'model']; @@ -26,6 +44,7 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia preset_type: 'terminal', instruction_sets: ['github'], tools: ['terminal', 'code'], + mcp_servers: [], model_config: { temperature: 0.7 }, @@ -37,7 +56,7 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia model: initialDraft.model, tools: initialDraft.tools || [], instruction_sets: [], - mcp_servers: [], + mcp_servers: initialDraft.mcp_servers || [], } : {}) }); @@ -57,6 +76,25 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia setFormData(prev => availableModels.includes(prev.model) ? prev : { ...prev, model: availableModels[0] }); }, [availableModels]); + // What a new agent can be given (GET /api/agents/tool_roster): the tools + // and MCP services a run would actually get. Once it lands, a selection + // naming something it does not offer — a preset's or a draft's — is + // narrowed to what does, so the agent is created with no dead names. + const [roster, setRoster] = useState(null); + const [rosterError, setRosterError] = useState(null); + useEffect(() => { + fetch('/api/agents/tool_roster') + .then((response) => { + if (!response.ok) throw new Error(`HTTP ${response.status}`); + return response.json(); + }) + .then((payload) => { + setRoster(payload); + setFormData(prev => ({ ...prev, tools: offeredTools(payload, prev.tools) })); + }) + .catch((error) => setRosterError(error.message)); + }, []); + // What the server rejected on the last Create Agent: { errors, fieldErrors }. const [submitErrors, setSubmitErrors] = useState(null); @@ -79,7 +117,7 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia if (AGENT_PRESETS[presetId]) { const preset = AGENT_PRESETS[presetId]; updateField('instruction_sets', [...preset.instructions]); - updateField('tools', [...preset.tools]); + updateField('tools', offeredTools(roster, preset.tools)); } }; @@ -94,7 +132,8 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia const handleSubmit = async () => { setSubmitErrors(null); - const failure = await onSave(formData); + // Side-effecting functions wait for approval unless the Tools tab says otherwise. + const failure = await onSave({ ...formData, approval_required_tools: defaultApprovals(formData.tools) }); if (!failure) return; setSubmitErrors(failure); @@ -160,13 +199,15 @@ export default function AgentBuilder({ meta, onSave, onCancel, isLoading, initia )} {currentStep === 2 && ( - + )} @@ -292,10 +333,11 @@ function BasicsStep({ formData, updateField, providerModels, fieldErrors }) { } // Step 2: Configure (instructions, tools, system prompt - matching lander pattern) -function ConfigureStep({ formData, meta, toggleArrayItem, updateField, selectPreset }) { +function ConfigureStep({ formData, meta, roster, rosterError, toggleArrayItem, updateField, selectPreset }) { const presets = Object.keys(AGENT_PRESETS); const allInstructions = Object.keys(INSTRUCTIONS); - const allTools = Object.keys(TOOLS); + const tools = builderTools(roster); + const { callable, unavailable } = builderServices(roster); return (
@@ -374,31 +416,74 @@ function ConfigureStep({ formData, meta, toggleArrayItem, updateField, selectPre
- {/* Tools - matching lander's chip selector */} + {/* Tools: the toolbox capabilities and host schema tools a run is offered */}
-
- {allTools.map(id => { - const tool = TOOLS[id]; - return ( - - ); - })} + {rosterError &&

Could not load the tools this workspace offers: {rosterError}

} + {!roster && !rosterError &&

Loading tools…

} +
+ {tools.map(tool => ( + toggleArrayItem('tools', tool.key)} + emoji={TOOL_CHIPS[tool.key]?.emoji || '\u{1F9F1}'} + label={TOOL_CHIPS[tool.key]?.label || tool.name} + title={tool.description || tool.name} + /> + ))} +
+ {checkoutToolsEnabled(formData.tools) && ( +

+ Terminal, Filesystem, Edit and Database act in a repository checkout: choose one under Checkout when you run the agent. +

+ )} +
+ + {/* MCP services a dashboard run can call, and the ones it can't */} +
+ + {roster && callable.length === 0 && ( +

+ No MCP server this workspace can call yet. Register one with its URL in ActionAgent.mcp_catalog, or + boot a project's checkout to offer its app runtime. +

+ )} +
+ {callable.map(service => ( + updateField('mcp_servers', toggleServer(formData.mcp_servers, service))} + emoji={service.runtime ? '\u{1F4E6}' : '\u{1F50C}'} + label={service.name} + hint={workspaceUseLabel(service)} + title={[service.description, service.transport].filter(Boolean).join(' · ')} + /> + ))}
+ {unavailable.length > 0 && ( +
+ + {unavailable.length} catalog server{unavailable.length === 1 ? '' : 's'} a run can't call + +
    + {unavailable.map(service => ( +
  • + {service.name} — {service.unavailable_reason} +
  • + ))} +
+
+ )}
{/* System Instructions */} @@ -417,7 +502,12 @@ function ConfigureStep({ formData, meta, toggleArrayItem, updateField, selectPre } // Step 3: Review -function ReviewStep({ formData }) { +function ReviewStep({ formData, roster }) { + const serviceName = (entry) => { + const key = typeof entry === 'string' ? entry : entry?.key; + return roster?.services?.find(service => service.key === key)?.name || entry?.name || key; + }; + return (

Review Your Agent

@@ -481,14 +571,33 @@ function ReviewStep({ formData }) { Tools
{formData.tools.length > 0 ? ( - formData.tools.map(id => { - const tool = TOOLS[id]; - return tool ? ( - - {tool.emoji} {tool.label} - - ) : null; - }) + formData.tools.map(id => ( + + {TOOL_CHIPS[id] ? `${TOOL_CHIPS[id].emoji} ${TOOL_CHIPS[id].label}` : id} + + )) + ) : ( + None selected + )} +
+
+ + {defaultApprovals(formData.tools).length > 0 && ( +
+ Waits for your approval +

{defaultApprovals(formData.tools).join(', ')}

+
+ )} + +
+ MCP servers +
+ {formData.mcp_servers.length > 0 ? ( + formData.mcp_servers.map(entry => ( + + {serviceName(entry)} + + )) ) : ( None selected )} @@ -508,3 +617,23 @@ function ReviewStep({ formData }) {
); } + +// A chip in the builder's Tools and MCP servers rows. +function RosterChip({ on, onClick, emoji, label, hint, title, testId }) { + return ( + + ); +} diff --git a/actionagent/frontend/components/dashboard/AgentRunner.jsx b/actionagent/frontend/components/dashboard/AgentRunner.jsx index 7c325905b..5469088a1 100644 --- a/actionagent/frontend/components/dashboard/AgentRunner.jsx +++ b/actionagent/frontend/components/dashboard/AgentRunner.jsx @@ -1,4 +1,6 @@ -import React, { useState, useEffect, useRef } from 'react'; +import React, { useState, useEffect, useRef, useCallback } from 'react'; +import { keepSandboxChoice, runSandboxOptions } from '../../utils/evaluationRuns.mjs'; +import { checkoutToolsEnabled } from '../../utils/builderRoster.mjs'; import AgentAvatar from '../AgentAvatar'; import { TYPOGRAPHY } from '../../utils/designTokens'; import { startCheckout } from '../../utils/checkout'; @@ -104,6 +106,21 @@ const Chevron = ({ open, color }) => ( // Live activity feed — same chip/expansion design as the Interactions // stream, one row per llm/tool/agent call. Click a row to inspect the // call's input and output. +// An MCP server entry as an agent stores it: a bare key, or { key, name, tools }. +const mcpServerLabel = (entry) => (typeof entry === 'string' ? entry : entry?.name || entry?.key || '?'); + +// What a run of this agent is offered: the roster's names, or "none". +function RunnerRoster({ label, names, colors }) { + return ( +
+
{label}
+
+ {names.length ? names.join(', ') : 'none'} +
+
+ ); +} + export function ActivityFeed({ run, darkMode, colors, expanded, onToggle }) { const events = activityFeed(run); const preStyle = streamPreStyle(darkMode); @@ -214,7 +231,10 @@ function RunVitals({ run, darkMode, colors }) { ); } -export default function AgentRunner({ agent, onBack, recorderUrl = null }) { +// +freshConversation+ opens on an empty conversation rather than the latest +// one — how "New interaction" (Interactions, Sandbox) lands here — and the +// first message creates it. +export default function AgentRunner({ agent, onBack, recorderUrl = null, freshConversation = false }) { const { darkMode } = useTheme(); const colors = paletteFor(darkMode); @@ -249,6 +269,26 @@ export default function AgentRunner({ agent, onBack, recorderUrl = null }) { // no longer lists it as pending. const [settledRequests, setSettledRequests] = useState([]); + // The checkout sandbox a run acts in (`sandbox_id`): what the terminal, + // filesystem, edit and database tools reach, and whose app runtime the + // run can call. Listed like an evaluation run's, and kept only while live. + const [sandboxOptions, setSandboxOptions] = useState([]); + const [sandboxId, setSandboxId] = useState(''); + const fetchSandboxes = useCallback(async () => { + try { + const response = await fetch('/api/sandboxes?sandbox_type=app_runtime'); + if (!response.ok) return; + const data = await response.json(); + const options = runSandboxOptions(data.sandboxes); + setSandboxOptions(options); + setSandboxId((current) => keepSandboxChoice(current, options) || (options.length === 1 ? options[0].value : '')); + } catch (_error) { + // None offered. + } + }, []); + useEffect(() => { fetchSandboxes(); }, [fetchSandboxes]); + const needsCheckout = checkoutToolsEnabled(agent.tools || []); + const [limitUsage, setLimitUsage] = useState(null); const [isUpgrading, setIsUpgrading] = useState(false); const [upgradeError, setUpgradeError] = useState(null); @@ -263,6 +303,8 @@ export default function AgentRunner({ agent, onBack, recorderUrl = null }) { // A conversation picked on purpose (picker, New conversation, a Recent // Runs row) survives a list refresh; otherwise the newest one is shown. const pinnedRef = useRef(null); + // Whether loading the conversation list may select its latest entry. + const adoptLatestRef = useRef(!freshConversation); const conversationIdRef = useRef(null); // Bumped to abandon a poll loop when the run it belongs to is superseded // or the page unmounts. @@ -358,7 +400,7 @@ export default function AgentRunner({ agent, onBack, recorderUrl = null }) { setConversations(list); setConversationId((current) => { if (current && (pinnedRef.current === current || list.some((item) => item.id === current))) return current; - return list[0]?.id ?? null; + return adoptLatestRef.current ? (list[0]?.id ?? null) : null; }); } catch (error) { console.error('Failed to load conversations:', error); @@ -607,10 +649,13 @@ export default function AgentRunner({ agent, onBack, recorderUrl = null }) { body.append('prompt', trimmed); body.append('action_name', actionName); if (contextId) body.append('params[context_id]', String(contextId)); + if (sandboxId) body.append('sandbox_id', sandboxId); files.forEach(({ file }) => body.append('attachments[]', file, file.name)); const response = await fetch(`/api/agents/${agent.id}/execute`, { method: 'POST', body }); const data = await parseJson(response); + // The checkout stopped since it was listed: list again, so it is no longer offered. + if (data.code === 'sandbox_refused') fetchSandboxes(); // Plan limit reached (402) — show the upgrade prompt if (response.status === 402 && data.upgrade_required) { @@ -1276,10 +1321,31 @@ export default function AgentRunner({ agent, onBack, recorderUrl = null }) {
Temperature
{agent.modelConfig?.temperature || agent.model_config?.temperature || 0.7}
-
-
Tools
-
{agent.tools?.length || 0}
+ + +
+
Checkout
+
+ +
+ {needsCheckout && !sandboxId && ( +

+ {sandboxOptions.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."} +

+ )}
Status
{agent.status}
diff --git a/actionagent/frontend/components/dashboard/AgentToolsTab.jsx b/actionagent/frontend/components/dashboard/AgentToolsTab.jsx index dd40051b9..eb4f1d722 100644 --- a/actionagent/frontend/components/dashboard/AgentToolsTab.jsx +++ b/actionagent/frontend/components/dashboard/AgentToolsTab.jsx @@ -19,7 +19,9 @@ import { toolGroups, toggledApproval, toolsFor, + withApproval, } from '../../utils/toolRoster.mjs'; +import { defaultApprovals } from '../../utils/builderRoster.mjs'; // The agent's Tools tab: the MCP services it can be given and the tools it // can be offered, in one list vocabulary with the usage each one has. @@ -245,19 +247,27 @@ export default function AgentToolsTab({ agent, formData, updateField, onSave, ha writeServices({ ...state, [service.key]: { on: on || current.on, tools } }); }, [state, writeServices]); + // Writes the tools list. A capability switched on brings its + // side-effecting functions onto the approval list, as the builder does + // (and as Agent does for a capability enabled through the API without a + // list); its Approval switch takes them off again before saving. + const selectTools = useCallback((next) => { + updateField('tools', toolsFor(roster, next)); + const names = defaultApprovals(next.filter((key) => !selectedTools.includes(key))); + if (names.length > 0) updateField('approval_required_tools', withApproval(approvalList, names, true)); + }, [roster, selectedTools, approvalList, updateField]); + const toggleTool = useCallback((tool) => { if (!tool.editable) return; - const next = tool.on ? selectedTools.filter((name) => name !== tool.key) : [...selectedTools, tool.key]; - updateField('tools', toolsFor(roster, next)); - }, [roster, selectedTools, updateField]); + selectTools(tool.on ? selectedTools.filter((name) => name !== tool.key) : [...selectedTools, tool.key]); + }, [selectedTools, selectTools]); const setGroup = useCallback((group, on) => { if (!group.editable) return; - const next = on + selectTools(on ? [...selectedTools, ...group.keys.filter((key) => !selectedTools.includes(key))] - : selectedTools.filter((name) => !group.keys.includes(name)); - updateField('tools', toolsFor(roster, next)); - }, [roster, selectedTools, updateField]); + : selectedTools.filter((name) => !group.keys.includes(name))); + }, [selectedTools, selectTools]); const toggleApproval = useCallback((tool) => { updateField('approval_required_tools', toggledApproval(approvalList, tool, agent.approval_required_tools || [])); diff --git a/actionagent/frontend/components/dashboard/CredentialIntegrationCard.jsx b/actionagent/frontend/components/dashboard/CredentialIntegrationCard.jsx new file mode 100644 index 000000000..fdde4ae3c --- /dev/null +++ b/actionagent/frontend/components/dashboard/CredentialIntegrationCard.jsx @@ -0,0 +1,92 @@ +import React, { useState, useEffect, useCallback } from 'react'; +import { useTheme } from '../../contexts/ThemeContext'; +import { requestConfirm } from '../../utils/confirm.mjs'; + +// A tool connected with one workspace credential (a ProviderKey connection +// provider, such as Slack's bot token), configured beside the model +// providers in Settings -> Integrations and never offered as one. Codex has +// a card of its own, since it can also run on the machine's own login. +export default function CredentialIntegrationCard({ provider, title, description, credentialLabel, placeholder, onChange }) { + const { darkMode } = useTheme(); + const [connection, setConnection] = useState(null); + const [editing, setEditing] = useState(false); + const [credential, setCredential] = useState(''); + const [saving, setSaving] = useState(false); + const [error, setError] = useState(null); + const load = useCallback(async () => { + const res = await fetch('/api/provider_keys'); + if (!res.ok) throw new Error(`Could not load the ${title} connection.`); + const data = await res.json(); + setConnection((data.provider_keys || []).find((row) => row.provider === provider) || { configured: false }); + }, [provider, title]); + useEffect(() => { load().catch((e) => setError(e.message)); }, [load]); + + const save = async (event) => { + event.preventDefault(); + if (saving || !credential.trim()) return; + setSaving(true); + setError(null); + try { + const res = await fetch('/api/provider_keys', { + method: 'POST', headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ provider, credential: credential.trim() }), + }); + const data = await res.json().catch(() => ({})); + if (!res.ok) throw new Error(Array.isArray(data.error) ? data.error.join(', ') : data.error || `Could not save the ${credentialLabel}.`); + setCredential(''); + setEditing(false); + await load(); + onChange?.(); + } catch (e) { setError(e.message); } + finally { setSaving(false); } + }; + + const disconnect = async () => { + if (!(await requestConfirm({ + title: `Disconnect ${title}?`, + message: `${title} will need its ${credentialLabel} connected again.`, + confirmLabel: 'Disconnect', + danger: true, + }))) return; + setSaving(true); + setError(null); + try { + const res = await fetch(`/api/provider_keys/${provider}`, { method: 'DELETE' }); + if (!res.ok) throw new Error(`Could not disconnect ${title}.`); + await load(); + onChange?.(); + } catch (e) { setError(e.message); } + finally { setSaving(false); } + }; + + const muted = darkMode ? 'text-gray-400' : 'text-gray-500'; + const button = `px-3 py-1 text-sm rounded ${darkMode ? 'bg-gray-700 text-gray-200' : 'bg-gray-200 text-gray-800'}`; + return ( +
+
+
+

{title}

+

{connection == null ? 'Loading…' : connection.configured ? `Connected · ${connection.hint}` : 'Not connected'}

+
+
+ {connection?.configured && !editing && } + +
+
+

{description}

+ {editing && ( +
+ + +
+ )} + {error &&

{error}

} +
+ ); +} diff --git a/actionagent/frontend/components/dashboard/InteractionsView.jsx b/actionagent/frontend/components/dashboard/InteractionsView.jsx index df0f7e10c..77a187ef4 100644 --- a/actionagent/frontend/components/dashboard/InteractionsView.jsx +++ b/actionagent/frontend/components/dashboard/InteractionsView.jsx @@ -10,6 +10,7 @@ import ContextMeter, { contextWindowFor, estimateTokens } from './ContextMeter'; import TraceSpanBar from './TraceSpanBar'; import TraceDetail from './TraceDetail'; import NeedsInputLane from './NeedsInputLane'; +import NewInteractionPicker from './NewInteractionPicker'; import { formatDuration } from './SpanWaterfall'; import { dashboardPath, dashboardRelativePath, pushDashboardPath } from '../../utils/dashboardPath'; import CodeInteraction from './interactions/CodeInteraction'; @@ -495,6 +496,7 @@ export default function InteractionsView({ agentId = null, embedded = false }) { ))}
+ {routed && }
diff --git a/actionagent/frontend/components/dashboard/NewInteractionPicker.jsx b/actionagent/frontend/components/dashboard/NewInteractionPicker.jsx new file mode 100644 index 000000000..a6ebbff75 --- /dev/null +++ b/actionagent/frontend/components/dashboard/NewInteractionPicker.jsx @@ -0,0 +1,129 @@ +import React, { useEffect, useMemo, useRef, useState } from 'react'; +import { Badge, Button, Card, Empty, MicroLabel, MONO } from './primitives'; +import { navigateTo } from '../../utils/dashboardPath'; +import { newInteractionPath, startableAgents } from '../../utils/newInteraction.mjs'; + +// Starting a conversation with one of the workspace's agents, from wherever +// the person is looking at conversations (Interactions) or running agents +// (Sandbox). Either way it lands on the agent's runner with an empty +// conversation, so the run gets the instructions, tools and MCP servers +// saved on the agent — the same ones its Tools tab shows. +// +// +inline+ lists the agents in a card; otherwise a button opens the list as +// a popover. +export default function NewInteractionPicker({ inline = false, label = 'New interaction' }) { + const [open, setOpen] = useState(inline); + const [agents, setAgents] = useState(null); + const [error, setError] = useState(null); + const [query, setQuery] = useState(''); + const rootRef = useRef(null); + + useEffect(() => { + if (!open || agents) return; + fetch('/api/agents') + .then((response) => { + if (!response.ok) throw new Error(`HTTP ${response.status}`); + return response.json(); + }) + .then((data) => setAgents(data.agents || [])) + .catch((err) => setError(err.message)); + }, [open, agents]); + + // A popover closes on a click outside it. + useEffect(() => { + if (inline || !open) return undefined; + const close = (event) => { if (rootRef.current && !rootRef.current.contains(event.target)) setOpen(false); }; + document.addEventListener('mousedown', close); + return () => document.removeEventListener('mousedown', close); + }, [inline, open]); + + const shown = useMemo(() => startableAgents(agents || [], query), [agents, query]); + + const list = ( +
+ {(agents?.length || 0) > 6 && ( + setQuery(event.target.value)} + placeholder="Find an agent" + aria-label="Find an agent" + autoFocus={!inline} + 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)' }} + /> + )} + {error &&

Could not load agents: {error}

} + {!agents && !error &&

Loading agents…

} + {agents && shown.length === 0 && ( + + {agents.length === 0 ? 'No agents in this workspace yet.' : 'No agent matches.'}{' '} + { event.preventDefault(); navigateTo('/agents/new'); }} + style={{ color: 'var(--color-info)' }} + > + Create an agent + + + )} +
    + {shown.map((agent) => ( +
  • + +
  • + ))} +
+
+ ); + + if (inline) { + return ( + +
+
+ Your agents +

+ Start a new interaction. It runs with the instructions, tools and MCP servers saved on the agent. +

+
+
+ {list} +
+ ); + } + + return ( +
+ + {open && ( +
+ Start a conversation with + {list} +
+ )} +
+ ); +} diff --git a/actionagent/frontend/components/dashboard/SandboxRunner.jsx b/actionagent/frontend/components/dashboard/SandboxRunner.jsx index 742044b8b..2ed4b8b31 100644 --- a/actionagent/frontend/components/dashboard/SandboxRunner.jsx +++ b/actionagent/frontend/components/dashboard/SandboxRunner.jsx @@ -3,6 +3,7 @@ import AgentAvatar from '../AgentAvatar'; import { useActionCable } from '../../hooks/useActionCable'; import { startCheckout } from '../../utils/checkout'; import { liveUpdate } from '../../utils/liveUpdates.mjs'; +import NewInteractionPicker from './NewInteractionPicker'; const PROVIDERS = [ { id: 'anthropic', name: 'Anthropic', model: 'claude-haiku-4-5', color: 'bg-orange-500' }, @@ -63,7 +64,10 @@ const FREE_TIER_LIMITS = { session_duration_minutes: 15 }; -export default function SandboxRunner({ initialType = 'playwright_mcp', onClose }) { +// +showAgents+ lists the workspace's own agents above the demo, each opening +// a new interaction that runs with its saved tools and MCP servers. The +// demo below runs SandboxDemoAgent, not one of them. +export default function SandboxRunner({ initialType = 'playwright_mcp', onClose, showAgents = false }) { const [sandboxType, setSandboxType] = useState(initialType); const [session, setSession] = useState(null); const [task, setTask] = useState(''); @@ -469,6 +473,12 @@ export default function SandboxRunner({ initialType = 'playwright_mcp', onClose return (
+ {showAgents && ( +
+ +
+ )} + {/* Header */}
diff --git a/actionagent/frontend/components/dashboard/SettingsView.jsx b/actionagent/frontend/components/dashboard/SettingsView.jsx index 2c259dd15..0d2bf145f 100644 --- a/actionagent/frontend/components/dashboard/SettingsView.jsx +++ b/actionagent/frontend/components/dashboard/SettingsView.jsx @@ -3,6 +3,7 @@ import { useTheme } from '../../contexts/ThemeContext'; import GithubIntegrationCard from './GithubIntegrationCard'; import ClaudeCodeIntegrationCard from './ClaudeCodeIntegrationCard'; import CodexIntegrationCard from './CodexIntegrationCard'; +import SlackIntegrationCard from './SlackIntegrationCard'; import ProviderKeysCard, { useProviderKeyEditor } from './ProviderKeysCard'; import { providerKeysPath } from '../../utils/providerKeys.mjs'; import { requestConfirm } from '../../utils/confirm.mjs'; @@ -377,6 +378,9 @@ export default function SettingsView({ user, account }) {
setIntegrationsVersion((v) => v + 1)} />
+
+ setIntegrationsVersion((v) => v + 1)} /> +
)} diff --git a/actionagent/frontend/components/dashboard/SlackIntegrationCard.jsx b/actionagent/frontend/components/dashboard/SlackIntegrationCard.jsx new file mode 100644 index 000000000..43f3fa0cd --- /dev/null +++ b/actionagent/frontend/components/dashboard/SlackIntegrationCard.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import CredentialIntegrationCard from './CredentialIntegrationCard'; + +// The bot token agents with the Slack tool read channels and post with. +export default function SlackIntegrationCard({ onChange }) { + return ( + + ); +} diff --git a/actionagent/frontend/pages/Dashboard.jsx b/actionagent/frontend/pages/Dashboard.jsx index d4780bf41..5fd1b442b 100644 --- a/actionagent/frontend/pages/Dashboard.jsx +++ b/actionagent/frontend/pages/Dashboard.jsx @@ -326,8 +326,10 @@ function DashboardContent({ user, initialAgents = [], meta = {}, account = null, ) : null), runner: () => (selectedAgent ? ( navigateTo('editor', selectedAgent)} /> ) : null), @@ -411,6 +413,7 @@ function DashboardContent({ user, initialAgents = [], meta = {}, account = null, sandbox: () => ( navigateTo('list')} /> ), diff --git a/actionagent/frontend/test/builderRoster.test.mjs b/actionagent/frontend/test/builderRoster.test.mjs new file mode 100644 index 000000000..d5f214e12 --- /dev/null +++ b/actionagent/frontend/test/builderRoster.test.mjs @@ -0,0 +1,67 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { + builderServices, + builderTools, + checkoutToolsEnabled, + defaultApprovals, + offeredTools, + serverEnabled, + toggleServer, + workspaceUseLabel, +} from '../utils/builderRoster.mjs'; + +// GET /api/agents/tool_roster, trimmed to the fields the builder reads. +const ROSTER = { + tools: [ + { key: 'find_posts', name: 'find_posts', source: 'agent_defined', editable: true, enabled: false }, + { key: 'refund_invoice', name: 'refund_invoice', source: 'agent_defined', editable: false, enabled: true }, + { key: 'fetch', name: 'fetch', source: 'dashboard', editable: true, implemented: true }, + { key: 'code', name: 'code', source: 'dashboard', editable: true, implemented: true }, + { key: 'terminal', name: 'terminal', source: 'dashboard', editable: true, implemented: false }, + { key: 'slack', name: 'slack', source: 'dashboard', editable: true, implemented: false }, + ], + services: [ + { key: 'playwright', name: 'Playwright', callable: false, unavailable_reason: 'stdio server', workspace_agents: 3 }, + { key: 'tickets', name: 'Tickets', callable: true, workspace_agents: 1 }, + { key: 'crm', name: 'CRM', callable: true, workspace_agents: 2 }, + { key: 'sandbox:abc', name: 'app@main (sandbox)', callable: true, runtime: true, workspace_agents: 0 }, + ], +}; + +test('the builder offers switchable tools that do something', () => { + assert.deepEqual(builderTools(ROSTER).map((tool) => tool.key), ['find_posts', 'fetch', 'code']); +}); + +test('side-effecting functions wait for approval by default, and checkout tools need a checkout', () => { + assert.deepEqual(defaultApprovals(['terminal', 'fetch', 'edit', 'slack']), ['run_command', 'edit_file', 'slack_post_message']); + assert.deepEqual(defaultApprovals(['code']), []); + assert.ok(checkoutToolsEnabled(['fetch', 'database'])); + assert.ok(!checkoutToolsEnabled(['fetch', 'slack'])); +}); + +test('services split into callable, most used first, and the rest with their reason', () => { + const { callable, unavailable } = builderServices(ROSTER); + assert.deepEqual(callable.map((service) => service.key), ['crm', 'tickets', 'sandbox:abc']); + assert.deepEqual(unavailable.map((service) => service.unavailable_reason), ['stdio server']); +}); + +test('a preset or draft selection is narrowed to what the roster offers, once it has loaded', () => { + assert.deepEqual(offeredTools(ROSTER, ['terminal', 'code', 'refund_invoice', 'find_posts']), ['code', 'find_posts']); + assert.deepEqual(offeredTools(null, ['terminal', 'code']), ['terminal', 'code']); +}); + +test('toggling a service writes the Tools tab shape and removes either shape', () => { + const tickets = ROSTER.services[1]; + const on = toggleServer([], tickets); + assert.deepEqual(on, [{ key: 'tickets', name: 'Tickets' }]); + assert.ok(serverEnabled(on, 'tickets')); + assert.deepEqual(toggleServer(on, tickets), []); + assert.deepEqual(toggleServer(['tickets', 'crm'], tickets), ['crm']); +}); + +test('workspace use reads as a count of agents, or nothing', () => { + assert.equal(workspaceUseLabel({ workspace_agents: 1 }), '1 agent'); + assert.equal(workspaceUseLabel({ workspace_agents: 4 }), '4 agents'); + assert.equal(workspaceUseLabel({ workspace_agents: 0 }), null); +}); diff --git a/actionagent/frontend/test/newInteraction.test.mjs b/actionagent/frontend/test/newInteraction.test.mjs new file mode 100644 index 000000000..64637472b --- /dev/null +++ b/actionagent/frontend/test/newInteraction.test.mjs @@ -0,0 +1,24 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { newInteractionPath, startableAgents } from '../utils/newInteraction.mjs'; + +const AGENTS = [ + { id: 1, name: 'Zed', status: 'draft' }, + { id: 2, name: 'Billing bot', status: 'active', description: 'Refunds and invoices' }, + { id: 3, name: 'Old', status: 'archived' }, + { id: 4, name: 'Atlas', status: 'active' }, + { id: 5, name: '', status: 'observed' }, +]; + +test('archived and observed agents are left out; active ones come first, then by name', () => { + assert.deepEqual(startableAgents(AGENTS).map((agent) => agent.id), [4, 2, 1]); +}); + +test('the query matches name or description, ignoring case', () => { + assert.deepEqual(startableAgents(AGENTS, 'INVOICE').map((agent) => agent.id), [2]); + assert.deepEqual(startableAgents(AGENTS, ' zed ').map((agent) => agent.id), [1]); +}); + +test("a new interaction opens the agent's runner on an empty conversation", () => { + assert.equal(newInteractionPath({ id: 9 }), '/agents/9/run?new=1'); +}); diff --git a/actionagent/frontend/utils/builderRoster.mjs b/actionagent/frontend/utils/builderRoster.mjs new file mode 100644 index 000000000..d51e009d0 --- /dev/null +++ b/actionagent/frontend/utils/builderRoster.mjs @@ -0,0 +1,70 @@ +import { entryKey } from './toolRoster.mjs'; + +// The agent builder's Configure step, read from GET /api/agents/tool_roster: +// the same rows the agent editor's Tools tab edits, for an agent not created +// yet. The builder offers only what a run would actually get — an MCP +// service a dashboard run cannot reach is named with the reason rather than +// offered as a chip. + +// Switchable tools that give the model something: the toolbox's +// capabilities and the host's schema tools. +export function builderTools(payload) { + return (payload?.tools || []).filter((tool) => tool.editable && tool.implemented !== false); +} + +// The capabilities that act in the checkout sandbox a run is given +// (CheckoutTools): a run needs one chosen for them to do anything. +export const CHECKOUT_CAPABILITIES = ['terminal', 'filesystem', 'edit', 'database']; +export const checkoutToolsEnabled = (tools = []) => tools.some((tool) => CHECKOUT_CAPABILITIES.includes(tool)); + +// The functions with side effects outside the conversation, which wait for a +// person's approval by default: the builder and the Tools tab put them on +// the approval list when their capability is switched on, and the engine's +// Agent does the same for a capability enabled through the API without a +// list (AgentToolbox::APPROVAL_BY_DEFAULT keeps the same table). The Tools +// tab's Approval switch lets them run without asking. +export const APPROVAL_BY_DEFAULT = { + terminal: ['run_command'], + filesystem: ['write_file'], + edit: ['edit_file'], + slack: ['slack_post_message'], +}; + +// The approval list for +tools+: the defaults of the capabilities enabled. +export const defaultApprovals = (tools = []) => [...new Set(tools.flatMap((tool) => APPROVAL_BY_DEFAULT[tool] || []))]; + +// The services a run can call, most used across the workspace first, and +// the ones it cannot, each with its reason. +export function builderServices(payload) { + const services = payload?.services || []; + const byUse = (a, b) => (b.workspace_agents || 0) - (a.workspace_agents || 0) || String(a.name).localeCompare(String(b.name)); + return { + callable: services.filter((service) => service.callable).sort(byUse), + unavailable: services.filter((service) => !service.callable), + }; +} + +// +names+ narrowed to the tools the builder offers. Before the roster has +// loaded there is nothing to check against, so they are kept as given. +export function offeredTools(payload, names = []) { + if (!payload) return [...names]; + const offered = new Set(builderTools(payload).map((tool) => tool.key)); + return names.filter((name) => offered.has(name)); +} + +export const serverEnabled = (servers = [], key) => servers.some((entry) => entryKey(entry) === key); + +// Switches +service+ on or off in an agent's mcp_servers, writing the +// { key, name } shape the Tools tab saves (no tools list: every tool the +// server serves). +export function toggleServer(servers = [], service) { + if (serverEnabled(servers, service.key)) return servers.filter((entry) => entryKey(entry) !== service.key); + return [...servers, { key: service.key, name: service.name }]; +} + +// How many of the workspace's agents already enable a service, as a hint. +export function workspaceUseLabel(service) { + const count = service.workspace_agents || 0; + if (!count) return null; + return `${count} agent${count === 1 ? '' : 's'}`; +} diff --git a/actionagent/frontend/utils/newInteraction.mjs b/actionagent/frontend/utils/newInteraction.mjs new file mode 100644 index 000000000..08b5620ae --- /dev/null +++ b/actionagent/frontend/utils/newInteraction.mjs @@ -0,0 +1,23 @@ +// "New interaction": which agents a person can start a conversation with, +// and where that conversation opens. + +// Archived agents are kept for their history and are not run, and an +// observed one was reconstructed from telemetry, with nothing a dashboard run +// could execute unless it names a reachable server — its own page is where +// that is sorted out, not a picker. The rest are +// listed active first, then by name, narrowed by a case-insensitive match on +// the name or description. +export function startableAgents(agents = [], query = '') { + const needle = query.trim().toLowerCase(); + return agents + .filter((agent) => agent.status !== 'archived' && agent.status !== 'observed') + .filter((agent) => !needle || `${agent.name || ''} ${agent.description || ''}`.toLowerCase().includes(needle)) + .sort((a, b) => { + const rank = (agent) => (agent.status === 'active' ? 0 : 1); + return rank(a) - rank(b) || String(a.name || '').localeCompare(String(b.name || '')); + }); +} + +// The agent's runner, opened on an empty conversation (AgentRunner's +// freshConversation) instead of its latest one. +export const newInteractionPath = (agent) => `/agents/${agent.id}/run?new=1`; diff --git a/actionagent/test/agent_tool_roster_test.rb b/actionagent/test/agent_tool_roster_test.rb index e5672e05b..73fdf0d8c 100644 --- a/actionagent/test/agent_tool_roster_test.rb +++ b/actionagent/test/agent_tool_roster_test.rb @@ -220,10 +220,11 @@ def tool_named(body, name) assert_equal %w[find_posts], tool_named(body, "find_posts")["approval_names"] navigate = service_named(body, "playwright")["tools"].find { |tool| tool["name"] == "browser_navigate" } assert_equal %w[browser_navigate], navigate["approval_names"] - # The input tools ask on their own, a capability with no functions has - # nothing to hold, and the class runs a tool it declares in code. + assert_equal %w[run_command], tool_named(body, "terminal")["approval_names"] + assert_equal %w[list_files read_file write_file], tool_named(body, "filesystem")["approval_names"] + # The input tools ask on their own, and the class runs a tool it + # declares in code. assert_empty tool_named(body, "ask")["approval_names"] - assert_empty tool_named(body, "terminal")["approval_names"] assert_empty tool_named(body, "refund_invoice")["approval_names"] end @@ -331,4 +332,55 @@ def tool_named(body, name) assert_response :success assert_equal [ "playwright" ], agent.reload.mcp_servers end + + # --- the builder's roster, for an agent not created yet ------------------ + + def new_roster + get "/activeagents/api/agents/tool_roster" + assert_response :success + JSON.parse(response.body) + end + + test "a new agent's roster offers every tool with nothing enabled, each one implemented" do + body = new_roster + + assert body["tools"].none? { |tool| tool["enabled"] && tool["editable"] } + dashboard = body["tools"].select { |tool| tool["source"] == "dashboard" } + assert_equal ActionAgent::Agent::AVAILABLE_TOOLS.sort, dashboard.map { |tool| tool["key"] }.sort + assert dashboard.all? { |tool| tool["implemented"] } + # Host schema tools are there to switch on. + find_posts = tool_named(body, "find_posts") + assert_equal "agent_defined", find_posts["source"] + assert find_posts["editable"] + assert_equal false, find_posts["enabled"] + end + + test "a new agent's services say whether a run can call them and how many agents use them" do + ActionAgent.mcp_catalog = [ + { key: "tickets", name: "Tickets", transport: "http", url: "https://host.example/mcp/tickets" } + ] + create_agent(name: "Triage", mcp_servers: [ "tickets" ]) + create_agent(name: "Billing", mcp_servers: [ { key: "tickets", name: "Tickets" }, "playwright" ]) + + body = new_roster + + tickets = service_named(body, "tickets") + assert tickets["callable"] + assert_nil tickets["unavailable_reason"] + assert_equal 2, tickets["workspace_agents"] + assert_equal false, tickets["enabled"] + + playwright = service_named(body, "playwright") + assert_equal false, playwright["callable"] + assert_match(/stdio server/, playwright["unavailable_reason"]) + assert_equal 1, playwright["workspace_agents"] + ensure + ActionAgent.mcp_catalog = [] + end + + test "a saved agent's own roster does not count it among the workspace's" do + agent = create_agent(mcp_servers: [ "playwright" ]) + + assert_equal 0, service_named(roster_for(agent), "playwright")["workspace_agents"] + end end diff --git a/actionagent/test/builtin_capabilities_test.rb b/actionagent/test/builtin_capabilities_test.rb new file mode 100644 index 000000000..a42d56fb1 --- /dev/null +++ b/actionagent/test/builtin_capabilities_test.rb @@ -0,0 +1,106 @@ +# frozen_string_literal: true + +require "test_helper" + +# The capabilities the builder offers that act for the run rather than in +# AgentToolbox: the checkout tools, Slack, translate — routed by +# AgentExecutionService — and the instruction sets, composed into what a run +# executes under. Every capability in Agent::AVAILABLE_TOOLS has functions. +class BuiltinCapabilitiesTest < ActiveSupport::TestCase + SLACK_TOKEN = "xoxb-1234-5678-abcdefghijkl" + + def setup + ActionAgent::Agent.delete_all + ActionAgent::ProviderKey.delete_all + end + + def service_for(tools:, **attributes) + agent = ActionAgent::Agent.create!({ name: "Capable", provider: "mock", model: "mock", tools: tools }.merge(attributes)) + run = agent.agent_runs.create!(trace_id: SecureRandom.uuid, status: :running) + ActionAgent::AgentExecutionService.new(agent, run) + end + + test "every capability the builder offers defines functions" do + assert_empty ActionAgent::Agent::AVAILABLE_TOOLS - ActionAgent::AgentToolbox::DEFINITIONS.keys + names = ActionAgent::AgentToolbox.definitions_for(%w[terminal filesystem edit database slack translate]).map { |d| d[:name] } + assert_equal %w[run_command list_files read_file write_file edit_file query_database + slack_list_channels slack_read_channel slack_post_message translate_text], names + end + + test "a checkout tool in a run given no checkout says how to give it one" do + result = service_for(tools: %w[terminal], approval_required_tools: []).execute_tool("run_command", command: "ls") + + assert_equal ActionAgent::CheckoutTools::NO_CHECKOUT, result[:error] + end + + # The functions with side effects outside the conversation wait for a + # person unless the agent's list says otherwise, whichever way their + # capability was enabled: a template and the agents API bring no list. + test "a capability's side-effecting functions wait for approval unless the save names its own list" do + agent = ActionAgent::Agent.create!(name: "Gained", provider: "mock", model: "mock", tools: %w[terminal filesystem edit database slack translate]) + assert_equal %w[run_command write_file edit_file slack_post_message], agent.approval_required_tools + + agent.update!(tools: agent.tools + %w[code], approval_required_tools: %w[edit_file]) + assert_equal %w[edit_file], agent.approval_required_tools, "a list the save brought is kept as given" + + agent.update!(tools: %w[terminal], approval_required_tools: []) + agent.update!(tools: %w[terminal slack]) + assert_equal %w[slack_post_message], agent.approval_required_tools, "a capability gained without a list joins it" + + agent.update!(name: "Still gained") + assert_equal %w[slack_post_message], agent.approval_required_tools, "a save that gains nothing adds nothing" + + trusted = ActionAgent::Agent.create!(name: "Trusted", provider: "mock", model: "mock", tools: %w[terminal], approval_required_tools: []) + assert_equal [], trusted.approval_required_tools + end + + test "a side-effecting function waits for approval in a run by default" do + result = service_for(tools: %w[terminal]).execute_tool("run_command", command: "ls") + + assert_kind_of ActiveAgent::InputRequest, result + assert_equal :confirm, result.kind + assert_match(/run_command/, result.prompt) + end + + test "translate_text generates on the run's own provider" do + result = service_for(tools: %w[translate]).execute_tool("translate_text", text: "Hello", target_language: "Spanish") + + assert_nil result[:error] + assert result[:translation].is_a?(String) && result[:translation].present? + assert_equal "Spanish", result[:target_language] + assert_match(/target_language/, service_for(tools: %w[translate]).execute_tool("translate_text", text: "Hi", target_language: "")[:error]) + end + + test "slack tools say how to connect Slack until a bot token is saved, then call the Web API with it" do + service = service_for(tools: %w[slack]) + assert_equal ActionAgent::SlackTools::NOT_CONNECTED, service.execute_tool("slack_list_channels")[:error] + + ActionAgent::ProviderKey.create!(provider: "slack", credential: SLACK_TOKEN) + stub_request(:post, "https://slack.com/api/chat.postMessage") + .with(headers: { "Authorization" => "Bearer #{SLACK_TOKEN}" }, body: { channel: "C1", text: "Deployed" }.to_json) + .to_return(body: { ok: true, channel: "C1", ts: "1700000000.0001" }.to_json) + stub_request(:get, %r{\Ahttps://slack.com/api/conversations.history}) + .to_return(body: { ok: false, error: "not_in_channel" }.to_json) + + service = service_for(tools: %w[slack], approval_required_tools: []) + assert_equal({ posted: true, channel: "C1", ts: "1700000000.0001" }, service.execute_tool("slack_post_message", channel: "C1", text: "Deployed")) + assert_equal "Slack refused conversations.history: not_in_channel", service.execute_tool("slack_read_channel", channel: "C1")[:error] + end + + test "a Slack connection holds a bot token and is a connection, not a model provider" do + assert_includes ActionAgent::ProviderKey::CONNECTION_PROVIDERS, "slack" + assert_not ActionAgent::ProviderKey.new(provider: "slack", credential: "sk-not-slack").valid? + assert ActionAgent::ProviderKey.new(provider: "slack", credential: SLACK_TOKEN).valid? + end + + test "instruction sets are composed into the instructions a run executes under" do + agent = ActionAgent::Agent.new(name: "Stack", instructions: "Help with the shop.", instruction_sets: %w[rails unknown github]) + + composed = agent.composed_instructions_for("ask") + + assert composed.start_with?("Help with the shop.\n\nConventions to follow:\n") + assert_includes composed, ActionAgent::Agent::INSTRUCTION_SET_GUIDANCE["rails"] + assert_includes composed, ActionAgent::Agent::INSTRUCTION_SET_GUIDANCE["github"] + assert_nil ActionAgent::Agent.new(name: "Bare").composed_instructions_for("ask") + end +end diff --git a/actionagent/test/dashboard_assistant_service_test.rb b/actionagent/test/dashboard_assistant_service_test.rb index 97bbaf012..1f7c46535 100644 --- a/actionagent/test/dashboard_assistant_service_test.rb +++ b/actionagent/test/dashboard_assistant_service_test.rb @@ -183,16 +183,13 @@ def teardown assert_match(/Only 2 drafts/, service.execute_tool("prepare_agent_draft", **draft_attributes)[:error]) end - test "drafts reject unimplemented builder labels and offer only executable groups" do + test "drafts reject labels the toolbox does not implement and offer every executable group" do service = assistant - assert service.execute_tool("prepare_agent_draft", **draft_attributes.merge(tools: [ "database" ]))[:error] - assert service.execute_tool("prepare_agent_draft", **draft_attributes.merge(tools: [ "terminal" ]))[:error] - result = service.execute_tool("prepare_agent_draft", **draft_attributes.merge(tools: [ "code", "memory" ])) - assert_equal %w[code memory], result.dig(:draft, :tools) + assert service.execute_tool("prepare_agent_draft", **draft_attributes.merge(tools: [ "teleport" ]))[:error] + result = service.execute_tool("prepare_agent_draft", **draft_attributes.merge(tools: [ "code", "terminal", "database" ])) + assert_equal %w[code terminal database], result.dig(:draft, :tools) enum = ActionAgent::DashboardAssistantService::TOOL_DEFINITIONS.last.dig(:parameters, :properties, :tools, :items, :enum) - assert_not_includes enum, "database" - assert_not_includes enum, "terminal" - assert_includes enum, "code" + assert_equal ActionAgent::Agent::AVAILABLE_TOOLS.sort, enum.sort end test "repeated provider tool requests stop at the configured turn budget" do diff --git a/actionagent/test/engine_api_test.rb b/actionagent/test/engine_api_test.rb index ff88032f2..646581b42 100644 --- a/actionagent/test/engine_api_test.rb +++ b/actionagent/test/engine_api_test.rb @@ -48,6 +48,23 @@ def create_agent(name: "Support", **attributes) assert_equal 1, agent.agent_versions.count end + test "an agent enabled through the API waits for approval on side effects unless it names its own list" do + post "/activeagents/api/agents", params: { + agent: { name: "Operator", provider: "openai", model: "gpt-4o-mini", tools: %w[terminal filesystem] } + }, as: :json + assert_response :created + agent = ActionAgent::Agent.find(JSON.parse(response.body).dig("agent", "id")) + assert_equal %w[run_command write_file], agent.approval_required_tools + + patch "/activeagents/api/agents/#{agent.id}", params: { agent: { tools: %w[terminal filesystem slack] } }, as: :json + assert_response :success + assert_equal %w[run_command write_file slack_post_message], agent.reload.approval_required_tools + + patch "/activeagents/api/agents/#{agent.id}", params: { agent: { tools: %w[terminal filesystem slack edit], approval_required_tools: [] } }, as: :json + assert_response :success + assert_equal [], agent.reload.approval_required_tools + end + test "a rejected agent reports its errors per field as well as in summary" do post "/activeagents/api/agents", params: { agent: { name: "R", provider: "openai", model: "" } } diff --git a/actionagent/test/local_sandbox_checkout_tools_test.rb b/actionagent/test/local_sandbox_checkout_tools_test.rb new file mode 100644 index 000000000..ed044c6da --- /dev/null +++ b/actionagent/test/local_sandbox_checkout_tools_test.rb @@ -0,0 +1,149 @@ +# frozen_string_literal: true + +require "test_helper" +require "open3" + +# The :local backend's writing verbs — run_command, list_files, write_file — +# and CheckoutTools, which the terminal, filesystem, edit and database +# capabilities call through the orchestrator, against a real git checkout +# laid out as a boot leaves one. +class LocalSandboxCheckoutToolsTest < ActiveSupport::TestCase + Backend = ActionAgent::LocalSandboxBackend + CHECKOUT_TOKEN = "ghs_#{'D' * 36}" + + # What CheckoutTools and the backend read off a SandboxSession. + SandboxDouble = Struct.new(:session_id, :checkout_spec, :status, keyword_init: true) do + def ready? = status == "ready" + def running? = status == "running" + end + + def setup + super + @tmp = Pathname(Dir.mktmpdir("local-checkout-tools")).realpath + @saved = { + enabled: ActionAgent.instance_variable_get(:@local_sandboxes_enabled), + root: ActionAgent.instance_variable_get(:@local_sandbox_root) + } + ActionAgent.local_sandboxes_enabled = true + ActionAgent.local_sandbox_root = @tmp.join("sandboxes").to_s + @sandbox = SandboxDouble.new(session_id: SecureRandom.uuid, checkout_spec: { token: CHECKOUT_TOKEN }, status: "ready") + @workspace = @tmp.join("sandboxes", @sandbox.session_id) + @app = @workspace.join("app") + @backend = Backend.new + checkout!("README.md" => "# Shop\n", ".gitignore" => "log/\n", "app/models/order.rb" => "class Order; end\n") + end + + def teardown + ActionAgent.instance_variable_set(:@local_sandboxes_enabled, @saved[:enabled]) + ActionAgent.instance_variable_set(:@local_sandbox_root, @saved[:root]) + FileUtils.rm_rf(@tmp) + super + end + + test "run_command runs in the checkout with the boot's database variables and scrubs the sandbox's secrets" do + @workspace.join("state.json").write(JSON.generate("database_env" => { "DATABASE_URL" => "sqlite3:db/sandbox.sqlite3" })) + + result = @backend.run_command(@sandbox, "pwd; echo $DATABASE_URL; echo #{CHECKOUT_TOKEN}; echo oops >&2; exit 3") + + lines = result[:output].lines.map(&:strip) + assert_equal @app.to_s, lines[0] + assert_equal "sqlite3:db/sandbox.sqlite3", lines[1] + assert_not_includes result[:output], CHECKOUT_TOKEN + assert_includes lines, "oops" + assert_equal 3, result[:exit_status] + assert_equal false, result[:timed_out] + end + + test "run_command stops a command at its timeout" do + result = @backend.run_command(@sandbox, "sleep 5", timeout: 1) + + assert_nil result[:exit_status] + assert result[:timed_out] + end + + test "list_files lists tracked and untracked files without ignored ones" do + write("app/models/item.rb", "class Item; end\n") + write("log/development.log", "ignored\n") + + assert_equal %w[.gitignore README.md app/models/item.rb app/models/order.rb], @backend.list_files(@sandbox)[:files].sort + assert_equal %w[app/models/item.rb app/models/order.rb], @backend.list_files(@sandbox, "app/models/")[:files].sort + assert_raises(Backend::Error) { @backend.list_files(@sandbox, "../outside") } + end + + test "write_file creates directories and files, and replaces only regular files inside the checkout" do + result = @backend.write_file(@sandbox, "lib/tasks/report.rake", "task :report\n") + + assert_equal({ path: "lib/tasks/report.rake", bytes: 13, created: true }, result) + assert_equal "task :report\n", @app.join("lib/tasks/report.rake").read + assert_equal false, @backend.write_file(@sandbox, "README.md", "# Shop v2\n")[:created] + + outside = @tmp.join("outside") + FileUtils.mkdir_p(outside) + File.symlink(outside.to_s, @app.join("linked").to_s) + assert_raises(Backend::Error) { @backend.write_file(@sandbox, "linked/evil.rb", "x") } + assert_not outside.join("evil.rb").exist? + assert_raises(Backend::Error) { @backend.write_file(@sandbox, ".git/config", "x") } + assert_raises(Backend::Error) { @backend.write_file(@sandbox, "/etc/passwd", "x") } + end + + test "the checkout tools reach the backend through the orchestrator" do + tools = ActionAgent::CheckoutTools.new(@sandbox, orchestrator: ActionAgent::SandboxOrchestrator.new(backend: "local")) + + assert_equal "# Shop\n", tools.call("read_file", { path: "README.md" })[:content] + assert_includes tools.call("list_files", {})[:files], "app/models/order.rb" + assert tools.call("write_file", { path: "notes.txt", content: "hello\n" })[:created] + assert_equal 0, tools.call("run_command", { command: "test -f notes.txt" })[:exit_status] + + assert_equal 1, tools.call("edit_file", { path: "app/models/order.rb", old_text: "class Order", new_text: "class Order < ApplicationRecord" })[:replaced] + assert_equal "class Order < ApplicationRecord; end\n", @app.join("app/models/order.rb").read + assert_match(/was not found/, tools.call("edit_file", { path: "README.md", old_text: "nope", new_text: "x" })[:error]) + write("twice.txt", "a a\n") + assert_match(/appears 2 times/, tools.call("edit_file", { path: "twice.txt", old_text: "a", new_text: "b" })[:error]) + assert_match(/does not exist/, tools.call("read_file", { path: "missing.rb" })[:error]) + end + + test "query_database reads the result its script prints after the marker" do + orchestrator = Minitest::Mock.new + payload = { columns: %w[id], rows: [ [ 1 ] ], row_count: 1, truncated: false } + orchestrator.expect(:run_command, { output: "booting...\n#{ActionAgent::CheckoutTools::QUERY_MARKER}#{payload.to_json}\n", exit_status: 0 }) do |sandbox, command, timeout:| + sandbox == @sandbox && command.start_with?("bin/rails runner ") && !command.include?("SELECT") && timeout == ActionAgent::CheckoutTools::QUERY_TIMEOUT + end + + result = ActionAgent::CheckoutTools.new(@sandbox, orchestrator: orchestrator).call("query_database", { sql: "SELECT 1 AS id" }) + + assert_equal({ "columns" => %w[id], "rows" => [ [ 1 ] ], "row_count" => 1, "truncated" => false }, result) + orchestrator.verify + end + + test "without a live checkout the tools say how to give the run one" do + assert_match(/no checkout sandbox/, ActionAgent::CheckoutTools.new(nil).call("run_command", { command: "ls" })[:error]) + @sandbox.status = "expired" + assert_match(/is expired/, ActionAgent::CheckoutTools.new(@sandbox).call("read_file", { path: "README.md" })[:error]) + end + + private + + def checkout!(files) + FileUtils.mkdir_p(@app) + git("init", "-q") + files.each { |path, content| write(path, content) } + git("add", "--all") + git("commit", "-q", "-m", "Initial") + @workspace.join("state.json").write(JSON.generate("checkout_commit" => git("rev-parse", "HEAD").strip)) + end + + def write(path, content) + file = @app.join(path) + FileUtils.mkdir_p(file.dirname) + file.write(content) + end + + def git(*args) + env = { "GIT_CONFIG_GLOBAL" => File::NULL, "GIT_CONFIG_NOSYSTEM" => "1" } + argv = [ "git", "-c", "user.name=Test", "-c", "user.email=test@example.com", "-c", "commit.gpgsign=false", + "-c", "init.defaultBranch=main", *args ] + output, status = Open3.capture2e(env, *argv, chdir: @app.to_s) + assert status.success?, "git #{args.join(' ')} failed: #{output}" + output + end +end diff --git a/actionagent/test/mcp_tool_dispatcher_test.rb b/actionagent/test/mcp_tool_dispatcher_test.rb index d51d85613..4f1b44af3 100644 --- a/actionagent/test/mcp_tool_dispatcher_test.rb +++ b/actionagent/test/mcp_tool_dispatcher_test.rb @@ -43,6 +43,41 @@ def agent_with(servers, tools: []) assert_not dispatcher.dispatchable?("read_file") end + test "a host registration's headers reach the client a run calls it with" do + ActionAgent.mcp_catalog = [ + { key: "tickets", name: "Tickets", transport: "http", url: "https://host.example/mcp/tickets", + headers: { "Authorization" => "Bearer host-secret" }, tool_hints: %w[count_tickets] } + ] + dispatcher = ActionAgent::MCPToolDispatcher.new(agent_with(%w[tickets])) + + client = dispatcher.send(:client_for, dispatcher.send(:endpoint_for, "count_tickets")) + + assert_equal({ "Authorization" => "Bearer host-secret" }, client.instance_variable_get(:@headers)) + # The listing the dashboard serializes still carries none. + assert_nil ActionAgent::MCPCatalog.find("tickets")[:headers] + end + + test "a server a run cannot call says why" do + reason = ->(key) { ActionAgent::MCPToolDispatcher.unreachable_reason(ActionAgent::MCPCatalog.connection(key)) } + + assert_nil reason.call("tickets") + assert_match(/stdio server/, reason.call("local")) + assert_equal "Unknown to the catalog", reason.call("nope") + + ActionAgent.mcp_catalog = [] + assert_match(/Needs GITHUB_TOKEN/, reason.call("github")) + assert_match(/not callable from its own runs/, reason.call("activeagents")) + end + + test "a credentialed server is callable once the host registers it with headers" do + ActionAgent.mcp_catalog = [ + { key: "crm", name: "CRM", transport: "http", url: "https://crm.example/mcp", + requires_credentials: [ "CRM_TOKEN" ], headers: { "Authorization" => "Bearer x" } } + ] + + assert_nil ActionAgent::MCPToolDispatcher.unreachable_reason(ActionAgent::MCPCatalog.connection("crm")) + end + # VCR hooks into webmock and refuses any request without a cassette, so these # tests substitute the client rather than stub HTTP. The dispatcher memoizes # its clients per server key, so seeding that hash injects the double. diff --git a/actionagent/test/templates_test.rb b/actionagent/test/templates_test.rb index dbf981d89..687fc9ef7 100644 --- a/actionagent/test/templates_test.rb +++ b/actionagent/test/templates_test.rb @@ -42,6 +42,8 @@ def setup # The detail shape, so the editor never seeds an empty form from it. assert_equal template.instructions, agent["instructions"] assert_equal template.tools, agent["tools"] + # Its checkout functions with side effects wait for approval by default. + assert_equal %w[run_command write_file], agent["approval_required_tools"] assert_equal template.model_config, agent["model_config"] assert agent.key?("action_prompts") assert_equal 1, template.reload.usage_count diff --git a/docs/framework/dashboard.md b/docs/framework/dashboard.md index 21b1ae91c..d6056672b 100644 --- a/docs/framework/dashboard.md +++ b/docs/framework/dashboard.md @@ -260,9 +260,13 @@ to the engine's handler for that agent. The model reads `{ "provided": true, **Approvals.** An agent's `approval_required_tools` names the tools whose calls wait for a person: toolbox tools, schema tools and its MCP servers' tools. Set it with the **Approval** switch beside each enabled tool on the agent's Tools -tab, or through the agents API. A capability's switch lists every function it -exposes (`memory` holds both `save_memory` and `recall_memory`), and the tool -roster endpoint returns those names as each row's `approval_names`. A +tab, or through the agents API. `run_command`, `write_file`, `edit_file` and +`slack_post_message` are listed by default: an agent that gains `terminal`, +`filesystem`, `edit` or `slack` — from a template, the builder, the Tools tab, +or an API call that names no `approval_required_tools` — has them added, and +the Approval switch takes them off. A capability's switch lists every function +it exposes (`memory` holds both `save_memory` and `recall_memory`), and the +tool roster endpoint returns those names as each row's `approval_names`. A call to a listed tool raises a `confirm` request that carries the call's arguments, before the tool runs. Approved, the tool runs once. Declined, it never runs, and the model reads an error. The list is part of the agent's