'use client' import type { FC } from 'react' import { useTranslation } from 'react-i18next' import useTimestamp from '@/hooks/use-timestamp' type Props = { readonly status: string readonly executor?: string readonly startTime?: number readonly time?: number readonly tokens?: number readonly steps?: number readonly showSteps?: boolean } const MetaData: FC = ({ status, executor, startTime, time, tokens, steps = 1, showSteps = true, }) => { const { t } = useTranslation() const { formatTime } = useTimestamp() return (
{t(($) => $['meta.title'], { ns: 'runLog' })}
{t(($) => $['meta.status'], { ns: 'runLog' })}
{status === 'running' && (
)} {status === 'succeeded' && SUCCESS} {status === 'partial-succeeded' && PARTIAL SUCCESS} {status === 'exception' && EXCEPTION} {status === 'failed' && FAIL} {status === 'stopped' && STOP} {status === 'paused' && PENDING}
{t(($) => $['meta.executor'], { ns: 'runLog' })}
{status === 'running' && (
)} {status !== 'running' && {executor || 'N/A'}}
{t(($) => $['meta.startTime'], { ns: 'runLog' })}
{status === 'running' && (
)} {status !== 'running' && ( {startTime ? formatTime(startTime, t(($) => $.dateTimeFormat, { ns: 'appLog' }) as string) : '-'} )}
{t(($) => $['meta.time'], { ns: 'runLog' })}
{status === 'running' && (
)} {status !== 'running' && {time ? `${time.toFixed(3)}s` : '-'}}
{t(($) => $['meta.tokens'], { ns: 'runLog' })}
{['running', 'paused'].includes(status) && (
)} {!['running', 'paused'].includes(status) && {`${tokens || 0} Tokens`}}
{showSteps && (
{t(($) => $['meta.steps'], { ns: 'runLog' })}
{status === 'running' && (
)} {status !== 'running' && {steps}}
)}
) } export default MetaData