fix: Telegram stream preview finalizes in place#17218
Conversation
|
The formal models extracted constants ( This check is informational (not blocking merges yet). If this change is intentional, follow up by updating the formal models repo or regenerating the extracted artifacts there. |
ScreenRecording_02-15-2026.20-12-33_1.MP4Works well! To enable, we need a minimum of: {
"agents": {
"defaults": {
"blockStreamingDefault": "off"
}
},
"channels": {
"telegram": {
"streamMode": "partial",
"blockStreaming": false
}
}
}Huge thanks to @amiller for the deep root-cause analysis in #7123 (and @rursache for the original request/demo). Switched from |
2f6ac9e to
0b95f6e
Compare
|
The formal models extracted constants ( This check is informational (not blocking merges yet). If this change is intentional, follow up by updating the formal models repo or regenerating the extracted artifacts there. |
|
how to install it? |
|
I believe that, after this change, openclaw will constantly edit the same message. It will write a full message, delete it all and come back with a new one. Is that the original intention? I'd rather either it sent the intermediate message or not show me at all. Seeing multiple messages popping up, not having any time to read, just to get a revised one is infuriating |
|
Hi, definitely not intentional. I believe this is fixed now, could you try running it on the latest commit? |
|
@obviyus yeah, it seems better now. Thanks |
Summary
sendMessageDrafttosendMessage+editMessageTextTesting
pnpm test src/telegram/draft-stream.test.ts src/telegram/bot-message-dispatch.test.ts src/telegram/send.edit-message.test.ts src/telegram/bot-message.test.ts src/auto-reply/reply.block-streaming.test.tspnpm checkFixes #7123
Greptile Summary
Switched Telegram stream preview transport from
sendMessageDrafttosendMessage+editMessageText, enabling text-only final replies to be delivered by editing the same preview message in place instead of sending a duplicate final message.Key changes:
sendMessageAPI (no longer requires private chat with topics enabled)flush()now waits for all in-flight preview updates before returning, preventing late updates from overwriting the final formatted editConfidence Score: 5/5
flush()waits for in-flight operations before returning. The finally block properly handles cleanup in both success and failure scenarios. Documentation and config help text accurately reflect the new behavior.Last reviewed commit: 2f6ac9e