app.alert() in your evals file.
What alerts receive
| Field | Type | Description |
|---|---|---|
projectName | string | Project name |
sessionId | string | Session ID |
evalSummary | EvalRunSummary | undefined | Aggregated eval results (present when evals are registered) |
enrichSummary | EnrichRunSummary | undefined | Aggregated enrichment results (present when enrichments are registered) |
evalSummary and enrichSummary contain all results for the session - both cached and freshly computed. The alert always sees the complete picture.
evalSummary fields
When alerts fire
Alerts fire once per session content version - after all eval/enrichment work for that session completes.| Trigger | Behavior |
|---|---|
| Initial page load | Alerts fire when the last queued item completes |
| Background processing | Alerts fire when the last item for a session completes |
| Page reload (all cached) | No items enter the queue - no alerts fire |
| Re-run All | Clears dedup marker first → alerts fire exactly once |
| Re-run single item | Dedup marker still valid → alerts do not re-fire |
| Session content changes | New content hash → alerts fire again |
Options
| Option | Type | Default | Description |
|---|---|---|---|
suppressOnRecompute | boolean | true | When true, alert is suppressed during recomputes triggered by code changes. Set to false for audit logging that should always fire. |
Examples
Log every session result
Warn on failures
Slack webhook on failure
Write results to a file for CI
Usage
Add alerts to your evals file alongside evals and enrichments:my-evals.js

