+ {sessions.length === 0 && !loading && !error && (
+
+
No historical sessions found.
+
Sessions are recorded when workers complete tasks and metrics are finalized.
+
+ )}
+
+ {sessions.length > 0 && (
+
+
+
+
+ | Session ID |
+ Duration |
+ Workers |
+ Tasks |
+ Cost |
+ Tokens |
+ Time Range |
+
+
+
+ {sessions.map((session) => (
+ fetchSessionDetail(session.id)}
+ style={{ cursor: 'pointer' }}
+ >
+
+ {session.id.slice(-12)}
+ |
+
+ {formatDuration(session.started_at, session.ended_at)}
+ |
+ {session.worker_count} |
+ {session.task_count} |
+ {formatCost(session.total_cost)} |
+ {formatTokens(session.total_tokens)} |
+
+ {formatDate(session.started_at)}
+ {formatDate(session.ended_at)}
+ |
+
+ ))}
+
+
+
+ )}
+
+ {selectedSession && (
+
+
+
Session Details: {selectedSession.id.slice(-12)}
+
+
+
+ {detailError &&
{detailError}
}
+
+ {detailLoading &&
Loading session details...
}
+
+ {!detailLoading && selectedSession.workerSummaries.length > 0 && (
+
+
Worker Performance
+
+
+
+ | Worker |
+ Beads Completed |
+ Beads Failed |
+ Errors |
+ Cost |
+ Tokens (In/Out) |
+ Source |
+
+
+
+ {selectedSession.workerSummaries.map((summary) => (
+
+
+ {summary.workerId}
+ |
+ {summary.beadsCompleted} |
+ {summary.beadsFailed} |
+ {summary.errors} |
+ {formatCost(summary.costUsd)} |
+
+ {formatTokens(summary.tokensIn)} / {formatTokens(summary.tokensOut)}
+ |
+
+
+ {summary.metricsSource}
+
+ |
+
+ ))}
+
+
+
+ )}
+
+ {!detailLoading && selectedSession.workerSummaries.length === 0 && (
+
+
No worker summaries available for this session.
+
+ )}
+
+ )}
+