import { motion, AnimatePresence } from 'framer-motion'; import { useLocation, useNavigate } from 'react-router-dom'; import styles from './ControlRoom.module.css'; /** * ControlRoom * Admin-only surface. Accessible at /control-room. * Protected by AdminGuard at router level AND FastAPI RBAC middleware. * * Panels (left sidebar → content area): * System Health — service status, GPU utilization, queue depths * Oracle Admin — schema catalog, canvas management, MCP tools * Comms Config — WAHA/Evolution provider, webhook setup * Users & Roles — broker roster, role assignment, audit log * Model Hydration — s5cmd sync status, model inventory * Meta Integration — OAuth, ad account, Lookalike sync * * Design: deliberately more "operator" than "broker" — still glassmorphic * but denser information, monospace for technical values. */ type Panel = | 'system' | 'oracle-admin' | 'comms-config' | 'users' | 'models' | 'meta'; const PANELS: { id: Panel; label: string; icon: string }[] = [ { id: 'system', label: 'System Health', icon: '⬡' }, { id: 'oracle-admin', label: 'Oracle Admin', icon: '◈' }, { id: 'comms-config', label: 'Comms Config', icon: '⟐' }, { id: 'users', label: 'Users & Roles', icon: '⊛' }, { id: 'models', label: 'Model Hydration', icon: '⊗' }, { id: 'meta', label: 'Meta Integration', icon: '⊕' }, ]; export default function ControlRoom() { const navigate = useNavigate(); const location = useLocation(); const routePanel = location.pathname.split('/').filter(Boolean)[1] as Panel | undefined; const active: Panel = PANELS.some((panel) => panel.id === routePanel) ? routePanel! : 'system'; return (
{/* Header */}

Control Room

System Administration · Admin Access Only

{/* Left sidebar */} {/* Panel content */}
{active === 'system' && } {active === 'oracle-admin' && } {active === 'comms-config' && } {active === 'users' && } {active === 'models' && } {active === 'meta' && }
); } // ── System Health ───────────────────────────────────────────── function SystemHealthPanel() { const services = [ { name: 'core-api', status: 'healthy', latency: '42ms', replicas: '2/2' }, { name: 'webos', status: 'healthy', latency: '—', replicas: '2/2' }, { name: 'media-engine', status: 'healthy', latency: '—', replicas: '1/1' }, { name: 'postgres', status: 'healthy', latency: '3ms', replicas: '1/1' }, { name: 'redis', status: 'healthy', latency: '0.4ms', replicas: '1/1' }, ]; return (

System Health

{services.map(svc => (
{svc.name}
Replicas: {svc.replicas} {svc.latency !== '—' && Latency: {svc.latency}}
))}
{/* GPU MIG status */}

GPU · RTX 6000 Blackwell · MIG Active

Slice 0 · 48GB SGLang → Qwen3.6 35B ● Loaded
Slice 1 · 48GB ComfyUI → Wan 2.2 + Qwen-Image ● Loaded
); } // ── Oracle Admin ────────────────────────────────────────────── function OracleAdminPanel() { return (

Oracle Administration

Canvas management, schema catalog, and MCP tools. These controls are not visible to broker-role users.

Active Canvas Sessions

Query canvas history, fork/merge, and revision management available here.

Schema Catalog

MCP Tools

); } // ── Comms Config ────────────────────────────────────────────── function CommsConfigPanel() { return (

Comms Configuration

WhatsApp provider setup. Never visible to sales brokers.

); } // ── Users & Roles ───────────────────────────────────────────── function UsersPanel() { const roles = ['ADMIN', 'SALES_DIRECTOR', 'SALES_BROKER']; return (

Users & Roles

NameEmailRoleLast Active
Sagnik sagnik@desineuron.in ADMIN Now
); } // ── Model Hydration ─────────────────────────────────────────── function ModelHydrationPanel() { const models = [ { name: 'Wan 2.2', size: '15 GB', status: 'synced', path: '/opt/models/comfy/wan2.2' }, { name: 'Qwen-Image 2512', size: '20 GB', status: 'synced', path: '/opt/models/comfy/qwen-image-2512' }, { name: 'Qwen3.6 35B A3B', size: '70 GB', status: 'synced', path: '/opt/models/llm/qwen3.6-35b-a3b' }, ]; return (

Model Hydration

NVMe-backed model store. Re-sync from S3 via s5cmd.

{models.map(m => (
{m.name} {m.path}
{m.size} ● {m.status}
))}
); } // ── Meta Integration ────────────────────────────────────────── function MetaIntegrationPanel() { return (

Meta Business Integration

OAuth, Ad Account, and Lookalike Audience configuration. Never visible to broker-role users.

OAuth not connected

Ad Account

); }