fix(cron): keep message tool without delivery

This commit is contained in:
Ayaan Zaidi
2026-04-18 14:20:40 +05:30
parent 31437b9e3b
commit 49ae60d6ca
2 changed files with 2 additions and 7 deletions

View File

@@ -49,6 +49,7 @@ Docs: https://docs.openclaw.ai
- Agents/TTS: report failed speech synthesis as a real tool error so unconfigured providers no longer feed successful TTS failure output back into agent loops. (#67980) Thanks @lawrence3699.
- Gateway/wake: allow unknown properties on wake payloads so external senders like Paperclip can attach opaque metadata without failing schema validation. (#68355) Thanks @kagura-agent.
- Matrix: honor `channels.matrix.network.dangerouslyAllowPrivateNetwork` when creating clients for private-network homeservers. (#68332) Thanks @kagura-agent.
- Cron/message tool: keep cron-owned runs with `delivery.mode: "none"` on the normal message-tool path so they can still send explicit messages, create threads, and route conditionally when no runner-owned delivery target is active. (#68482) Thanks @obviyus.
## 2026.4.15

View File

@@ -124,17 +124,13 @@ type IsolatedDeliveryContract = "cron-owned" | "shared";
function resolveCronToolPolicy(params: {
deliveryRequested: boolean;
resolvedDelivery: ResolvedCronDeliveryTarget;
deliveryContract: IsolatedDeliveryContract;
}) {
return {
// Only enforce an explicit message target when the cron delivery target
// was successfully resolved. When resolution fails the agent should not
// be blocked by a target it cannot satisfy (#27898).
requireExplicitMessageTarget: params.deliveryRequested && params.resolvedDelivery.ok,
// Cron-owned runs always route user-facing delivery through the runner
// itself. Shared callers keep the previous behavior so non-cron paths do
// not silently lose the message tool when no explicit delivery is active.
disableMessageTool: params.deliveryContract === "cron-owned" ? true : params.deliveryRequested,
disableMessageTool: params.deliveryRequested,
};
}
@@ -162,7 +158,6 @@ async function resolveCronDeliveryContext(params: {
toolPolicy: resolveCronToolPolicy({
deliveryRequested: false,
resolvedDelivery,
deliveryContract: params.deliveryContract,
}),
};
}
@@ -181,7 +176,6 @@ async function resolveCronDeliveryContext(params: {
toolPolicy: resolveCronToolPolicy({
deliveryRequested: deliveryPlan.requested,
resolvedDelivery,
deliveryContract: params.deliveryContract,
}),
};
}