File size: 1,946 Bytes
f6a5256
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
 * Closed-Loop Lab — next-generation AV perception evaluation.
 * Counterfactual generation + validity gating, closed-loop behavioral
 * evaluation with causal replay, safety-informed metrics, launch-eval
 * gauntlet with compute dedup, and the architecture decision docs.
 */
import { useState } from 'react';
import Box from '@mui/material/Box';
import Tab from '@mui/material/Tab';
import Tabs from '@mui/material/Tabs';
import ArchitectureTab from '../../components/nextgen/ArchitectureTab';
import ClosedLoopTab from '../../components/nextgen/ClosedLoopTab';
import CounterfactualsTab from '../../components/nextgen/CounterfactualsTab';
import GauntletTab from '../../components/nextgen/GauntletTab';
import SafetyMetricsTab from '../../components/nextgen/SafetyMetricsTab';

const TABS = [
  { id: 'counterfactuals', label: 'Counterfactuals' },
  { id: 'closedloop', label: 'Closed-Loop' },
  { id: 'safety', label: 'Safety Metrics' },
  { id: 'gauntlet', label: 'Gauntlet' },
  { id: 'architecture', label: 'Architecture' },
] as const;

export default function ClosedLoopLabPage() {
  const [tab, setTab] = useState<string>('counterfactuals');
  return (
    <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>
      <Tabs
        value={tab}
        onChange={(_, v) => setTab(v)}
        variant="scrollable"
        sx={{ minHeight: 36, borderBottom: '1px solid #232a31', '& .MuiTab-root': { minHeight: 36, fontSize: 12.5, textTransform: 'none', fontWeight: 700 } }}
      >
        {TABS.map((t) => (
          <Tab key={t.id} value={t.id} label={t.label} />
        ))}
      </Tabs>
      <Box sx={{ pt: 0.5 }}>
        {tab === 'counterfactuals' && <CounterfactualsTab />}
        {tab === 'closedloop' && <ClosedLoopTab />}
        {tab === 'safety' && <SafetyMetricsTab />}
        {tab === 'gauntlet' && <GauntletTab />}
        {tab === 'architecture' && <ArchitectureTab />}
      </Box>
    </Box>
  );
}