/** * The daemon's channel-health watcher, and the announcer that makes it matter. * * Making a channel's reported state honest fixes the answer to a question that * nobody asks. The lived failure was not that a status endpoint said the wrong * thing, it was that a Telegram message got no reply and no surface, log line * or notification said why. So the daemon watches the states it now reports * truthfully, and when one stops working it says so over a channel that still * does. * * Composed here rather than in facade-composition.ts because the announcer is * a policy, which surfaces may carry an unprompted alert, and what happens * when none can, and policies deserve a file a reader can find. */ import { ChannelHealthWatcher } from '../channels/index.js'; import type { ResolvedDaemonFacadeRuntime } from './facade-types.js'; /** * Watch the channels, and tell the owner over one that still works when another * stops. * * The announcer re-reads the registry rather than trusting a cached picture: * the point of the message is that something just changed, and the set of * channels able to carry it is exactly what changed. It excludes the failed * surface, because announcing a dead Telegram over Telegram is the failure * wearing the alert's clothes. * * When nothing survives, the alert is stated at ERROR in the daemon log and * nowhere else, and it says so, an owner reading that line later learns both * that a channel died and that they were never told. */ export declare function buildDaemonChannelHealthWatcher(runtime: ResolvedDaemonFacadeRuntime): ChannelHealthWatcher; //# sourceMappingURL=facade-channel-health.d.ts.map