import type { MouseEvent } from 'react'; import { useParams, Link } from 'react-router-dom'; import type { SessionSummary } from '../../types'; import { formatRelativeTime } from '../../util/time'; interface SessionCardProps { session: SessionSummary; onDelete: (session: SessionSummary) => void; deleting: boolean; } export function SessionCard({ session, onDelete, deleting }: SessionCardProps) { const { sessionId } = useParams<{ sessionId: string }>(); const selected = sessionId === session.sessionId; const workspaceLabel = session.workDir ? session.workDir.split('/').slice(-2).join('/') : '(no workspace)'; const shortId = session.sessionId.replace(/^session_/, '').slice(0, 10); const title = session.title; const subagentCount = Math.max(0, session.agentCount - 1); function handleDeleteClick(e: MouseEvent) { e.preventDefault(); e.stopPropagation(); onDelete(session); } return (
{selected ? ( ) : null}
{shortId} {session.imported ? ( imported ) : null}
{formatRelativeTime(session.updatedAt)}
{workspaceLabel} {session.mainWireRecordCount}ev {subagentCount > 0 ? ( {subagentCount}sub ) : null} {session.imported && session.importMeta?.manifest?.kimiCodeVersion ? ( v{session.importMeta.manifest.kimiCodeVersion} ) : null} {session.health !== 'ok' ? ( {session.health} ) : null}
{title ? (
{title}
) : null} {session.lastPrompt ? (
prompt ยท {session.lastPrompt}
) : null}
); } function TrashIcon() { return ( ); }