crucıble

Relay

Tool-call card for agent UIs — a status glyph spins an accent arc while running, closes into a drawn check on success or a rust shake on error, with a ticking elapsed timer and expandable tinted-JSON input/output. RelayGroup chains calls along a progress spine that fills as each completes.

motionfree

Installation

CLI

npx shadcn@latest add @crucible/relay

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
namestringTool name, rendered monospace in the header (e.g. "search_docs").
summaryReact.ReactNodeShort human summary shown after the name, truncated to one line.
statusRelayStatus"pending"Current lifecycle state — drives the glyph, sheen, shake and timer.
inputunknownTool arguments. Objects/arrays render as tinted, pretty-printed JSON.
outputunknownTool result. Strings render as plain text; anything else as tinted JSON. undefined means "not arrived yet".
startedAtnumberEpoch ms when the call started. Enables the elapsed-time readout.
endedAtnumberEpoch ms when the call finished. Freezes the elapsed readout at an exact duration.
defaultOpenbooleanfalseStart with the Input/Output body expanded.
accentColorstring"#a78bfa" (ion violet)Accent for the running arc, success glyph, sheen, JSON keys and focus ring.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children"> — they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, and passes className through.