diff --git a/apps/macos/Sources/OpenClaw/CronJobEditor+Helpers.swift b/apps/macos/Sources/OpenClaw/CronJobEditor+Helpers.swift index ee5f827cb..544c9a7c6 100644 --- a/apps/macos/Sources/OpenClaw/CronJobEditor+Helpers.swift +++ b/apps/macos/Sources/OpenClaw/CronJobEditor+Helpers.swift @@ -107,7 +107,11 @@ extension CronJobEditor { delivery["channel"] = trimmed.isEmpty ? "last" : trimmed let to = self.to.trimmingCharacters(in: .whitespacesAndNewlines) if !to.isEmpty { delivery["to"] = to } - if self.bestEffortDeliver { delivery["bestEffort"] = true } + if self.bestEffortDeliver { + delivery["bestEffort"] = true + } else if self.job?.delivery?.bestEffort == true { + delivery["bestEffort"] = false + } } return delivery } diff --git a/src/cli/cron-cli/register.cron-edit.ts b/src/cli/cron-cli/register.cron-edit.ts index 74f94e0cc..bced50e7f 100644 --- a/src/cli/cron-cli/register.cron-edit.ts +++ b/src/cli/cron-cli/register.cron-edit.ts @@ -183,16 +183,19 @@ export function registerCronEditCommand(cron: Command) { : opts.deliver === false ? "none" : "announce"; - patch.delivery = { - mode: deliveryMode, - channel: - typeof opts.channel === "string" && opts.channel.trim() - ? opts.channel.trim() - : undefined, - to: typeof opts.to === "string" && opts.to.trim() ? opts.to.trim() : undefined, - bestEffort: - typeof opts.bestEffortDeliver === "boolean" ? opts.bestEffortDeliver : undefined, - }; + const delivery: Record = { mode: deliveryMode }; + if (typeof opts.channel === "string") { + const channel = opts.channel.trim(); + delivery.channel = channel ? channel : undefined; + } + if (typeof opts.to === "string") { + const to = opts.to.trim(); + delivery.to = to ? to : undefined; + } + if (typeof opts.bestEffortDeliver === "boolean") { + delivery.bestEffort = opts.bestEffortDeliver; + } + patch.delivery = delivery; } const res = await callGatewayFromCli("cron.update", opts, {