fix: pass sessionKey to deliverOutboundPayloads for message:sent hook dispatch

Several call sites of deliverOutboundPayloads() were not passing the
sessionKey parameter, causing the internal message:sent hook to never
fire (the guard `if (!sessionKeyForInternalHooks) return` in deliver.ts
silently skipped the triggerInternalHook call).

Fixed call sites:
- commands/agent/delivery.ts (agent loop replies — main fix)
- infra/heartbeat-runner.ts (heartbeat OK + alert delivery)
- infra/outbound/message.ts (message tool sends)
- cron/isolated-agent/delivery-dispatch.ts (cron job delivery)
- gateway/server-node-events.ts (node event forwarding)

The sessionKey parameter already existed in DeliverOutboundPayloadsCoreParams
and was used by deliver.ts to emit the message:sent internal hook event,
but was simply not being passed from most callers.
This commit is contained in:
Lucas Teixeira Campos Araujo 2026-02-26 09:36:54 -04:00 committed by Peter Steinberger
parent 20730af20b
commit a4408a917e
5 changed files with 6 additions and 0 deletions

View File

@ -230,6 +230,7 @@ export async function deliverAgentCommandResult(params: {
onError: (err) => logDeliveryError(err),
onPayload: logPayload,
deps: createOutboundSendDeps(deps),
sessionKey: opts.sessionKey,
});
}
}

View File

@ -182,6 +182,7 @@ export async function dispatchCronDelivery(
bestEffort: params.deliveryBestEffort,
deps: createOutboundSendDeps(params.deps),
abortSignal: params.abortSignal,
sessionKey: params.agentSessionKey,
});
delivered = deliveryResults.length > 0;
return null;

View File

@ -241,6 +241,7 @@ async function sendReceiptAck(params: {
agentId,
bestEffort: true,
deps: createOutboundSendDeps(params.deps),
sessionKey: params.sessionKey,
});
}

View File

@ -723,6 +723,7 @@ export async function runHeartbeatOnce(opts: {
payloads: [{ text: heartbeatOkText }],
agentId,
deps: opts.deps,
sessionKey,
});
return true;
};
@ -928,6 +929,7 @@ export async function runHeartbeatOnce(opts: {
]),
],
deps: opts.deps,
sessionKey,
});
// Record last delivered heartbeat payload for dedupe.

View File

@ -233,6 +233,7 @@ export async function sendMessage(params: MessageSendParams): Promise<MessageSen
mediaUrls: mirrorMediaUrls.length ? mirrorMediaUrls : undefined,
}
: undefined,
sessionKey: params.mirror?.sessionKey,
});
return {