import { useEffect, useRef, useState } from 'react' import TerminalPane from './components/TerminalPane' const panes = [ { jobId: 'qwen', title: 'Qwen Baseline', tone: 'cyan' }, { jobId: 'rl-agent', title: 'RL Agent', tone: 'green' }, ] function formatMs(value) { if (value == null) { return '--' } if (value < 1000) { return `${Math.round(value)} ms` } return `${(value / 1000).toFixed(2)} s` } function buildRunStats(telemetry, issuedAt) { if (!telemetry || !issuedAt) { return { responseMs: null, completionMs: null, waiting: true, } } const responseMs = telemetry.lastOutputAt && telemetry.lastOutputAt >= issuedAt ? telemetry.lastOutputAt - issuedAt : null const finishedAt = telemetry.session?.finished_at ? telemetry.session.finished_at * 1000 : null const completionMs = finishedAt && finishedAt >= issuedAt ? finishedAt - issuedAt : null return { responseMs, completionMs, waiting: responseMs == null && completionMs == null, } } function App() { const [split, setSplit] = useState(50) const [dragging, setDragging] = useState(false) const [command, setCommand] = useState('') const [comparisonRun, setComparisonRun] = useState(null) const [telemetry, setTelemetry] = useState({ qwen: null, 'rl-agent': null, }) const workspaceRef = useRef(null) const leftPaneRef = useRef(null) const rightPaneRef = useRef(null) useEffect(() => { if (!dragging) { return undefined } const handlePointerMove = (event) => { const bounds = workspaceRef.current?.getBoundingClientRect() if (!bounds) { return } const next = ((event.clientX - bounds.left) / bounds.width) * 100 const clamped = Math.min(75, Math.max(25, next)) setSplit(clamped) } const handlePointerUp = () => { setDragging(false) } window.addEventListener('pointermove', handlePointerMove) window.addEventListener('pointerup', handlePointerUp) return () => { window.removeEventListener('pointermove', handlePointerMove) window.removeEventListener('pointerup', handlePointerUp) } }, [dragging]) const handleBroadcast = async (event) => { event.preventDefault() const value = command.trim() if (!value) { return } const issuedAt = Date.now() setComparisonRun({ command: value, issuedAt, }) await Promise.allSettled([ leftPaneRef.current?.submit(value), rightPaneRef.current?.submit(value), ]) setCommand('') } const handleTelemetryChange = (payload) => { setTelemetry((previous) => ({ ...previous, [payload.jobId]: payload, })) } const qwenStats = buildRunStats(telemetry.qwen, comparisonRun?.issuedAt) const agentStats = buildRunStats(telemetry['rl-agent'], comparisonRun?.issuedAt) let comparisonHeadline = 'Send a shared command to compare runtime.' if (comparisonRun) { if (qwenStats.completionMs != null && agentStats.completionMs != null) { const fasterJob = qwenStats.completionMs <= agentStats.completionMs ? panes[0].title : panes[1].title const delta = Math.abs(qwenStats.completionMs - agentStats.completionMs) comparisonHeadline = `${fasterJob} finished ${formatMs(delta)} faster.` } else if (qwenStats.responseMs != null && agentStats.responseMs != null) { const fasterJob = qwenStats.responseMs <= agentStats.responseMs ? panes[0].title : panes[1].title const delta = Math.abs(qwenStats.responseMs - agentStats.responseMs) comparisonHeadline = `${fasterJob} responded ${formatMs(delta)} faster.` } else { comparisonHeadline = `Running shared command: ${comparisonRun.command}` } } return (
Runtime compare {comparisonHeadline} {comparisonRun ? `Command: ${comparisonRun.command}` : 'Broadcast one command to both panes.'}
{panes[0].title} {formatMs(qwenStats.completionMs ?? qwenStats.responseMs)} {qwenStats.completionMs != null ? 'completion time' : 'first output latency'}
{panes[1].title} {formatMs(agentStats.completionMs ?? agentStats.responseMs)} {agentStats.completionMs != null ? 'completion time' : 'first output latency'}
$ setCommand(event.target.value)} placeholder="Send the same command to both terminals" spellCheck="false" />
) } export default App