KQ-1292 · AGENT/RUN
Agent Run
An agent's run watched as it happens: steps move from pending to running to done or failed with live durations, nodes filling and ticking on flick, tool calls opening to a measured height on glide, and a time and cost meter whose digits run with the clock. A risky step halts the run behind an inline gate that glides open; holding Approve sweeps a linear fill, drains on the exit ease if let go early, and lands on recoil before the gate folds into a stamp. The timeline scrubs 1:1 and rubber-bands against its ends and any undecided gate, springing back on glide; arrow keys move the playhead and the plan, Space or Enter held approves.
Reconcile March payouts
RunningLedger agent · Gaugeworks Reasoner
- Time
- 00:00.0
- Cost of $0.50
- $0.00
running · step 1 of 7 · plan the reconciliation
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/agent-run
Props
- run
- AgentRunData
- default defaultRun
- The run log: title, agent, model, budget in cents, and each step's title, tool, ms, cost, input, output, error and gate.
- now
- number
- default —
- Controlled clock in ms since the run started. The host owns time; scrubs and Replay ask through onNowChange.
- defaultNow
- number
- default 0
- Where the console's own clock starts.
- onNowChange
- (ms: number) => void
- default —
- A scrub, a seek, a key or Replay asked for a new time.
- playing / defaultPlaying
- boolean
- default — / true
- Whether the console's own clock runs. It also pauses by itself off screen and in a hidden tab.
- onPlayingChange
- (playing: boolean) => void
- default —
- Play, Pause, Replay or the run reaching its end.
- speed
- number
- default 1
- How fast the console's clock runs, as a multiple of real time.
- detail
- "compact" | "standard" | "full"
- default "standard"
- Titles only, a one-line call under each step, or every call opened.
- approval
- "hold" | "click" | "auto"
- default "hold"
- Approve a gated step with a press and hold, a plain click, or let policy approve it without pausing.
- holdMs
- number
- default 700
- How long the approve button has to be held.
- onDecision
- (stepId: string, decision: "approved" | "denied") => void
- default —
- A gated step was approved or denied.
- onStateChange
- (state: AgentRunState, step: AgentStep | null) => void
- default —
- The run moved on (running, paused, waiting, finished, failed, stopped) from its own clock, a scrub, a decision or play and pause.
- onReplay
- () => void
- default —
- Replay was pressed: decisions clear and the clock rewinds to zero.
- status
- "ready" | "loading" | "error"
- default "ready"
- Whether the run log is there yet: skeleton rows while loading, a Retry when it failed, and an empty plan says so.
- onRetry
- () => void
- default —
- Retry on the error state.
- formatCost
- (cents: number) => string
- default Intl US dollars
- How a cost in cents is shown in the meter and the log.
- label
- string
- default run.title
- The console's accessible name.
- sound
- boolean
- default false
- Play the approval chime, scrub ticks and control clicks. The run playing on its own is silent.
- disabled
- boolean
- default false
- Disables the controls, the gate and the timeline.
- className
- string
- default —
- Give the console a height (h-[34rem]) and the plan scrolls inside it.
| Prop | Type | Default | Description |
|---|---|---|---|
| run | AgentRunData | defaultRun | The run log: title, agent, model, budget in cents, and each step's title, tool, ms, cost, input, output, error and gate. |
| now | number | — | Controlled clock in ms since the run started. The host owns time; scrubs and Replay ask through onNowChange. |
| defaultNow | number | 0 | Where the console's own clock starts. |
| onNowChange | (ms: number) => void | — | A scrub, a seek, a key or Replay asked for a new time. |
| playing / defaultPlaying | boolean | — / true | Whether the console's own clock runs. It also pauses by itself off screen and in a hidden tab. |
| onPlayingChange | (playing: boolean) => void | — | Play, Pause, Replay or the run reaching its end. |
| speed | number | 1 | How fast the console's clock runs, as a multiple of real time. |
| detail | "compact" | "standard" | "full" | "standard" | Titles only, a one-line call under each step, or every call opened. |
| approval | "hold" | "click" | "auto" | "hold" | Approve a gated step with a press and hold, a plain click, or let policy approve it without pausing. |
| holdMs | number | 700 | How long the approve button has to be held. |
| onDecision | (stepId: string, decision: "approved" | "denied") => void | — | A gated step was approved or denied. |
| onStateChange | (state: AgentRunState, step: AgentStep | null) => void | — | The run moved on (running, paused, waiting, finished, failed, stopped) from its own clock, a scrub, a decision or play and pause. |
| onReplay | () => void | — | Replay was pressed: decisions clear and the clock rewinds to zero. |
| status | "ready" | "loading" | "error" | "ready" | Whether the run log is there yet: skeleton rows while loading, a Retry when it failed, and an empty plan says so. |
| onRetry | () => void | — | Retry on the error state. |
| formatCost | (cents: number) => string | Intl US dollars | How a cost in cents is shown in the meter and the log. |
| label | string | run.title | The console's accessible name. |
| sound | boolean | false | Play the approval chime, scrub ticks and control clicks. The run playing on its own is silent. |
| disabled | boolean | false | Disables the controls, the gate and the timeline. |
| className | string | — | Give the console a height (h-[34rem]) and the plan scrolls inside it. |