/** * fleet-pulse — pure formatter for the periodic peer-status digest. * * Every agent on a project (leader and fleet subagents alike) periodically * gets a compact "[FLEET PULSE]" block folded into its conversation so it * knows what its peers are doing — who is running what task, who went * idle, who finished. This is the push half of peer awareness (the pull * half is the `fleet_status` tool). * * This module is data-in/text-out only: it never touches the mailbox or * the filesystem, so core/ stays free of runtime coordination/ imports * (architecture Rule 3 — same posture as mailbox-loop.ts). The composition * glue that feeds it live `MailboxAgentStatus[]` lives in * ../mailbox-attach.ts (`attachFleetPulse`). * * @module fleet-pulse */ import type { MailboxAgentStatus } from '../coordination/mailbox-types.js'; interface FleetPulseOptions { /** This agent's own mailbox id — excluded from the digest. */ selfId: string; /** Max peers listed (rest summarized as "+N more"). Default 15. */ maxAgents?: number | undefined; /** Hard cap on total digest characters. Default 900. */ maxChars?: number | undefined; } /** * Stable signature over the fields that matter to a reader — used by the * caller to skip re-injection when nothing meaningful changed since the * last pulse. Deliberately excludes counters (iterations/toolCalls) and * timestamps: those tick constantly and would defeat the dedup. */ export declare function fleetPulseSignature(statuses: MailboxAgentStatus[]): string; /** * Build the digest block, or `null` when there is nothing worth saying * (no online peers besides self). The caller owns cadence and dedup. */ export declare function buildFleetPulseBlock(statuses: MailboxAgentStatus[], opts: FleetPulseOptions): { type: 'text'; text: string; } | null; export {}; //# sourceMappingURL=fleet-pulse.d.ts.map