Commit Graph

1774 Commits

Author SHA1 Message Date
weiqinl
e29381a172 fix #86957: drain worker-spooled Telegram updates immediately
Wake the isolated polling drain immediately after a worker-spooled
update is written to channel_ingress_events, instead of waiting for
the next drain interval.

- Add requestImmediateDrain() calls after worker write and spooled message
- Track pending drain requests while drain is active (fix race condition)
- Add regression test for updates arriving during active drain

Fixes #86957.
2026-06-22 11:08:03 +05:30
Ayaan Zaidi
b3b8b289dd test(telegram): keep live polling leases protected (#93378) (thanks @mmyzwl) 2026-06-22 11:05:06 +05:30
Vincent Koc
2b75806197 feat: forward-port fast talks auto mode (#85104) 2026-06-22 09:37:09 +08:00
snowzlmbot
e37b0f8cd3 fix(telegram): render progress drafts with clean HTML transport
Render Telegram progress draft rows with clean plain previews while preserving Telegram HTML formatting through parse_mode.

The progress HTML path now stays transport-owned, including richMessages=false progress messages, while debug/plain/sanitized text remains readable without raw markup.

Thanks @snowzlmbot!
2026-06-22 05:54:44 +05:30
Vincent Koc
d43bc3760e chore(deadcode): remove unused test bindings 2026-06-22 07:31:03 +08:00
mikasa
ec7a548062 fix #95378: https://github.com/openclaw/openclaw/issues/95378 (#95390)
* fix(telegram): use session transcript for direct context

* fix(telegram): account for proof and SDK checks

* fix(telegram): address review findings

* fix(telegram): tighten session transcript context

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-06-22 04:29:44 +05:30
heichaowo
e00c1eebc4 fix(telegram): skip duplicate mirror replies (#95069)
Fix Telegram session transcript duplicate mirror writes after the primary assistant reply already exists.

Thanks @heichaowo!
2026-06-22 01:55:08 +05:30
NIO
32d22d04cc fix(telegram): honor outbound reaction directives (#94977) 2026-06-22 01:54:55 +05:30
snowzlmbot
6441e56465 fix(telegram): materialize streaming progress placeholders (#95183)
* fix(telegram): materialize streaming progress placeholders

* fix(telegram): cancel delayed progress drafts before final

* fix(telegram): satisfy progress placeholder lint

* fix(telegram): cancel delayed draft preview on clear

* refactor(telegram): simplify delayed preview flush

---------

Co-authored-by: snowzlmbot <snowzlmbot@users.noreply.github.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-06-21 19:48:41 +05:30
Peter Lee
ac5d219be3 fix(telegram): stop clearing registered webhook on channel restart (#94506)
Prepared head SHA: f721e14a92

Co-authored-by: xialonglee <li.xialong@xydigit.com>
2026-06-21 19:22:49 +05:30
Ayaan Zaidi
d6d17709e8 fix(telegram): clear progress draft before tool output (#93002) (thanks @zhangguiping-xydt) 2026-06-21 19:14:57 +05:30
Ayaan Zaidi
6fd6bddb92 style(telegram): trim progress draft dispatch comment 2026-06-21 19:14:57 +05:30
张贵萍0668001030
f4dee99574 fix(telegram): clear progress draft before tool artifacts 2026-06-21 19:14:57 +05:30
张贵萍0668001030
db33402af0 fix(telegram): clear progress draft before verbose tool output 2026-06-21 19:14:57 +05:30
Alex Knight
9dbc21d283 fix(telegram): materialize rich message line breaks as <br>
Bot API 10.1 rich messages parse structured HTML, so bare newlines
collapse as insignificant whitespace and flatten multi-paragraph replies
and bullet runs into a single line. Materialize logical line breaks as
<br> in prepareTelegramRichHtml -- the shared rich send/edit/draft
chokepoint covering both the Markdown and explicit-HTML text modes --
while keeping newlines literal inside code/pre/math and where they only
separate structural tags (block elements plus table/figure/details
container children, so pretty-printed rich HTML keeps valid markup).

Refs #95409
2026-06-21 21:22:33 +10:00
Chunyue Wang
e3ccf8743f fix(channels): resolve native /think menu levels via runtime catalog for live-discovered models (#94067)
Merged via squash.

Prepared head SHA: 079347b8b8
Co-authored-by: openperf <80630709+openperf@users.noreply.github.com>
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Reviewed-by: @steipete
2026-06-20 23:56:53 -04:00
Vincent Koc
e012f2cd3c chore(deadcode): share telegram send runtime loader 2026-06-21 09:12:41 +08:00
Vincent Koc
2e75d925ad chore(deadcode): share telegram state account ids 2026-06-21 07:22:52 +08:00
Vincent Koc
6b82d4ecb7 chore(deadcode): remove telegram topic cache test helpers 2026-06-20 19:22:42 +08:00
Vincent Koc
bf872b30cd test: remove unused mock alias exports 2026-06-19 23:19:46 +08:00
clawsweeper[bot]
d1bb2d5a12 fix(telegram): normalize all HTML tables before entity-escaping in rich messages (#94856)
Summary:
- The PR changes Telegram legacy HTML rendering so raw HTML table tags are converted to `<pre><code>` pipe-tab ... ks before unsupported-tag escaping, while preserving pre/code literals and rich-message table sanitization.
- PR surface: Source +38, Tests +31. Total +69 across 2 files.
- Reproducibility: yes. Source inspection shows current main's legacy HTML renderer sends raw tables directly  ... the linked issue describes that same escaped output; I did not run tests because this review was read-only.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head 5944f8e4d2.
- Required merge gates passed before the squash merge.

Prepared head SHA: 5944f8e4d2
Review: https://github.com/openclaw/openclaw/pull/94856#issuecomment-4749452707

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: zhangqueping <3436352+zhangqueping@users.noreply.github.com>
2026-06-19 10:04:22 +00:00
Ayaan Zaidi
a8b5f5d551 fix(telegram): send progress previews as html text 2026-06-19 14:56:35 +05:30
Vincent Koc
7580c80f37 refactor(channels): drop unused test helpers 2026-06-19 17:17:14 +08:00
Vincent Koc
7211d77553 refactor(channels): drop unused approval aliases 2026-06-19 16:41:19 +08:00
Vincent Koc
5e329f4065 fix(channels): preserve command progress detail (#94868)
Merged via squash.

Prepared head SHA: 3217f45e61
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-19 16:36:36 +08:00
ZOOWH
3a435eebc0 fix(telegram): classify sendChatAction 401 by structured error_code, not bare substring match (#94810)
Summary:
- The PR changes Telegram sendChatAction 401 detection to trust structured Telegram `error_code` values before an unauthorized-text fallback and adds regression tests for false 401 suspension cases.
- PR surface: Source +14, Tests +90. Total +104 across 2 files.
- Reproducibility: yes. Source inspection shows current main and the latest release classify any rendered erro ...  before transient handling, matching the linked issue's structured 429 `retry_after=401` reproduction path.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head 0ffee85d17.
- Required merge gates passed before the squash merge.

Prepared head SHA: 0ffee85d17
Review: https://github.com/openclaw/openclaw/pull/94810#issuecomment-4748778567

Co-authored-by: 徐闻涵0668001344 <xu.wenhan1@xydigit.com>
Approved-by: vincentkoc
2026-06-19 07:51:40 +00:00
Dallin Romney
4ca0e52d0e test: fold channel message flows into qa e2e (#93174)
* test: fold channel flows into qa e2e

* test: keep channel flow skill pointed at qa

* test: move channel flow proof under telegram
2026-06-18 15:45:33 -07:00
Daniil Karpenko
0922ee9955 [codex] Fix Telegram rich local Markdown link hrefs (#94118)
Merged via squash.

Prepared head SHA: 42c738978f
Co-authored-by: dankarization <26330178+dankarization@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-06-18 22:45:39 +05:30
Monkey-wusky
4929cbdb04 fix(telegram): set richMessages default to false explicitly in schema (#94048)
Merged via squash.

Prepared head SHA: 4af05ac54a
Co-authored-by: Monkey-wusky <66244686+Monkey-wusky@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-06-18 22:28:30 +05:30
Vincent Koc
ba36291a8c refactor(telegram): dedupe prompt media paths 2026-06-18 11:57:40 +08:00
Vincent Koc
c58e1abf6a refactor(telegram): remove unused message helpers 2026-06-18 11:06:15 +08:00
Vincent Koc
4012edcd66 refactor(extensions): remove unused provider helpers 2026-06-18 10:59:33 +08:00
nas
df87b40bec fix(telegram): guard UTF-16 surrogate pairs in outbound chunkers (#93938)
Merged via squash.

Prepared head SHA: 583b22354d
Co-authored-by: Nas01010101 <156536069+Nas01010101@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-17 18:56:25 +08:00
Vincent Koc
ffeccce5f9 test(telegram): isolate model callback session state 2026-06-17 10:30:45 +02:00
Vincent Koc
d4fb49f3c4 test(channels): update command output progress expectations 2026-06-17 10:30:45 +02:00
Vincent Koc
5b46a11d2d fix(telegram): preserve default model and sticker cache state 2026-06-17 10:30:45 +02:00
DrHack1
4f860bfab0 fix(reasoning-tags): strip MiniMax mm: namespaced reasoning tags (#93767)
* fix(reasoning-tags): strip MiniMax `mm:` namespaced reasoning tags

MiniMax M3 (e.g. via Fireworks) emits its chain-of-thought inline in the
content stream wrapped in `<mm:think>…</mm:think>` rather than in a separate
`reasoning_content` field. The reasoning-tag stripper only recognized the
`antml:` namespace, so `mm:`-namespaced tags slipped through QUICK_TAG_RE and
leaked the model's hidden reasoning into visible chat output.

Accept the `mm:` prefix alongside `antml:` in the shared sanitizer
(reasoning-tags.ts) and in the Telegram reasoning-lane coordinator's tag regex
and prefix list. Adds unit tests covering mm: think/thinking/thought blocks,
truncated-open orphan close recovery, and code-fence preservation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(reasoning): handle MiniMax tags in streams

---------

Co-authored-by: DrHack1 <DrHack1@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 06:46:37 +08:00
liuhao1024
003d3100c3 feat(inbound-meta): expose per-turn source modality (#93754)
* feat(inbound-meta): expose message_type in trusted inbound metadata (fixes #50482)

Add resolveInboundMessageType() that extracts the media type prefix
(e.g. 'audio' from 'audio/ogg') from MediaType or MediaTypes fields.
Expose it as message_type in the inbound metadata JSON so agents can
distinguish voice messages from typed text for turn-completion heuristics.

* fix(inbound-meta): preserve per-turn source modality

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 05:10:12 +08:00
keshavbotagent
257d540297 Keep command text in progress drafts (#93711)
* Keep command text in progress drafts

* test(channels): align successful progress drafts

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 02:41:59 +08:00
Ayaan Zaidi
42dcf7075f Fix Telegram rich progress detail updates (#93698)
Merged via squash.

Prepared head SHA: 77da499825
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-06-16 22:48:12 +05:30
Vincent Koc
3d05da9a54 fix(telegram): preserve streamed text during media normalization 2026-06-16 18:19:04 +02:00
Vincent Koc
6e3ebaccf0 fix(telegram): dispatch MEDIA directives as attachments (#93690)
* fix(telegram): deliver MEDIA directive replies as attachments

* fix(clownfish): address review for gitcrawl-167-autonomous-terminal-gap (1)

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
2026-06-16 23:52:59 +08:00
Vincent Koc
9de6a99c8f test(telegram): stabilize spool timeout recovery assertions 2026-06-16 15:11:45 +02:00
Vincent Koc
49572863d3 fix(telegram): preserve live spool claim owners 2026-06-16 15:03:11 +02:00
Nik
11b6c01198 fix(telegram): recover lone active spooled handler on timeout (#84158) (#93615)
Merged via squash.

Prepared head SHA: 2da361a345
Co-authored-by: 0xghost42 <151941421+0xghost42@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 20:36:11 +08:00
Vincent Koc
fd61b1b6ee fix(ci): update test helper expectations 2026-06-16 13:35:59 +02:00
Eldar Shlomi
33bf9874bf fix(telegram): hydrate group reply-chain media into model context [AI-assisted] (#93575)
Merged via squash.

Prepared head SHA: f108f6eae4
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 18:58:31 +08:00
Martin Kessler
840cfd69cd fix(telegram): bind bot mentions to assistant identity (#93088)
* fix(telegram): bind bot mentions to assistant identity

* fix(telegram): satisfy context payload mention typing

* refactor(telegram): carry mention facts as one context object

* test(telegram): use neutral bot handle fixture

* fix(ci): terminate heartbeat command groups

* fix(ci): preserve heartbeat shell functions

* fix(telegram): project effective mention facts

* fix(telegram): keep mention identity portable

* test(telegram): align mention facts mock

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 14:35:14 +08:00
Dirk
ee3b7eb7c0 fix(telegram): forward Bot API 10.1 rich_message content to agent (#93418)
* fix(telegram): surface unsupported inbound rich messages

* fix(telegram): isolate rich message placeholders

* fix(telegram): accept typed rich message inputs

* fix(telegram): preserve rich message cache marker

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 08:42:48 +08:00
NianJiu
a375d6c849 fix(telegram): gate rich messages behind opt-in (#93279)
Restore readable standard Telegram text delivery by default after Bot API 10.1 rich messages rendered as unsupported in current clients. Keep native rich tables and structured messages available through the account-level richMessages opt-in, with account-aware capability advertising and documented structural limits.

Fixes #93263.
2026-06-15 17:22:41 -07:00