import { ApiOutlined, DeleteOutlined, EditOutlined, SettingOutlined, EllipsisOutlined, HistoryOutlined, LogoutOutlined } from '@ant-design/icons'; import { Button, Dropdown, Modal, Switch } from 'antd'; import type { Agent } from '../../../api'; import './ChatHeader.css'; function formatAgentModel(raw: string | null | undefined) { const s = String(raw ?? '').trim(); if (!s) return '默认模型'; if (s.startsWith('[') || s.startsWith('{')) { try { const parsed = JSON.parse(s); if (Array.isArray(parsed)) { const names = parsed .map((x: any) => String(x?.name || x?.model || x?.id || '').trim()) .filter(Boolean); if (names.length > 2) { return names.slice(0, 2).join(', ') + '...'; } if (names.length) return names.join(', '); } else if (parsed && typeof parsed === 'object') { const name = String((parsed as any).name || (parsed as any).model || (parsed as any).id || '').trim(); if (name) return name; } } catch {} } return s; } const isImageUrl = (url: string) => url?.startsWith('http') || url?.startsWith('/'); export default function ChatHeader(props: { agent: Agent; useStream: boolean; setUseStream: (v: boolean) => void; onOpenHistory: () => void; onOpenParams: () => void; onOpenMcp: () => void; onManageAgent: () => void; onClear: () => void; onLogout?: () => void; }) { const { agent, useStream, setUseStream, onOpenHistory, onOpenParams, onOpenMcp, onManageAgent, onClear, onLogout } = props; const modelText = formatAgentModel(agent.model); return (