{error}
Loading…
) : ({label}
{description}
Fetches recent incidents with per-call correlation debug fields, plus orphaned calls. Copy the JSON and paste it to Claude to diagnose correlation problems.
{error}
{meta.incident_count} incidents · {meta.orphaned_call_count} orphaned calls · {meta.generated_at}
corr_path distribution
{Object.entries(pathCounts).sort((a, b) => b[1] - a[1]).map(([path, n]) => (fit_signal distribution
{Object.keys(signalCounts).length === 0 ?No signal data yet — deploy correlator update first
: Object.entries(signalCounts).sort((a, b) => b[1] - a[1]).map(([sig, n]) => (orphans by talkgroup
{meta.orphans_by_talkgroup.map((tg) => (
{json}
)}
{detail.email}
{detail.uid}
{error}
Cannot disable or delete your own account.
)}Share this one-time invite link with the new user so they can set their password. It expires after use.
{inviteLink}
{users.length} user{users.length !== 1 ? "s" : ""}
{error}
Loading…
) : users.length === 0 ? (No users found.
) : (| Name | Role | Discord | Last sign-in | Status | ||
|---|---|---|---|---|---|---|
| {u.email ?? "—"} | {u.display_name ?? "—"} | {u.discord_linked ? `@${u.discord_username ?? "linked"}` : "—"} | {fmtDate(u.last_sign_in)} | {u.disabled ? Disabled : Active } |
{error}
Loading…
) : entries.length === 0 ? (No audit entries yet.
) : ( <>| Time | Action | Actor | Target | Details |
|---|---|---|---|---|
| {fmtDatetime(e.timestamp)} | {e.action} | {e.actor_email} | {e.target_email ?? "—"} | {Object.keys(e.details).length > 0 ? Object.entries(e.details) .map(([k, v]) => `${k}: ${JSON.stringify(v)}`) .join(" · ") : "—"} |
Finds calls stuck in active status because a node rebooted before sending an end-call event. Preview first, then close.
{error}
{result.dry_run ? "Preview: " : "Closed: "} 0 ? "text-amber-400" : "text-green-400"}> {result.count} stale call{result.count !== 1 ? "s" : ""} {result.count === 0 && — nothing to clear}
{result.call_ids.length > 0 && ({id}
))}