fix: filter NO_REPLY messages in console output#38436
Conversation
Greptile SummaryThis PR adds a Note on PR description / title accuracy: The PR title and description refer to filtering Key observations:
Confidence Score: 4/5
Last reviewed commit: f4548a5 |
f4548a5 to
f845813
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ed9b955b7a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
ed9b955 to
060c3d0
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 060c3d04f0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (chunk.startsWith(base) && chunk.length > base.length) { | ||
| const delta = chunk.slice(base.length); | ||
| return { text: chunk, delta }; |
There was a problem hiding this comment.
Treat only explicit snapshots as cumulative updates
This branch assumes any text_delta chunk that starts with the current buffer is a cumulative snapshot, but ACP text_delta streams can still be true deltas whose content happens to share that prefix. In that case the accumulator overwrites instead of appending (for example chunks "a" then "ardvark" become "ardvark" instead of "aardvark"), so assistant streaming and final payload text lose characters. This regression is introduced by the new snapshot heuristic and affects delta-style backends whenever a later chunk begins with the already-buffered text.
Useful? React with 👍 / 👎.
Problem: NO_REPLY system messages were displayed in console output, causing confusion for users. Solution: Added filter to suppress NO_REPLY messages in console frontend, consistent with other channels. Impact: Only affects console display, no impact on other channels.
060c3d0 to
57530aa
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 57530aac52
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| isSilentReplyText(base, SILENT_REPLY_TOKEN) && | ||
| !chunk.startsWith(base) && | ||
| startsWithWordChar(chunk) | ||
| ) { |
There was a problem hiding this comment.
Strip NO_REPLY prefix before newline/punctuation chunks
When pendingSilentPrefix is exactly NO_REPLY, this branch only drops it if the next chunk starts with a letter/number, so chunks like "\nAnswer", ": answer", or emoji-prefixed text are concatenated as NO_REPLY... and then emitted/logged. That reintroduces the placeholder leak this change is meant to prevent for ACP streams that emit a full silent token followed by visible text beginning with non-word characters (including cumulative snapshots like "NO_REPLY\nAnswer").
Useful? React with 👍 / 👎.
* main: (45 commits) chore: update dependencies except carbon test(memory): make mcporter EINVAL retry test deterministic refactor(extensions): reuse shared helper primitives refactor(core): extract shared dedup helpers fix(ci): re-enable detect-secrets on main docs: reorder 2026.3.7 changelog highlights chore: bump version to 2026.3.7 fix(android): align run command with app id docs: add changelog entry for Android package rename (openclaw#38712) fix(android): rename app package to ai.openclaw.app fix(gateway): stop stale-socket restarts before first event (openclaw#38643) fix(gateway): skip stale-socket restarts for Telegram polling (openclaw#38405) fix(gateway): invalidate bootstrap cache on session rollover (openclaw#38535) docs: update changelog for reply media delivery (openclaw#38572) fix: contain final reply media normalization failures fix: contain block reply media failures fix: normalize reply media paths Fix owner-only auth and overlapping skill env regressions (openclaw#38548) fix(feishu): disable block streaming to prevent silent reply drops (openclaw#38422) fix: suppress ACP NO_REPLY fragments in console output (openclaw#38436) ...
Problem
I discovered that "NO_REPLY" system messages were displayed in console output, causing confusion for users.
Root Cause
After analysis, I found that the console frontend was missing the NO_REPLY filtering logic, while other channels (e.g., Slack) correctly filtered these messages.
Solution
I added filtering logic to ensure that "NO_REPLY" messages are not displayed to users in the console.
Changes
src/telegram/send.ts: Added NO_REPLY filtering logicTesting
Fixes #38402