Follow-up to the previous commit on this branch. The agent message-tool
schema now describes forceDocument/asDocument as a cross-channel knob,
so the public CLI help and the user-facing CLI docs need to match, and
the regenerated prompt snapshot fixtures need to drop the stale
"Telegram only" string the schema no longer emits.
* src/cli/program/message/register.send.ts: rephrase the `--force-document`
CLI option help from "Send media as document to avoid Telegram
compression (Telegram only)" to "Send media as document to avoid
channel compression (Telegram, WhatsApp)" so `openclaw message send
--help` no longer claims Telegram exclusivity.
* docs/cli/message.md: change the per-flag entry under `send` from
"Telegram only: --force-document (...avoid Telegram compression)" to
"Telegram + WhatsApp: --force-document (...avoid channel compression)"
so the public docs match both the schema and the CLI help.
* test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/*:
regenerate via `pnpm prompt:snapshots:gen` so the captured tool
descriptions, dynamic-tools JSON, and rough-token counts reflect the
new schema strings. Six fixtures change in lockstep:
- discord-group-codex-message-tool.md
- telegram-direct-codex-message-tool.md
- telegram-heartbeat-codex-tool.md
- codex-dynamic-tools.discord-group.json
- codex-dynamic-tools.telegram-direct.json
- codex-dynamic-tools.heartbeat-turn.json
Verified locally:
* `pnpm prompt:snapshots:check` reports 7 files current.
* `pnpm exec oxfmt --check --threads=1` is clean for both touched ts
files plus docs/cli/message.md and CHANGELOG.md.
* `pnpm test extensions/whatsapp/src/send.test.ts
extensions/whatsapp/src/inbound/send-api.test.ts` keeps the 51-case
WhatsApp send/inbound suite green, including the three new
forceDocument/asDocument cases from the previous commit.
Summary:
- Adds WhatsApp `@newsletter` target normalization, outbound allowFrom bypass, channel session routing, composing-presence suppression, docs/changelog updates, and focused tests.
- Reproducibility: yes. Source inspection on current main shows a `120363401234567890@newsletter` target normalizes to null before outbound send, and the current session route has only direct/group semantics.
ClawSweeper fixups:
- Included follow-up commit: fix(clownfish): address review for ghcrawl-156943-autonomous-smoke (1)
- Included follow-up commit: feat(whatsapp): support newsletter targets in message tool
Validation:
- ClawSweeper review passed for head 9ff3f88202.
- Required merge gates passed before the squash merge.
Prepared head SHA: 9ff3f88202
Review: https://github.com/openclaw/openclaw/pull/73393#issuecomment-4338584612
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Add Mattermost as a supported messaging channel with bot API and WebSocket integration. Includes channel state tracking (tint, summary, details), multi-account support, and delivery target routing. Update documentation and tests to include Mattermost alongside existing channels.