Foundation / Agentic Design Language
Interruption Patterns
Human-in-the-loop control surfaces for pausing, redirecting, and overriding autonomous agents. These patterns make human authority legible and prevent accidental or irreversible actions.
Color System
Pattern 1 of 3
AgentPauseControl
PURPOSE
Allows a human operator to pause an in-flight agent without losing execution state. When paused, the component shows exactly what is preserved — the step count and last completed action — so the operator can make an informed decision before resuming or redirecting.
LIVE DEMO
PROPS
| Prop | Type | Default | Description |
|---|---|---|---|
| agent | string | — | Agent name shown in the header. |
| task | string | — | High-level task description. |
| currentStep | number | — | Current step (1-based). |
| totalSteps | number | — | Total steps in execution plan. |
| lastCompletedStep | string | — | Last completed step label — shown as preserved state when paused. |
| currentAction | string | — | What the agent is doing right now — shown while running. |
| startedAt | string | — | ISO or formatted timestamp when execution started. |
| status | "running" | "paused" | "resuming" | internal | Controlled status. Omit to use internal state. |
| onPause | () => void | — | Callback when the pause button is clicked. |
| onResume | () => void | — | Callback when the resume button is clicked. |
DO / DON'T
Pattern 2 of 3
RedirectPanel
PURPOSE
Surfaces a goal-change form mid-execution. Shows what the agent has already accomplished (preserving those steps), the struck-through original goal, and a preview of the new goal. Requires explicit confirmation before redirecting.
LIVE DEMO
PROPS
| Prop | Type | Default | Description |
|---|---|---|---|
| agent | string | — | Agent name shown in the header. |
| originalGoal | string | — | The current goal being replaced — shown struck-through in the diff. |
| completedSteps | RedirectStep[] | — | Array of { index, label, status } where status is "completed" | "in_progress" | "pending". |
| onRedirect | (newGoal: string) => void | — | Called with the new goal string when the operator confirms. |
| onCancel | () => void | — | Called when the operator cancels the redirect. |
DO / DON'T
Pattern 3 of 3
OverrideConfirmation
PURPOSE
Used when the human operator wants to cancel or overturn an in-flight agent decision with irreversible consequences — e.g. cancelling scheduled payments or halting an approved transaction. Consequences are shown before the acknowledgment checkbox is presented, making blind overrides impossible.
LIVE DEMO
PROPS
| Prop | Type | Default | Description |
|---|---|---|---|
| agent | string | — | Agent name shown in the header. |
| agentTask | string | — | What the agent was doing — shown for context before the override title. |
| overrideTitle | string | — | Short title for the override action. |
| overrideDescription | string | — | Human-readable description of what the override will do. |
| consequences | OverrideConsequence[] | — | Array of { id, severity, label, detail? } where severity is "critical" | "high" | "medium". |
| acknowledgmentText | string | — | Custom acknowledgment statement. Defaults to a generated statement based on critical consequence count. |
| onConfirm | () => void | — | Called when the operator confirms the override (requires acknowledgment). |
| onCancel | () => void | — | Called when the operator cancels. |
DO / DON'T