import type { StudioRun } from '../protocol/studio-agent-types' import { translateEventStatus, translateRunStatus, translateSnapshotStatus } from '../labels' import { formatStudioTime, studioPanelClass, studioStatusBadge, truncateStudioText } from '../theme' import { useI18n } from '../../i18n' interface StudioEventStatusBarProps { sessionTitle?: string snapshotStatus: string eventStatus: string lastEventType?: string | null lastEventAt?: number | null eventError?: string | null latestRun?: StudioRun | null latestAssistantText?: string latestQuestion?: { question: string details?: string } | null } export function StudioEventStatusBar({ sessionTitle, snapshotStatus, eventStatus, lastEventType, lastEventAt, eventError, latestRun, latestAssistantText, latestQuestion, }: StudioEventStatusBarProps) { const { t } = useI18n() return (
{t('studio.event.session')} {sessionTitle ?? t('studio.initializing')} {t('studio.event.snapshot', { status: translateSnapshotStatus(snapshotStatus, t) })} {t('studio.event.events', { status: translateEventStatus(eventStatus, t) })} {latestRun && ( {t('studio.event.run', { status: translateRunStatus(latestRun.status, t) })} )}
{t('studio.event.latestEvent')}
{lastEventType ?? t('studio.event.waitingForStream')}
{formatStudioTime(lastEventAt)}
{t('studio.event.assistantStream')}
{latestAssistantText ? truncateStudioText(latestAssistantText) : t('studio.event.noLiveText')}
{t('studio.event.pendingQuestion')}
{latestQuestion?.question ?? t('studio.event.none')}
{latestQuestion?.details &&
{truncateStudioText(latestQuestion.details, 90)}
}
{eventError &&
{eventError}
}
) }