feat(web): stream tool summaries

This commit is contained in:
Peter Steinberger
2025-12-20 13:47:07 +00:00
parent 63b63cd66d
commit 70faa4ff36
5 changed files with 83 additions and 3 deletions

View File

@@ -887,6 +887,55 @@ export async function monitorWebProvider(
}
}
const responsePrefix = cfg.inbound?.responsePrefix;
let toolSendChain: Promise<void> = Promise.resolve();
const sendToolResult = (payload: ReplyPayload) => {
if (
!payload?.text &&
!payload?.mediaUrl &&
!(payload?.mediaUrls?.length ?? 0)
) {
return;
}
const toolPayload: ReplyPayload = { ...payload };
if (
responsePrefix &&
toolPayload.text &&
toolPayload.text.trim() !== HEARTBEAT_TOKEN &&
!toolPayload.text.startsWith(responsePrefix)
) {
toolPayload.text = `${responsePrefix} ${toolPayload.text}`;
}
toolSendChain = toolSendChain
.then(async () => {
await deliverWebReply({
replyResult: toolPayload,
msg,
maxMediaBytes,
replyLogger,
runtime,
connectionId,
skipLog: true,
});
if (toolPayload.text) {
recentlySent.add(toolPayload.text);
if (recentlySent.size > MAX_RECENT_MESSAGES) {
const firstKey = recentlySent.values().next().value;
if (firstKey) recentlySent.delete(firstKey);
}
}
})
.catch((err) => {
console.error(
danger(
`Failed sending web tool update to ${msg.from ?? conversationId}: ${String(
err,
)}`,
),
);
});
};
const replyResult = await (replyResolver ?? getReplyFromConfig)(
{
Body: combinedBody,
@@ -905,6 +954,7 @@ export async function monitorWebProvider(
},
{
onReplyStart: msg.sendComposing,
onToolResult: sendToolResult,
},
);
@@ -919,8 +969,7 @@ export async function monitorWebProvider(
return;
}
// Apply response prefix if configured (skip for HEARTBEAT_OK to preserve exact match)
const responsePrefix = cfg.inbound?.responsePrefix;
await toolSendChain;
for (const replyPayload of replyList) {
if (