<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->

# `lr-agent-eval-dashboard`

- **Import** `import '@aceshooting/lyra-ui/components/lr-agent-eval-dashboard.js';` (stable tag alias; registers the tag)
- **Class** `LyraAgentEvalDashboard`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js`
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
- **Status** `stable` since `6.2.0` — see the maturity and deprecation policy in `llms/shared.md`
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
- **Deprecations** none
- **Optional peers** none
- **Themeable via** 13 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`

---

## `lr-agent-eval-dashboard`

Controlled evaluation overview with metric cards, a dependency-free trend chart, and run-status
history. It never launches or scores evaluations.

**Properties:** `metrics: AgentEvaluationMetric[] = []` (attribute: false), where each metric is
`{ id, label, value, format?: 'number' | 'percent' | 'milliseconds' | 'currency' }`; `currency:
string = 'USD'` is the ISO 4217 code used by currency-formatted metrics (invalid codes safely fall
back to USD). `runs:
AgentEvaluationDashboardRun[] = []` (attribute: false), where each run is `{ id, label, status:
AgentStatusValue, metrics?: Record<string, number> }`. `AgentStatusValue` accepts either a compact
`AgentStatusKind` string or an `AgentStatusPresentation` object (`{ kind, message?, label?,
variant?, terminal?, active? }`), preserving explicit caller labels/messages and badge variants.
`metricId: string | null = null`; `label?: string` — omission localizes the heading while an
explicit empty string renders no heading/name; `showChart: boolean = true`; `chartHeight: string =
'220px'`; `maxRenderedRuns: number = 100` (attribute `max-rendered-runs`, clamped to 1–500) bounds
both the run list and the chart projection.
Empty metric/run ids are omitted and later duplicates use deterministic first-occurrence-wins
normalization before cards, selectors, chart series, row lookup, and emitted events are derived.

**Events:** `lr-metric-change` (`{ metricId }`, emitted when a metric selector is activated) and
`lr-run-activate` (`{ runId, run }`).

**CSS parts:** `base`, `heading`, `metrics`, `metric`, `chart`, `runs`, `runs-heading`, `run`,
`run-label`, `run-meta`, `run-status`, `run-status-message`, `empty`.

**Additional API surface:**

- `--lr-agent-eval-dashboard-active-border` — Active metric border. Default: `var(--lr-color-brand)`.
- `--lr-agent-eval-dashboard-active-background` — Active metric background. Default: `var(--lr-color-brand-quiet)`.
