fix: contain block reply media failures

This commit is contained in:
Ayaan Zaidi
2026-03-07 10:28:32 +05:30
committed by Ayaan Zaidi
parent 77ef672468
commit 059aedeb08
5 changed files with 160 additions and 4 deletions

View File

@@ -326,6 +326,16 @@ export function handleMessageEnd(
ctx.finalizeAssistantTexts({ text, addedDuringMessage, chunkerHasBuffered });
const onBlockReply = ctx.params.onBlockReply;
const emitBlockReplySafely = (payload: Parameters<NonNullable<typeof onBlockReply>>[0]) => {
if (!onBlockReply) {
return;
}
void Promise.resolve()
.then(() => onBlockReply(payload))
.catch((err) => {
ctx.log.warn(`block reply callback failed: ${String(err)}`);
});
};
const shouldEmitReasoning = Boolean(
ctx.state.includeReasoning &&
formattedReasoning &&
@@ -339,7 +349,7 @@ export function handleMessageEnd(
return;
}
ctx.state.lastReasoningSent = formattedReasoning;
void onBlockReply?.({ text: formattedReasoning, isReasoning: true });
emitBlockReplySafely({ text: formattedReasoning, isReasoning: true });
};
if (shouldEmitReasoningBeforeAnswer) {
@@ -362,7 +372,7 @@ export function handleMessageEnd(
} = splitResult;
// Emit if there's content OR audioAsVoice flag (to propagate the flag).
if (cleanedText || (mediaUrls && mediaUrls.length > 0) || audioAsVoice) {
void onBlockReply({
emitBlockReplySafely({
text: cleanedText,
mediaUrls: mediaUrls?.length ? mediaUrls : undefined,
audioAsVoice,