import { Copy, RefreshCw } from 'lucide-react' import { useMemo, useState } from 'react' import { useTranslation } from '../../i18n' import { Button } from '../shared/Button' import { DoctorPanel } from '../doctor/DoctorPanel' import { copyTextToClipboard } from '../chat/clipboard' const LOG_MARKER = '\n\nRecent server logs:\n' export function splitStartupError(error: string) { const markerIndex = error.indexOf(LOG_MARKER) if (markerIndex === -1) { return { message: error, logs: '', diagnostics: error, } } const message = error.slice(0, markerIndex).trim() const logs = error.slice(markerIndex + LOG_MARKER.length).trim() return { message, logs, diagnostics: `${message}\n\nRecent server logs:\n${logs}`, } } type StartupErrorViewProps = { error: string } export function StartupErrorView({ error }: StartupErrorViewProps) { const t = useTranslation() const { message, logs, diagnostics } = useMemo(() => splitStartupError(error), [error]) const [copied, setCopied] = useState(false) const handleCopy = async () => { const ok = await copyTextToClipboard(diagnostics) if (!ok) return setCopied(true) window.setTimeout(() => setCopied(false), 1600) } return (
{t('app.serverFailedHint')}
{message}
{logs}