{TABS.map(tab => (
@@ -299,6 +294,9 @@ export default function SessionDetailPage() {
{activeTab === 'metrics' && (
)}
diff --git a/dashboard/src/types/index.ts b/dashboard/src/types/index.ts
index ff81baf1..6ef0c58b 100644
--- a/dashboard/src/types/index.ts
+++ b/dashboard/src/types/index.ts
@@ -112,6 +112,28 @@ export interface SessionMetrics {
statusChanges: string[];
}
+export interface LatencySummaryStat {
+ min: number | null;
+ max: number | null;
+ avg: number | null;
+ count: number;
+}
+
+export interface SessionLatency {
+ sessionId: string;
+ realtime: {
+ hook_latency_ms: number | null;
+ state_change_detection_ms: number | null;
+ permission_response_ms: number | null;
+ } | null;
+ aggregated: {
+ hook_latency_ms: LatencySummaryStat;
+ state_change_detection_ms: LatencySummaryStat;
+ permission_response_ms: LatencySummaryStat;
+ channel_delivery_ms: LatencySummaryStat;
+ } | null;
+}
+
export interface GlobalMetrics {
uptime: number;
sessions: {
@@ -134,6 +156,12 @@ export interface GlobalMetrics {
failed: number;
success_rate: number | null;
};
+ latency: {
+ hook_latency_ms: LatencySummaryStat;
+ state_change_detection_ms: LatencySummaryStat;
+ permission_response_ms: LatencySummaryStat;
+ channel_delivery_ms: LatencySummaryStat;
+ };
}
// ── SSE Events ──────────────────────────────────────────────────