setQ(e.target.value)} />
{kinds.map(k => (
))}
{artifacts.length === 0
?
暂无文件——上传附件或让模型产出文档(mock:#doc);这里可浏览、预览、下载
: visible.length === 0
?
没有匹配「{q}」的文件
: visible.map(a => (
store.requestPreview(a)} title={`预览 ${a.name}(右栏,边聊边看)`}>
{a.name}
{a.kind} · {humanSize(a.size) || '—'} · {shortTime(a.updatedAt)}
e.stopPropagation()}>
))}
)
}
function shortTime(iso: string): string {
try {
const d = new Date(iso)
const now = new Date()
return d.toDateString() === now.toDateString()
? d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
: d.toLocaleDateString([], { month: '2-digit', day: '2-digit' })
} catch { return '' }
}
/** 代理面板(任务树;点击进 AgentTracker 深读)。 */
export function AgentsPanel({ runs }: { runs: Run[] }) {
if (runs.length === 0) return