mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 16:41:10 +00:00
fix(cron): suppress fallback summary after attempted announce delivery
This commit is contained in:
@@ -117,6 +117,7 @@ type DispatchCronDeliveryParams = {
|
||||
export type DispatchCronDeliveryState = {
|
||||
result?: RunCronAgentTurnResult;
|
||||
delivered: boolean;
|
||||
deliveryAttempted: boolean;
|
||||
summary?: string;
|
||||
outputText?: string;
|
||||
synthesizedText?: string;
|
||||
@@ -134,6 +135,7 @@ export async function dispatchCronDelivery(
|
||||
// `true` means we confirmed at least one outbound send reached the target.
|
||||
// Keep this strict so timer fallback can safely decide whether to wake main.
|
||||
let delivered = params.skipMessagingToolDelivery;
|
||||
let deliveryAttempted = params.skipMessagingToolDelivery;
|
||||
const failDeliveryTarget = (error: string) =>
|
||||
params.withRunSession({
|
||||
status: "error",
|
||||
@@ -141,6 +143,7 @@ export async function dispatchCronDelivery(
|
||||
errorKind: "delivery-target",
|
||||
summary,
|
||||
outputText,
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
|
||||
@@ -162,9 +165,11 @@ export async function dispatchCronDelivery(
|
||||
return params.withRunSession({
|
||||
status: "error",
|
||||
error: params.abortReason(),
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
}
|
||||
deliveryAttempted = true;
|
||||
const deliveryResults = await deliverOutboundPayloads({
|
||||
cfg: params.cfgWithAgentDefaults,
|
||||
channel: delivery.channel,
|
||||
@@ -187,6 +192,7 @@ export async function dispatchCronDelivery(
|
||||
summary,
|
||||
outputText,
|
||||
error: String(err),
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
}
|
||||
@@ -277,9 +283,11 @@ export async function dispatchCronDelivery(
|
||||
return params.withRunSession({
|
||||
status: "error",
|
||||
error: params.abortReason(),
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
}
|
||||
deliveryAttempted = true;
|
||||
const didAnnounce = await runSubagentAnnounceFlow({
|
||||
childSessionKey: params.agentSessionKey,
|
||||
childRunId: `${params.job.id}:${params.runSessionId}:${params.runStartedAt}`,
|
||||
@@ -315,6 +323,7 @@ export async function dispatchCronDelivery(
|
||||
summary,
|
||||
outputText,
|
||||
error: message,
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
}
|
||||
@@ -327,6 +336,7 @@ export async function dispatchCronDelivery(
|
||||
summary,
|
||||
outputText,
|
||||
error: String(err),
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
});
|
||||
}
|
||||
@@ -345,6 +355,7 @@ export async function dispatchCronDelivery(
|
||||
return {
|
||||
result: failDeliveryTarget(params.resolvedDelivery.error.message),
|
||||
delivered,
|
||||
deliveryAttempted,
|
||||
summary,
|
||||
outputText,
|
||||
synthesizedText,
|
||||
@@ -357,9 +368,11 @@ export async function dispatchCronDelivery(
|
||||
status: "ok",
|
||||
summary,
|
||||
outputText,
|
||||
deliveryAttempted,
|
||||
...params.telemetry,
|
||||
}),
|
||||
delivered,
|
||||
deliveryAttempted,
|
||||
summary,
|
||||
outputText,
|
||||
synthesizedText,
|
||||
@@ -383,6 +396,7 @@ export async function dispatchCronDelivery(
|
||||
return {
|
||||
result: directResult,
|
||||
delivered,
|
||||
deliveryAttempted,
|
||||
summary,
|
||||
outputText,
|
||||
synthesizedText,
|
||||
@@ -395,6 +409,7 @@ export async function dispatchCronDelivery(
|
||||
return {
|
||||
result: announceResult,
|
||||
delivered,
|
||||
deliveryAttempted,
|
||||
summary,
|
||||
outputText,
|
||||
synthesizedText,
|
||||
@@ -406,6 +421,7 @@ export async function dispatchCronDelivery(
|
||||
|
||||
return {
|
||||
delivered,
|
||||
deliveryAttempted,
|
||||
summary,
|
||||
outputText,
|
||||
synthesizedText,
|
||||
|
||||
@@ -77,6 +77,12 @@ export type RunCronAgentTurnResult = {
|
||||
* messages. See: https://github.com/openclaw/openclaw/issues/15692
|
||||
*/
|
||||
delivered?: boolean;
|
||||
/**
|
||||
* `true` when cron attempted announce/direct delivery for this run.
|
||||
* This is tracked separately from `delivered` because some announce paths
|
||||
* cannot guarantee a final delivery ack synchronously.
|
||||
*/
|
||||
deliveryAttempted?: boolean;
|
||||
} & CronRunOutcome &
|
||||
CronRunTelemetry;
|
||||
|
||||
@@ -565,7 +571,7 @@ export async function runCronIsolatedAgentTurn(params: {
|
||||
const embeddedRunError = hasErrorPayload
|
||||
? (lastErrorPayloadText ?? "cron isolated run returned an error payload")
|
||||
: undefined;
|
||||
const resolveRunOutcome = (params?: { delivered?: boolean }) =>
|
||||
const resolveRunOutcome = (params?: { delivered?: boolean; deliveryAttempted?: boolean }) =>
|
||||
withRunSession({
|
||||
status: hasErrorPayload ? "error" : "ok",
|
||||
...(hasErrorPayload
|
||||
@@ -574,6 +580,7 @@ export async function runCronIsolatedAgentTurn(params: {
|
||||
summary,
|
||||
outputText,
|
||||
delivered: params?.delivered,
|
||||
deliveryAttempted: params?.deliveryAttempted,
|
||||
...telemetry,
|
||||
});
|
||||
|
||||
@@ -619,14 +626,23 @@ export async function runCronIsolatedAgentTurn(params: {
|
||||
withRunSession,
|
||||
});
|
||||
if (deliveryResult.result) {
|
||||
const resultWithDeliveryMeta: RunCronAgentTurnResult = {
|
||||
...deliveryResult.result,
|
||||
deliveryAttempted:
|
||||
deliveryResult.result.deliveryAttempted ?? deliveryResult.deliveryAttempted,
|
||||
};
|
||||
if (!hasErrorPayload || deliveryResult.result.status !== "ok") {
|
||||
return deliveryResult.result;
|
||||
return resultWithDeliveryMeta;
|
||||
}
|
||||
return resolveRunOutcome({ delivered: deliveryResult.result.delivered });
|
||||
return resolveRunOutcome({
|
||||
delivered: deliveryResult.result.delivered,
|
||||
deliveryAttempted: resultWithDeliveryMeta.deliveryAttempted,
|
||||
});
|
||||
}
|
||||
const delivered = deliveryResult.delivered;
|
||||
const deliveryAttempted = deliveryResult.deliveryAttempted;
|
||||
summary = deliveryResult.summary;
|
||||
outputText = deliveryResult.outputText;
|
||||
|
||||
return resolveRunOutcome({ delivered });
|
||||
return resolveRunOutcome({ delivered, deliveryAttempted });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user