import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload" ;
import { stripHeartbeatToken } from "../auto-reply/heartbeat.js" ;
export type HeartbeatDeliveryPayload = {
text?: string;
mediaUrl?: string;
mediaUrls?: string[];
};
export function shouldSkipHeartbeatOnlyDelivery(
payloads: HeartbeatDeliveryPayload[],
ackMaxChars: number,
): boolean {
if (payloads.length === 0 ) {
return true ;
}
const hasAnyMedia = payloads.some(
(payload) => resolveSendableOutboundReplyParts(payload).hasMedia,
);
if (hasAnyMedia) {
return false ;
}
return payloads.some((payload) => {
const result = stripHeartbeatToken(payload.text, {
mode: "heartbeat" ,
maxAckChars: ackMaxChars,
});
return result.shouldSkip;
});
}
export function shouldEnqueueCronMainSummary(params: {
summaryText: string | undefined;
deliveryRequested: boolean ;
delivered: boolean | undefined;
deliveryAttempted: boolean | undefined;
suppressMainSummary: boolean ;
isCronSystemEvent: (text: string) => boolean ;
}): boolean {
const summaryText = params.summaryText?.trim();
return Boolean (
summaryText &&
params.isCronSystemEvent(summaryText) &&
params.deliveryRequested &&
!params.delivered &&
params.deliveryAttempted !== true &&
!params.suppressMainSummary,
);
}
Messung V0.5 in Prozent C=99 H=94 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-05-26)
¤
*© Formatika GbR, Deutschland