"use client"; import Link from "next/link"; import { useApi } from "@/lib/api"; import { ago, fmtDate, truncate } from "@/lib/format"; import { Empty, Panel, Skeleton, StatusPill, Table, Tag } from "@/components/ui"; interface Row { session_id: string; platform: string; account_alias: string; mode: string | null; goal: string | null; started_at: string; ended_at: string | null; health: string; actions: number; entities: number; schemas: number; patterns: number; ended_because: string | null; } export default function Sessions() { const { data, loading } = useApi("/sessions?limit=200", { refreshMs: 10_000 }); return (

Sessions

{loading ? ( ) : data?.length ? ( {data.map((r) => ( ))}
{r.platform}
{r.account_alias}
{truncate(r.goal ?? "(no goal)", 90)}
{r.session_id}
{r.mode ?? "—"} {r.actions} {r.entities} {r.schemas} {r.patterns} {ago(r.started_at)} {r.ended_because ?? (r.ended_at ? "—" : "running")}
) : ( No sessions yet. )}
); }