feat: Agent Health page with progressive filtering and GroupCard component

Add URL-driven Agent Health page (/agents, /agents/:appId,
/agents/:appId/:instanceId) that progressively narrows from all
applications to a single instance with trend charts. Create
generic GroupCard composite for grouping instances by application.
Expand mock data to 8 instances across 4 apps with varied states.
Split sidebar Agents header into navigable link + collapse chevron.
Update agent tree paths to /agents/:appId/:instanceId. Add EventFeed
with lifecycle events. Change SidebarAgent.tps from string to number.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-18 18:22:14 +01:00
parent e69e5ab5fe
commit 8f93ea41ed
18 changed files with 990 additions and 380 deletions

View File

@@ -8,7 +8,7 @@ export interface SidebarAgent {
id: string
name: string
status: 'live' | 'stale' | 'dead'
tps: string
tps: number
}
export interface SidebarApp {
@@ -31,8 +31,9 @@ export const SIDEBAR_APPS: SidebarApp[] = [
{ id: 'order-enrichment', name: 'order-enrichment', exchangeCount: 541 },
],
agents: [
{ id: 'prod-1', name: 'prod-1', status: 'live', tps: '14.2/s' },
{ id: 'prod-2', name: 'prod-2', status: 'live', tps: '11.8/s' },
{ id: 'ord-1', name: 'ord-1', status: 'live', tps: 14.2 },
{ id: 'ord-2', name: 'ord-2', status: 'live', tps: 11.8 },
{ id: 'ord-3', name: 'ord-3', status: 'live', tps: 8.4 },
],
},
{
@@ -45,7 +46,8 @@ export const SIDEBAR_APPS: SidebarApp[] = [
{ id: 'payment-validate', name: 'payment-validate', exchangeCount: 498 },
],
agents: [
{ id: 'prod-2', name: 'prod-2', status: 'live', tps: '11.8/s' },
{ id: 'pay-1', name: 'pay-1', status: 'live', tps: 9.7 },
{ id: 'pay-2', name: 'pay-2', status: 'stale', tps: 0.3 },
],
},
{
@@ -58,8 +60,8 @@ export const SIDEBAR_APPS: SidebarApp[] = [
{ id: 'shipment-track', name: 'shipment-track', exchangeCount: 923 },
],
agents: [
{ id: 'prod-3', name: 'prod-3', status: 'live', tps: '12.1/s' },
{ id: 'prod-4', name: 'prod-4', status: 'live', tps: '9.1/s' },
{ id: 'ship-1', name: 'ship-1', status: 'live', tps: 12.1 },
{ id: 'ship-2', name: 'ship-2', status: 'live', tps: 9.1 },
],
},
{
@@ -70,6 +72,8 @@ export const SIDEBAR_APPS: SidebarApp[] = [
routes: [
{ id: 'notification-dispatch', name: 'notification-dispatch', exchangeCount: 471 },
],
agents: [],
agents: [
{ id: 'notif-1', name: 'notif-1', status: 'dead', tps: 0 },
],
},
]