openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
30 lines (29 loc) • 1.34 kB
JavaScript
//#region src/infra/heartbeat-visibility.ts
const DEFAULT_VISIBILITY = {
showOk: false,
showAlerts: true,
useIndicator: true
};
/** Resolves heartbeat visibility for a channel, applying account > channel > defaults precedence. */
function resolveHeartbeatVisibility(params) {
const { cfg, channel, accountId } = params;
if (channel === "webchat") {
const channelDefaults = cfg.channels?.defaults?.heartbeat;
return {
showOk: channelDefaults?.showOk ?? DEFAULT_VISIBILITY.showOk,
showAlerts: channelDefaults?.showAlerts ?? DEFAULT_VISIBILITY.showAlerts,
useIndicator: channelDefaults?.useIndicator ?? DEFAULT_VISIBILITY.useIndicator
};
}
const channelDefaults = cfg.channels?.defaults?.heartbeat;
const channelCfg = cfg.channels?.[channel];
const perChannel = channelCfg?.heartbeat;
const perAccount = (accountId ? channelCfg?.accounts?.[accountId] : void 0)?.heartbeat;
return {
showOk: perAccount?.showOk ?? perChannel?.showOk ?? channelDefaults?.showOk ?? DEFAULT_VISIBILITY.showOk,
showAlerts: perAccount?.showAlerts ?? perChannel?.showAlerts ?? channelDefaults?.showAlerts ?? DEFAULT_VISIBILITY.showAlerts,
useIndicator: perAccount?.useIndicator ?? perChannel?.useIndicator ?? channelDefaults?.useIndicator ?? DEFAULT_VISIBILITY.useIndicator
};
}
//#endregion
export { resolveHeartbeatVisibility as t };