/** * Presence blob: the per-machine payload published to * `refs/harnery/presence/` (ADR 0016). One blob describes every live * session on this machine; peers render it in their agents list / status box / * peer table, labeled by machine. */ import type { AgentActivity, TaskState } from "../agents/state/session-state.js"; import { type PresenceCodecDigest } from "./codec-digest.js"; export interface PresenceAgent { instance_id: string; name?: string; kind?: string; session_id?: string; platform?: string; task?: string; activity: AgentActivity; task_state: TaskState; task_state_reason?: string; files_touched?: string[]; started_at?: string; last_heartbeat?: string; /** Strict content-free activity evidence for remote Codec panels. */ codec?: PresenceCodecDigest; } export interface PresenceBlob { v: 1; machine: string; published_at: string; agents: PresenceAgent[]; } export interface BuiltBlob { blob: PresenceBlob; /** Stable hash of the semantically-relevant projection — the change * detector that decides whether a publish is worth a push. */ basisHash: string; json: string; } /** * Build this machine's presence blob from the authority-safe V3 projection. * Includes live sessions + subagents; excludes kind=transient stubs (they are * fold-artifacts of the local claim model, not sessions) and anything past the * freshness window. */ export declare function buildPresenceBlob(coordRoot: string, now?: Date): BuiltBlob; //# sourceMappingURL=blob.d.ts.map