"use client"; import { useState } from "react"; import type { ReactElement } from "react"; import { Card, SectionHeader, Badge, Dot } from "@mosaic/ui"; interface AgentNode { id: string; initials: string; avatarColor: string; name: string; task: string; status: "teal" | "blue" | "amber" | "red" | "muted"; } interface OrchestratorSession { id: string; orchId: string; name: string; badge: string; badgeVariant: | "badge-teal" | "badge-amber" | "badge-red" | "badge-blue" | "badge-muted" | "badge-purple" | "badge-pulse"; duration: string; agents: AgentNode[]; } const sessions: OrchestratorSession[] = [ { id: "s1", orchId: "ORCH-001", name: "infra-refactor", badge: "running", badgeVariant: "badge-teal", duration: "2h 14m", agents: [ { id: "a1", initials: "PL", avatarColor: "rgba(47,128,255,0.15)", name: "planner-agent", task: "Analyzing network topology", status: "blue", }, { id: "a2", initials: "EX", avatarColor: "rgba(20,184,166,0.15)", name: "executor-agent", task: "Applying Terraform modules", status: "teal", }, { id: "a3", initials: "QA", avatarColor: "rgba(245,158,11,0.15)", name: "reviewer-agent", task: "Waiting for executor output", status: "amber", }, ], }, { id: "s2", orchId: "ORCH-002", name: "api-v3-migration", badge: "running", badgeVariant: "badge-teal", duration: "45m", agents: [ { id: "a4", initials: "MG", avatarColor: "rgba(139,92,246,0.15)", name: "migrator-agent", task: "Rewriting endpoint handlers", status: "blue", }, ], }, ]; interface AgentNodeItemProps { agent: AgentNode; } function AgentNodeItem({ agent }: AgentNodeItemProps): ReactElement { const [hovered, setHovered] = useState(false); return (
{ setHovered(true); }} onMouseLeave={(): void => { setHovered(false); }} style={{ display: "flex", alignItems: "center", gap: 10, padding: "7px 10px", borderRadius: "var(--r-sm)", border: `1px solid ${hovered ? "var(--ms-border-700)" : "var(--border)"}`, background: hovered ? "var(--surface)" : "var(--bg-mid)", transition: "border-color 0.15s, background 0.15s", }} >
{agent.initials}
{agent.name}
{agent.task}
); } interface OrchCardProps { session: OrchestratorSession; } function OrchCard({ session }: OrchCardProps): ReactElement { return (
{session.orchId} {session.name} {session.badge} {session.duration}
{session.agents.map((agent) => ( ))}
); } export function OrchestratorSessions(): ReactElement { return ( 3 active} />
{sessions.map((session) => ( ))}
); }