fix(telegram): stop typing after tool results (#322)

Thanks @AbhisekBasu1.
This commit is contained in:
Abhi
2026-01-07 00:24:08 +05:30
committed by GitHub
parent 2f24ea492b
commit bdf597eb95

View File

@@ -106,6 +106,7 @@ export async function runReplyAgent(params: {
const streamedPayloadKeys = new Set<string>(); const streamedPayloadKeys = new Set<string>();
const pendingStreamedPayloadKeys = new Set<string>(); const pendingStreamedPayloadKeys = new Set<string>();
const pendingBlockTasks = new Set<Promise<void>>(); const pendingBlockTasks = new Set<Promise<void>>();
const pendingToolTasks = new Set<Promise<void>>();
let didStreamBlockReply = false; let didStreamBlockReply = false;
const buildPayloadKey = (payload: ReplyPayload) => { const buildPayloadKey = (payload: ReplyPayload) => {
const text = payload.text?.trim() ?? ""; const text = payload.text?.trim() ?? "";
@@ -312,7 +313,8 @@ export async function runReplyAgent(params: {
: undefined, : undefined,
shouldEmitToolResult, shouldEmitToolResult,
onToolResult: opts?.onToolResult onToolResult: opts?.onToolResult
? async (payload) => { ? (payload) => {
const task = (async () => {
let text = payload.text; let text = payload.text;
if (!isHeartbeat && text?.includes("HEARTBEAT_OK")) { if (!isHeartbeat && text?.includes("HEARTBEAT_OK")) {
const stripped = stripHeartbeatToken(text, { const stripped = stripHeartbeatToken(text, {
@@ -339,6 +341,14 @@ export async function runReplyAgent(params: {
text, text,
mediaUrls: payload.mediaUrls, mediaUrls: payload.mediaUrls,
}); });
})()
.catch((err) => {
logVerbose(`tool result delivery failed: ${String(err)}`);
})
.finally(() => {
pendingToolTasks.delete(task);
});
pendingToolTasks.add(task);
} }
: undefined, : undefined,
}), }),
@@ -378,6 +388,9 @@ export async function runReplyAgent(params: {
if (pendingBlockTasks.size > 0) { if (pendingBlockTasks.size > 0) {
await Promise.allSettled(pendingBlockTasks); await Promise.allSettled(pendingBlockTasks);
} }
if (pendingToolTasks.size > 0) {
await Promise.allSettled(pendingToolTasks);
}
const sanitizedPayloads = isHeartbeat const sanitizedPayloads = isHeartbeat
? payloadArray ? payloadArray