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.
* Default bootstrap truncation warnings to always
Make bootstrap truncation warnings surface on every affected run by default while preserving explicit off and once configuration.
* Refresh checks after proof formatting fix
* Refresh checks after live proof update
* docs: align bootstrap warning default reference
Update the public agent config reference to match the new default bootstrapPromptTruncationWarning mode and recommended example.
Updates the xAI image model catalog and docs to use `grok-imagine-image-quality` after `grok-imagine-image-pro` retirement.
Co-authored-by: Kate <kate@trantor.dev>
* Add config unset dry-run
Add --dry-run support to config unset, including JSON output and allow-exec validation parity with config set/patch dry-run handling.
* Refresh checks after proof update
* fix(config): address unset dry-run review
Return structured JSON when config unset dry-run misses a path and validate broad secret provider/default unsets against affected SecretRefs.
ClawSweeper R3 flagged that the previous follow-up added the
`cancelDelivered` hook to the public approval-handler runtime interaction
surface but left the channel plugin docs describing `interactions` as
only bind/unbind/clear-action hooks. Extend the bullet so plugin authors
whose `deliverPending` registers in-process or persistent state know
when to implement the cancellation hook.
AI-assisted: drafted with claude code (claude-opus-4-7).
Add first-class session.operation start/end events for manual compaction and render the existing WebChat compaction indicator from those events.
Co-authored-by: Conan Scott <271909525+Conan-Scott@users.noreply.github.com>
Adapts @tynamite's fix from the abandoned #77945 to current main (which
moved to replaceFileAtomic after that PR was opened), and adds the docs +
changelog updates clawsweeper flagged plus a regression test for the
field condition from #80960.
When repairSessionFileIfNeeded writes a cleaned transcript, the sibling
*.bak-<pid>-<ts> snapshot is deleted after the atomic replace succeeds.
It is only retained — and only then reported via backupPath — when the
cleanup itself fails. This prevents the unbounded accumulation observed
in #80960, where a stuck operations-agent session with a persistently
malformed JSONL line caused 2,180 ~1.8 MB backup files to pile up over
~25 hours inside two gateway processes (PIDs 1220 and 2640).
Test changes:
- Replace requireBackupPath helper with expectNoRetainedBackup that
also asserts no .bak-* siblings remain on disk.
- Update the four call sites that used to read the retained backup.
- Add a regression test that drives repair five times against a file
with a recurring malformed tail and asserts zero retained backups.
Docs:
- docs/reference/transcript-hygiene.md: describe backup as transient,
retained only on cleanup failure.
Fixes#80960. Supersedes #77945. Co-authored by @tynamite — credit for
the original approach.
Co-authored-by: tynamite <35367599+tynamite@users.noreply.github.com>