affectUI › Components › Agents

Agent Findings

A swarm of agents checking something – one calm row per agent with its progress, and their findings sliding into a short feed as they're found.

Part of affectUI Pro. Install: npx shadcn@latest add https://www.affectui.com/r/agent-findings.json · Import from @/components/ui/agent-findings

When to use

  • Several agents check, audit or verify something in parallel and people want to follow along without drowning in detail
  • Security reviews, code audits, test runs, data checks – anything that turns up findings as it goes

When not to use

  • When it matters who started whom – use Agent Tree
  • When the timeline matters – use Agent Lanes or Trace Waterfall

Usage

import { AgentFindings, type FindingAgent, type Finding } from "@/components/ui/agent-findings";

export function Run({ agents, findings }: { agents: FindingAgent[]; findings: Finding[] }) {
  return (
    <AgentFindings
      title="Verification"
      agents={agents} // { id, name, model?, avatar?, step?, done, total, status? }
      findings={findings} // { id, agentId, title, severity: "critical" | "warning" | "note", location?, at }
      onOpen={(finding) => openFinding(finding.id)}
    />
  );
}

Props

NameTypeDefaultDescription
agentsFindingAgent[]One row each: name, current step, checks done of total; status defaults to running until done reaches total
findingsFinding[]What the agents found, with severity, where and when – the newest come first in the feed
titlestring"Verification"Heading in the bar
rowsnumber4How many findings the feed shows – it keeps that height
nownumberA clock you control for the “2m” times – without it they follow real time
onOpen(finding: Finding) => voidA finding was clicked
classNamestringExtra class on the root

Keyboard

  • Tab: Moves through the agents and the findings in the feed
  • Enter / Space: On an agent: shows only its findings (again: all); on a finding: opens it

Accessibility

  • The feed is a polite live region – new findings are announced as they arrive
  • Every severity has a text label for screen readers, not just a color
  • Agents are toggle buttons (aria-pressed) for the filter

Responsive

  • Below 480px the check counts and locations drop, so the rows keep one line
  • Dark mode built in; colors are CSS variables on .ui-af

Requirements

  • React 19