import type { Agent, FeedEntry } from '../../types' import { getAgentMeta } from '../../lib/agentMeta' import { cn } from '../../lib/utils' type Props = { feed: FeedEntry[] agents: Agent[] filterAgentId?: string | null opsOnly?: boolean } const LEVEL: Record = { info: 'text-foreground-muted', ok: 'text-success', warn: 'text-warning', err: 'text-danger', } function isOpsEvent(message: string): boolean { const lower = message.toLowerCase() if (message.includes(' answered:')) return false if (message.startsWith('Prompt received:')) return false if (lower.includes('completed a response')) return false return true } export function ActivityStream({ feed, agents, filterAgentId, opsOnly }: Props) { let items = filterAgentId ? feed.filter((e) => e.agent_id === filterAgentId) : feed if (opsOnly) items = items.filter((e) => isOpsEvent(e.message)) return (
{items.length === 0 && (

{opsOnly ? 'No operational events — responses appear in Chat.' : 'No activity yet — agents are on standby.'}

)} {items.map((e) => { const ag = agents.find((a) => a.id === e.agent_id) const meta = ag ? getAgentMeta(ag.id) : null const Icon = meta?.icon return (
{Icon && ( )}
{ag?.name.split(' ·')[0] || e.agent_id} {new Date(e.ts).toLocaleTimeString('en-US', { hour12: false })}

{e.message}

) })}
) }