import { type ReactNode } from "react"; import { type Presence } from "@cotal-ai/core"; import { type FactRow } from "./theme.js"; /** Short display tag for an agent's harness (which tool it IS): known connectors get a familiar * abbreviation (`cc` = Claude Code, whose manager-default alias is `cotal`), anything else its * first two letters. Pure presentation; undefined in, undefined out (never fake a tag). */ export declare function harnessTag(connector: string | undefined): string | undefined; /** A {@link wrapFacts} row, indented under its seat's head row: the status and its condition in * `color` (dim without one) and the dated facts dim, or plain text for a selected seat's bar. */ export declare function factRow(row: FactRow, color: string | undefined, selected?: boolean): ReactNode; /** A seat's status word, or `endpoint`, then its condition and dated facts, for {@link wrapFacts}. */ export declare function statusLine(p: Presence): string; /** Always-visible roster: agents (status dot + color + activity + age) then endpoints (dimmed). * A selection cursor (↑/↓) highlights one row; `Enter` opens its detail; `/` filters the list. */ export declare function Roster({ agents, endpoints, query, boxWidth, boxHeight, blocked, onFocus, onOpenDetail, onKill, onAttach, harness, onCompose, }: { agents: Presence[]; endpoints: Presence[]; query: string; boxWidth: number; boxHeight: number; blocked: boolean; onFocus: (id: "roster" | "feed") => void; onOpenDetail: (p: Presence) => void; onKill?: (p: Presence) => void; /** Attach to the selected agent's live terminal. */ onAttach?: (p: Presence) => void; /** id → short harness tag (see {@link harnessTag}); rows without an entry show no tag. */ harness?: Map; onCompose?: (p: Presence) => void; }): import("react").JSX.Element; //# sourceMappingURL=Roster.d.ts.map