openclaw-matrix-multiaccounts/src/infra
Glucksberg 481bd333eb
fix(gateway): gracefully handle AbortError and transient network errors (#2451)
* fix(tts): generate audio when block streaming drops final reply

When block streaming succeeds, final replies are dropped but TTS was only
applied to final replies. Fix by accumulating block text during streaming
and generating TTS-only audio after streaming completes.

Also:
- Change truncate vs skip behavior when summary OFF (now truncates)
- Align TTS limits with Telegram max (4096 chars)
- Improve /tts command help messages with examples
- Add newline separator between accumulated blocks

* fix(tts): add error handling for accumulated block TTS

* feat(tts): add descriptive inline menu with action descriptions

- Add value/label support for command arg choices
- TTS menu now shows descriptive title listing each action
- Capitalize button labels (On, Off, Status, etc.)
- Update Telegram, Discord, and Slack handlers to use labels

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

* fix(gateway): gracefully handle AbortError and transient network errors

Addresses issues #1851, #1997, and #2034.

During config reload (SIGUSR1), in-flight requests are aborted, causing
AbortError exceptions. Similarly, transient network errors (fetch failed,
ECONNRESET, ETIMEDOUT, etc.) can crash the gateway unnecessarily.

This change:
- Adds isAbortError() to detect intentional cancellations
- Adds isTransientNetworkError() to detect temporary connectivity issues
- Logs these errors appropriately instead of crashing
- Handles nested cause chains and AggregateError

AbortError is logged as a warning (expected during shutdown).
Network errors are logged as non-fatal errors (will resolve on their own).

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

* fix(test): update commands-registry test expectations

Update test expectations to match new ResolvedCommandArgChoice format
(choices now return {label, value} objects instead of plain strings).

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

* fix: harden unhandled rejection handling and tts menus (#2451) (thanks @Glucksberg)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-26 19:51:53 -06:00
..
net fix: harden url fetch dns pinning 2026-01-26 16:05:29 +00:00
outbound fix: paragraph-aware newline chunking (#1726) 2026-01-25 13:24:19 +00:00
tls fix: tighten tls fingerprints and approval events 2026-01-20 13:04:20 +00:00
agent-events.test.ts fix: preserve gateway presence instanceId 2026-01-20 09:52:26 +00:00
agent-events.ts feat: add heartbeat visibility filtering for webchat 2026-01-26 14:52:23 -08:00
archive.test.ts refactor: rename hooks docs and add tests 2026-01-17 07:32:54 +00:00
archive.ts style: run oxfmt 2026-01-17 08:00:05 +00:00
backoff.ts refactor: share backoff helpers 2026-01-07 23:22:12 +00:00
binaries.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
binaries.ts chore: format to 2-space and bump changelog 2025-11-26 00:53:53 +01:00
bonjour-ciao.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
bonjour-discovery.test.ts fix: shorten bonjour gateway service type 2026-01-20 15:10:06 +00:00
bonjour-discovery.ts fix: shorten bonjour gateway service type 2026-01-20 15:10:06 +00:00
bonjour-errors.ts refactor: centralize unhandled rejection setup 2026-01-07 20:59:49 +00:00
bonjour.test.ts security: add mDNS discovery config to reduce information disclosure (#1882) 2026-01-26 13:32:11 +00:00
bonjour.ts security: add mDNS discovery config to reduce information disclosure (#1882) 2026-01-26 13:32:11 +00:00
brew.test.ts fix(ci): stabilize windows tests 2026-01-08 02:44:19 +00:00
brew.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
canvas-host-url.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
channel-activity.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
channel-activity.ts refactor!: rename chat providers to channels 2026-01-13 08:40:39 +00:00
channel-summary.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
channels-status-issues.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
clawdbot-root.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
clipboard.ts feat(browser): copy extension path to clipboard 2026-01-15 06:19:47 +00:00
control-ui-assets.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
control-ui-assets.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
dedupe.test.ts fix: dedupe inbound messages across providers 2026-01-11 00:12:25 +01:00
dedupe.ts fix: dedupe inbound messages across providers 2026-01-11 00:12:25 +01:00
device-auth-store.ts feat: wire role-scoped device creds 2026-01-20 13:04:19 +00:00
device-identity.ts fix: resolve format/build failures 2026-01-19 11:32:15 +00:00
device-pairing.test.ts fix: sync device scopes on token rotation 2026-01-20 10:46:33 +00:00
device-pairing.ts fix: sync device scopes on token rotation 2026-01-20 10:46:33 +00:00
diagnostic-events.test.ts fix: wire OTLP logs for diagnostics 2026-01-20 22:51:47 +00:00
diagnostic-events.ts fix: emit diagnostics across channels 2026-01-21 00:30:34 +00:00
diagnostic-flags.test.ts feat: add diagnostics flags 2026-01-25 10:40:27 +00:00
diagnostic-flags.ts feat: add diagnostics flags 2026-01-25 10:40:27 +00:00
dotenv.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
dotenv.ts fix: load global .env fallback 2026-01-05 01:11:29 +01:00
env-file.ts feat: improve auth setup flows 2026-01-09 09:59:58 +01:00
env.test.ts CLI: streamline startup paths and env parsing 2026-01-18 23:10:39 +00:00
env.ts fix: log env opts and collapse duplicate blocks 2026-01-25 10:22:53 +00:00
errors.ts fix: tame invalid config logging 2026-01-21 01:58:47 +00:00
exec-approval-forwarder.test.ts feat(discord): add exec approval forwarding to DMs (#1621) 2026-01-24 20:56:40 +00:00
exec-approval-forwarder.ts feat(discord): add exec approval forwarding to DMs (#1621) 2026-01-24 20:56:40 +00:00
exec-approvals.test.ts fix: allow chained exec allowlists 2026-01-23 00:11:58 +00:00
exec-approvals.ts fix(exec-approvals): stabilize allowlist ids (#1521) 2026-01-23 19:00:45 +00:00
exec-host.ts feat: route exec approvals via gateway 2026-01-20 13:04:19 +00:00
exec-safety.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
fetch.test.ts fix: add duplex for fetch uploads 2026-01-25 04:05:30 +00:00
fetch.ts fix: add duplex for fetch uploads 2026-01-25 04:05:30 +00:00
format-duration.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
gateway-lock.test.ts fix: move gateway lock to temp dir 2026-01-25 09:21:46 +00:00
gateway-lock.ts fix: move gateway lock to temp dir 2026-01-25 09:21:46 +00:00
git-commit.ts fix: stamp build commit metadata 2026-01-17 12:30:11 +00:00
heartbeat-events.ts feat(heartbeat): add configurable visibility for heartbeat responses 2026-01-24 09:07:03 +00:00
heartbeat-runner.respects-ackmaxchars-heartbeat-acks.test.ts feat(heartbeat): add configurable visibility for heartbeat responses 2026-01-24 09:07:03 +00:00
heartbeat-runner.returns-default-unset.test.ts fix(security): properly test Windows ACL audit for config includes (#2403) 2026-01-26 16:27:53 -08:00
heartbeat-runner.scheduler.test.ts fix: reschedule heartbeat on hot reload 2026-01-21 00:53:54 +00:00
heartbeat-runner.sender-prefers-delivery-target.test.ts test: isolate heartbeat runner workspace in tests 2026-01-24 04:48:01 +00:00
heartbeat-runner.ts feat(discord): add exec approval forwarding to DMs (#1621) 2026-01-24 20:56:40 +00:00
heartbeat-visibility.test.ts feat: add heartbeat visibility filtering for webchat 2026-01-26 14:52:23 -08:00
heartbeat-visibility.ts feat(telegram): add edit message action (#2394) (thanks @marcelomar21) 2026-01-26 15:34:47 -08:00
heartbeat-wake.ts fix(heartbeat): remove unhandled rejection crash in wake handler 2026-01-26 17:19:48 -06:00
is-main.test.ts chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
is-main.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
json-file.ts fix: harden cli credential sync 2026-01-10 16:37:54 +01:00
machine-name.ts test: stabilize gateway suites 2026-01-18 05:44:22 +00:00
node-pairing.ts feat: add nodes list table with last connect 2026-01-21 03:03:48 +00:00
node-shell.test.ts fix: treat Windows platform labels as Windows for node shell (#1760) 2026-01-25 12:57:06 +00:00
node-shell.ts fix: treat Windows platform labels as Windows for node shell (#1760) 2026-01-25 12:57:06 +00:00
os-summary.ts feat(status): improve status output 2026-01-10 23:32:07 +01:00
path-env.test.ts chore: drop legacy Relay signing 2026-01-16 03:11:16 +00:00
path-env.ts CLI: streamline startup paths and env parsing 2026-01-18 23:10:39 +00:00
ports-format.ts feat: fold gateway service commands into gateway 2026-01-21 17:45:26 +00:00
ports-inspect.test.ts fix: harden port listener detection 2026-01-21 18:52:55 +00:00
ports-inspect.ts fix: harden port listener detection 2026-01-21 18:52:55 +00:00
ports-lsof.ts fix: harden port listener detection 2026-01-21 18:52:55 +00:00
ports-types.ts refactor: split port diagnostics helpers 2026-01-08 02:42:43 +01:00
ports.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
ports.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
provider-usage.auth.ts refactor(auth)!: remove external CLI OAuth reuse 2026-01-26 19:05:00 +00:00
provider-usage.fetch.antigravity.test.ts [AI Assisted] Usage: add Google Antigravity usage tracking (#1490) 2026-01-23 07:17:59 +00:00
provider-usage.fetch.antigravity.ts [AI Assisted] Usage: add Google Antigravity usage tracking (#1490) 2026-01-23 07:17:59 +00:00
provider-usage.fetch.claude.ts chore: standardize Claude Code CLI naming (#915) 2026-01-14 20:07:35 +00:00
provider-usage.fetch.codex.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
provider-usage.fetch.copilot.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
provider-usage.fetch.gemini.ts refactor(infra): split provider usage 2026-01-14 05:40:03 +00:00
provider-usage.fetch.minimax.ts Infra: update MiniMax usage endpoint 2026-01-17 19:45:48 +00:00
provider-usage.fetch.shared.ts refactor(infra): split provider usage 2026-01-14 05:40:03 +00:00
provider-usage.fetch.ts [AI Assisted] Usage: add Google Antigravity usage tracking (#1490) 2026-01-23 07:17:59 +00:00
provider-usage.fetch.zai.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
provider-usage.format.ts fix: hide usage errors in status 2026-01-23 19:43:26 +00:00
provider-usage.load.ts [AI Assisted] Usage: add Google Antigravity usage tracking (#1490) 2026-01-23 07:17:59 +00:00
provider-usage.shared.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
provider-usage.test.ts test(auth): update auth profile coverage 2026-01-26 19:05:00 +00:00
provider-usage.ts feat: sticky auth profile rotation + usage headers 2026-01-16 00:25:49 +00:00
provider-usage.types.ts feat(usage): add minimax usage snapshot 2026-01-14 09:57:32 +00:00
restart-sentinel.test.ts feat: add gateway config/update restart flow 2026-01-08 01:30:02 +01:00
restart-sentinel.ts fix: preserve restart routing + thread replies (#1337) (thanks @John-Rood) 2026-01-21 01:20:25 +00:00
restart.test.ts fix: gate gateway restarts and discord abort reconnects 2026-01-19 00:15:45 +00:00
restart.ts fix: gate gateway restarts and discord abort reconnects 2026-01-19 00:15:45 +00:00
retry-policy.test.ts Telegram: harden network retries and config 2026-01-26 19:36:43 -05:00
retry-policy.ts Telegram: harden network retries and config 2026-01-26 19:36:43 -05:00
retry.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
retry.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
runtime-guard.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
runtime-guard.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
session-cost-usage.test.ts Usage: add cost summaries to /usage + mac menu 2026-01-19 00:05:06 +00:00
session-cost-usage.ts fix: cache usage cost summary 2026-01-22 08:51:22 +00:00
shell-env.path.test.ts fix: merge login shell PATH for gateway exec 2026-01-20 14:04:13 +00:00
shell-env.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
shell-env.ts fix: merge login shell PATH for gateway exec 2026-01-20 14:04:13 +00:00
skills-remote.ts fix: reduce log noise for node disconnect/late invoke errors (#1607) 2026-01-24 20:05:41 +00:00
ssh-config.test.ts fix: sync remote ssh targets 2026-01-16 07:33:15 +00:00
ssh-config.ts fix: sync remote ssh targets 2026-01-16 07:33:15 +00:00
ssh-tunnel.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
state-migrations.fs.test.ts fix: guard session store against array corruption 2026-01-24 04:51:46 +00:00
state-migrations.fs.ts fix: guard session store against array corruption 2026-01-24 04:51:46 +00:00
state-migrations.ts fix: normalize session keys and outbound mirroring 2026-01-24 11:57:11 +00:00
system-events.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
system-events.ts System events: add local timestamps in prompt injection 2026-01-12 21:38:56 -06:00
system-presence.test.ts fix: validate ws tls fingerprint 2026-01-20 13:04:20 +00:00
system-presence.ts feat: enrich presence with roles 2026-01-20 13:04:20 +00:00
tailnet.test.ts Gateway: wide-area Bonjour via clawdis.internal 2025-12-17 17:01:10 +01:00
tailnet.ts Gateway: wide-area Bonjour via clawdis.internal 2025-12-17 17:01:10 +01:00
tailscale.test.ts fix: wrap telegram reasoning italics per line (#2181) 2026-01-26 20:35:06 +05:30
tailscale.ts fix: harden tailscale serve auth 2026-01-26 12:49:19 +00:00
transport-ready.test.ts fix: stabilize transport-ready test timing 2026-01-16 23:03:12 +00:00
transport-ready.ts fix: bound signal/imessage transport readiness waits 2026-01-16 20:33:04 +00:00
unhandled-rejections.test.ts fix(gateway): gracefully handle AbortError and transient network errors (#2451) 2026-01-26 19:51:53 -06:00
unhandled-rejections.ts fix(gateway): gracefully handle AbortError and transient network errors (#2451) 2026-01-26 19:51:53 -06:00
update-channels.ts feat: add update channel status 2026-01-20 14:19:03 +00:00
update-check.test.ts test: avoid hardcoded version strings 2026-01-22 02:01:11 +00:00
update-check.ts Update: ignore dist/control-ui in dirty check (#1976) 2026-01-25 21:07:51 -06:00
update-global.ts feat: align update channel installs 2026-01-21 06:00:54 +00:00
update-runner.test.ts Update: ignore dist/control-ui in dirty check (#1976) 2026-01-25 21:07:51 -06:00
update-runner.ts Update: ignore dist/control-ui in dirty check (#1976) 2026-01-25 21:07:51 -06:00
update-startup.test.ts test: cover beta fallback update logic 2026-01-20 16:36:37 +00:00
update-startup.ts fix: prefer stable release when beta lags 2026-01-20 16:36:04 +00:00
voicewake.test.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
voicewake.ts chore: migrate to oxlint and oxfmt 2026-01-14 15:02:19 +00:00
warnings.ts chore: suppress remaining deprecation warnings 2026-01-24 11:16:46 +00:00
widearea-dns.test.ts fix: shorten bonjour gateway service type 2026-01-20 15:10:06 +00:00
widearea-dns.ts fix: shorten bonjour gateway service type 2026-01-20 15:10:06 +00:00
ws.ts fix: resolve build errors 2025-12-23 03:00:04 +01:00
wsl.ts style: apply oxfmt 2026-01-17 18:32:23 +00:00