Run summary
What the agent did, what changed and what needs you.
A run summary closes out an agent run: a title glyph and a quiet subtitle, a line on what the run
did, and stats that count up from zero. Under them, changes list the files the run touched and
needs carry what is still on the person, each with an optional action button. "Undo all" greys out
the changes and swaps the glyph; leave undone out to let the button toggle it, or control it.
Pricing cards now use spacing tokens
Usage
<!-- include core.css + run-summary.css -->
<div class="dm-rsu dm-panel">
<div class="dm-rsu-h">
<span class="dm-rsu-g"><!-- check icon --></span>
<div>
<div class="dm-rsu-t">Run complete</div>
<div class="dm-rsu-s dm-muted">Finished in 12m 40s</div>
</div>
</div>
<p class="dm-rsu-title">Pricing cards now use spacing tokens</p>
<div class="dm-rsu-stats">
<span><b class="dm-num">6</b> files</span>
<span><b class="dm-num">14</b> steps</span>
</div>
<div class="dm-rsu-acts">
<button class="dm-pill dm-primary dm-sm">Open changes</button>
<button class="dm-pill dm-ghost dm-sm">Undo all</button>
</div>
</div>Properties
| Name | Type | Description |
|---|---|---|
title | string | The title while the changes stand. Defaults to Run complete. |
undoneTitle | string | The title once the changes are undone. Defaults to Changes undone. |
subtitle | string | The quiet line under the title, like Finished in 12m 40s. |
summary | ReactNode | One line on what the run did. |
stats | RunStat[] | { label; value; prefix?; suffix?; decimals? } — each counts up from zero. |
changes | RunChange[] | { file; added; removed } — the files the run changed, under "What changed". |
needs | RunNeed[] | { key; text; action?: { label; onClick; busy? } } — what is left for the person. |
undone | boolean | Whether the changes are undone. Leave it out to let "Undo all" toggle it. |
onUndoneChange | (undone) => void | Fires when "Undo all" / "Redo" toggles the state. |
onDetails | () => void | Adds a button in the corner that opens the run's details. |
onOpenChanges | () => void | The main button, "Open changes". |
bare | boolean | Sits flat in a chat thread (the default). Set false to give it a card of its own. |
Theming
Works in light and dark (data-theme="dark") and in the Soft style (data-style="soft"). The glyph,
the +/− diffs and the "Needs you" dot all take their colour from the theme tokens (--dm-ok,
--dm-add, --dm-del, --dm-warn-mark), so the summary reads the same against any surface; in Soft
the card and its pills are rounder.