fix(telegram): honor final-only streaming mode · openclaw/openclaw@cb8c513
steipete
·
2026-04-29
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -34,6 +34,7 @@ Docs: https://docs.openclaw.ai
|
34 | 34 | - Acpx/runtime: validate the runtime session mode at the `AcpxRuntime.ensureSession` wrapper boundary so callers that pass anything other than `persistent` or `oneshot` get a clear `ACP_INVALID_RUNTIME_OPTION` error instead of silently round-tripping through the encoded handle as a default `persistent` mode and later throwing `SessionResumeRequiredError`. Investigation context: #73071. (#73548) Thanks @amknight. |
35 | 35 | - CLI/infer: keep web-search fallback on missing provider API keys, preserve structured validation errors from the selected provider, and let per-request image describe prompts override configured media-entry prompts. (#63263) Thanks @Spolen23. |
36 | 36 | - Chat commands: include configured model-catalog reasoning metadata when building `/think` argument menus so Ollama Cloud and other provider-owned reasoning models show supported levels instead of only `off`. Fixes #73515; supersedes #73568. Thanks @danielzinhu99 and @neeravmakwana. |
| 37 | +- Channels/Telegram: suppress generic tool-progress chatter when preview streaming is off, so non-streaming Telegram turns only deliver final replies while approvals, media, and errors still route normally. Refs #72363 and #72482. Thanks @neeravmakwana and @SweetSophia. |
37 | 38 | - CLI/model probes: add repeatable image `--file` inputs to `infer model run` for local and gateway multimodal model smokes, so vision models such as Ollama Qwen VL and Gemini can be tested through the raw model-probe surface. Fixes #63700. Thanks @cedricjanssens. |
38 | 39 | - CLI/image describe: pass `--prompt` and `--timeout-ms` through `infer image describe` and `describe-many`, so custom vision instructions and slow local model budgets reach media-understanding providers such as Ollama, OpenAI, Google, and OpenRouter. Refs #63700. Thanks @cedricjanssens. |
39 | 40 | - WhatsApp/Web: pass explicit Baileys socket timings into every WhatsApp Web socket and expose `web.whatsapp.*` keepalive, connect, and query timeout settings so unstable networks can avoid repeated 408 disconnect and opening-handshake timeout loops. Fixes #56365. (#73580) Thanks @velvet-shark. |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -295,7 +295,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
295 | 295 | } |
296 | 296 | ``` |
297 | 297 | |
298 | | -Use `streaming.mode: "off"` only when you want to disable Telegram preview edits entirely. Use `streaming.preview.toolProgress: false` when you only want to disable the tool-progress status lines. |
| 298 | +Use `streaming.mode: "off"` only when you want final-only delivery: Telegram preview edits are disabled and generic tool/progress chatter is suppressed instead of being sent as standalone "Working..." messages. Approval prompts, media payloads, and errors still route through normal final delivery. Use `streaming.preview.toolProgress: false` when you only want to keep answer preview edits while hiding the tool-progress status lines. |
299 | 299 | |
300 | 300 | For text-only replies: |
301 | 301 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -191,7 +191,7 @@ Supported surfaces:
|
191 | 191 | - **Discord**, **Slack**, **Telegram**, and **Matrix** stream tool-progress into the live preview edit by default when preview streaming is active. |
192 | 192 | - Telegram has shipped with tool-progress preview updates enabled since `v2026.4.22`; keeping them enabled preserves that released behavior. |
193 | 193 | - **Mattermost** already folds tool activity into its single draft preview post (see above). |
194 | | -- Tool-progress edits follow the active preview streaming mode; they are skipped when preview streaming is `off` or when block streaming has taken over the message. |
| 194 | +- Tool-progress edits follow the active preview streaming mode; they are skipped when preview streaming is `off` or when block streaming has taken over the message. On Telegram, `streaming.mode: "off"` is final-only: generic progress chatter is also suppressed instead of being delivered as standalone "Working..." messages, while approval prompts, media payloads, and errors still route normally. |
195 | 195 | - To keep preview streaming but hide tool-progress lines, set `streaming.preview.toolProgress` to `false` for that channel. To disable preview edits entirely, set `streaming.mode` to `off`. |
196 | 196 | |
197 | 197 | Example: |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -790,7 +790,7 @@ describe("dispatchTelegramMessage draft streaming", () => {
|
790 | 790 | ); |
791 | 791 | }); |
792 | 792 | |
793 | | -it("keeps default tool progress messages when answer preview streaming is off", async () => { |
| 793 | +it("suppresses default tool progress messages when answer preview streaming is off", async () => { |
794 | 794 | dispatchReplyWithBufferedBlockDispatcher.mockImplementation(async ({ replyOptions }) => { |
795 | 795 | await replyOptions?.onToolStart?.({ name: "exec", phase: "start" }); |
796 | 796 | await replyOptions?.onItemEvent?.({ progressText: "exec ls ~/Desktop" }); |
@@ -803,7 +803,7 @@ describe("dispatchTelegramMessage draft streaming", () => {
|
803 | 803 | expect(dispatchReplyWithBufferedBlockDispatcher).toHaveBeenCalledWith( |
804 | 804 | expect.objectContaining({ |
805 | 805 | replyOptions: expect.objectContaining({ |
806 | | -suppressDefaultToolProgressMessages: false, |
| 806 | +suppressDefaultToolProgressMessages: true, |
807 | 807 | }), |
808 | 808 | }), |
809 | 809 | ); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -1067,7 +1067,8 @@ export const dispatchTelegramMessage = async ({
|
1067 | 1067 | previewToolProgressLines = []; |
1068 | 1068 | }) |
1069 | 1069 | : undefined, |
1070 | | -suppressDefaultToolProgressMessages: Boolean(answerLane.stream), |
| 1070 | +suppressDefaultToolProgressMessages: |
| 1071 | +!previewStreamingEnabled || Boolean(answerLane.stream), |
1071 | 1072 | onToolStart: async (payload) => { |
1072 | 1073 | const toolName = payload.name?.trim(); |
1073 | 1074 | if (statusReactionController && toolName) { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。