fix(heartbeat): default target none and internalize relay prompts

This commit is contained in:
Peter Steinberger
2026-02-25 00:33:32 +00:00
parent 4d89548e59
commit e2362d352d
9 changed files with 191 additions and 30 deletions

View File

@@ -3,14 +3,33 @@ import { HEARTBEAT_TOKEN } from "../auto-reply/tokens.js";
// Build a dynamic prompt for cron events by embedding the actual event content.
// This ensures the model sees the reminder text directly instead of relying on
// "shown in the system messages above" which may not be visible in context.
export function buildCronEventPrompt(pendingEvents: string[]): string {
export function buildCronEventPrompt(
pendingEvents: string[],
opts?: {
deliverToUser?: boolean;
},
): string {
const deliverToUser = opts?.deliverToUser ?? true;
const eventText = pendingEvents.join("\n").trim();
if (!eventText) {
if (!deliverToUser) {
return (
"A scheduled cron event was triggered, but no event content was found. " +
"Handle this internally and reply HEARTBEAT_OK when nothing needs user-facing follow-up."
);
}
return (
"A scheduled cron event was triggered, but no event content was found. " +
"Reply HEARTBEAT_OK."
);
}
if (!deliverToUser) {
return (
"A scheduled reminder has been triggered. The reminder content is:\n\n" +
eventText +
"\n\nHandle this reminder internally. Do not relay it to the user unless explicitly requested."
);
}
return (
"A scheduled reminder has been triggered. The reminder content is:\n\n" +
eventText +
@@ -18,6 +37,21 @@ export function buildCronEventPrompt(pendingEvents: string[]): string {
);
}
export function buildExecEventPrompt(opts?: { deliverToUser?: boolean }): string {
const deliverToUser = opts?.deliverToUser ?? true;
if (!deliverToUser) {
return (
"An async command you ran earlier has completed. The result is shown in the system messages above. " +
"Handle the result internally. Do not relay it to the user unless explicitly requested."
);
}
return (
"An async command you ran earlier has completed. The result is shown in the system messages above. " +
"Please relay the command output to the user in a helpful way. If the command succeeded, share the relevant output. " +
"If it failed, explain what went wrong."
);
}
const HEARTBEAT_OK_PREFIX = HEARTBEAT_TOKEN.toLowerCase();
// Detect heartbeat-specific noise so cron reminders don't trigger on non-reminder events.