import { html } from '../lib/preact.js'; import { getStatusMeta, STATUS_PRIORITY } from '../utils/status.js'; import { SessionCard } from './SessionCard.js'; export function SessionGroup({ projectName, projectDir, sessions, onCardClick, conversations, onFetchConversation, onRespond, onDismiss }) { if (sessions.length === 0) return null; // Status summary for chips const statusCounts = {}; for (const s of sessions) { statusCounts[s.status] = (statusCounts[s.status] || 0) + 1; } // Group header dot uses the most urgent status const worstStatus = sessions.reduce((worst, s) => { return (STATUS_PRIORITY[s.status] ?? 99) < (STATUS_PRIORITY[worst] ?? 99) ? s.status : worst; }, 'done'); const worstMeta = getStatusMeta(worstStatus); return html`

${projectName}

${sessions.length} agent${sessions.length === 1 ? '' : 's'} ${Object.entries(statusCounts).map(([status, count]) => { const meta = getStatusMeta(status); return html` ${count} ${meta.label.toLowerCase()} `; })}
${projectDir && projectDir !== 'unknown' && html`
${projectDir}
`}
${sessions.map(session => html` <${SessionCard} key=${session.session_id} session=${session} onClick=${onCardClick} conversation=${conversations[session.session_id]} onFetchConversation=${onFetchConversation} onRespond=${onRespond} onDismiss=${onDismiss} /> `)}
`; }