Peter Steinberger
61ab6a8f9d
feat(gateway): make suspend/resume operator-usable end to end ( #122100 )
...
* feat(gateway): make suspend/resume operator-usable end to end
A prepared Gateway now accepts authenticated WebSocket connects while
keeping every method except gateway.suspend.* fenced, so a fresh CLI or
controller process can resume a suspension instead of dead-ending on a
rejected upgrade until the two-minute lease expires. Restart drain,
worker ingress, and desktop-observe streams stay fully closed.
The gateway client surfaces non-101 upgrade responses (bounded body
read) as typed retryable errors instead of an opaque 1006 close, and
new openclaw gateway suspend / resume commands drive the whole
handshake, including bounded --wait polling with blocker output.
Live-verified on an isolated dev gateway: prepare, SIGSTOP/SIGCONT
freeze, resume, over-TTL expiry self-heal, conflict and mismatch paths.
* refactor(gateway-client): move wire-client contract types to protocol-client-contract
The connectError addition pushed protocol-client.ts over the 700-line
max-lines gate; split the adapter-facing contract types into their own
module instead of suppressing.
* refactor(gateway-client): keep contract-internal option types unexported
Knip deadcode gates reject exported types with no importer; the connect
and close decision shapes are only referenced inside the contract module.
* chore(plugin-sdk): refresh gateway-runtime API baseline after rebase
* fix(gateway-client): preserve hello type after rebase
* test(gateway): support websocket upgrade rejection events
* test(gateway): expect connection errors in close info
* fix(gateway): keep prepared-suspension connects control-only
Address ClawSweeper review: node and worker connects stay refused while
suspension is prepared (only operator control connects pass), and the
CLI never issues another suspend prepare after its --wait deadline.
2026-08-11 22:12:53 -07:00
..
2026-08-11 11:18:24 -07:00
2026-08-09 04:54:50 -07:00
2026-08-11 11:18:24 -07:00
2026-07-16 18:30:43 -07:00
2026-08-11 22:12:53 -07:00
2026-08-06 19:28:10 -07:00
2026-08-11 11:18:24 -07:00
2026-08-11 08:24:03 -07:00
2026-08-04 21:22:07 -06:00
2026-07-13 00:42:56 -07:00
2026-08-12 08:10:17 +08:00
2026-08-11 12:40:03 -07:00
2026-07-18 18:41:09 -07:00
2026-08-09 12:50:06 -07:00
2026-08-09 12:50:06 -07:00
2026-08-08 11:23:39 -07:00
2026-08-09 12:50:06 -07:00
2026-08-09 16:44:25 -07:00
2026-07-01 15:52:39 -07:00
2026-08-09 16:44:25 -07:00
2026-07-21 20:28:43 -07:00
2026-08-11 06:21:28 -07:00
2026-08-11 06:21:28 -07:00
2026-08-11 11:18:24 -07:00
2026-07-15 16:57:21 -07:00
2026-07-16 20:21:06 -07:00
2026-07-16 20:21:06 -07:00
2026-08-11 05:41:48 -07:00
2026-08-11 05:41:48 -07:00
2026-07-22 19:57:42 -04:00
2026-08-09 07:56:15 -07:00
2026-07-31 16:20:34 -07:00
2026-08-10 15:57:24 -07:00
2026-08-10 15:57:24 -07:00
2026-08-03 05:27:24 +08:00
2026-08-09 23:52:59 -07:00
2026-08-09 23:52:59 -07:00
2026-06-26 18:33:19 +10:00
2026-07-13 00:42:56 -07:00
2026-08-11 13:47:38 -07:00
2026-08-07 18:51:45 -07:00
2026-08-07 18:51:45 -07:00
2026-07-27 17:37:23 -07:00
2026-08-07 18:51:45 -07:00
2026-08-09 03:30:21 -07:00
2026-08-09 03:30:21 -07:00
2026-08-08 12:32:26 -07:00
2026-08-08 08:05:50 -07:00
2026-08-09 03:30:21 -07:00
2026-08-09 03:30:21 -07:00
2026-07-27 08:30:50 -07:00
2026-08-09 21:15:24 -07:00
2026-06-13 19:55:37 +08:00
2026-08-11 12:57:35 -07:00
2026-08-04 22:31:10 +08:00
2026-08-02 09:48:14 +08:00
2026-08-10 19:31:13 -07:00
2026-06-12 09:50:31 -05:00
2026-08-02 00:20:39 -07:00
2026-08-02 00:20:39 -07:00
2026-06-22 19:11:46 +08:00
2026-07-31 16:20:34 -07:00
2026-07-13 05:05:31 -07:00
2026-07-06 17:55:50 -07:00
2026-06-19 04:44:51 +08:00
2026-08-10 19:31:13 -07:00
2026-08-09 12:50:06 -07:00
2026-07-15 17:05:07 +01:00
2026-07-31 10:16:45 -06:00
2026-08-02 00:01:37 +08:00
2026-07-25 21:37:59 -07:00
2026-07-31 10:16:45 -06:00
2026-07-21 20:28:43 -07:00
2026-07-27 17:55:44 -05:00
2026-07-31 10:16:45 -06:00
2026-08-09 06:00:06 -07:00
2026-08-10 19:31:13 -07:00
2026-08-02 00:20:39 -07:00
2026-08-02 09:48:14 +08:00
2026-08-02 09:48:14 +08:00
2026-08-02 23:03:07 -07:00
2026-08-10 18:17:50 -07:00
2026-08-02 23:03:07 -07:00
2026-08-10 18:17:13 -07:00
2026-08-10 18:17:13 -07:00
2026-07-31 08:59:11 -07:00
2026-07-31 08:59:11 -07:00
2026-07-31 08:59:11 -07:00
2026-07-31 08:59:11 -07:00
2026-08-02 06:36:43 -07:00
2026-08-02 06:36:43 -07:00
2026-08-11 11:18:24 -07:00
2026-07-29 12:04:07 -04:00
2026-08-11 11:18:24 -07:00
2026-08-11 11:18:24 -07:00
2026-07-27 22:27:00 -04:00
2026-08-03 00:01:40 -07:00
2026-08-09 09:40:46 -07:00
2026-08-10 07:08:40 -07:00
2026-07-20 03:31:03 -07:00
2026-07-24 22:38:09 -07:00
2026-07-29 00:23:39 -04:00
2026-08-01 10:03:33 -07:00
2026-07-20 03:31:03 -07:00
2026-08-05 11:20:23 +08:00
2026-08-05 11:20:23 +08:00
2026-08-02 15:00:26 -07:00
2026-07-25 06:51:49 -07:00
2026-08-02 04:22:47 -07:00
2026-08-08 13:29:18 -07:00
2026-08-10 11:08:17 +05:30
2026-08-10 18:17:13 -07:00
2026-08-11 10:22:01 -07:00
2026-08-09 09:40:46 -07:00
2026-07-27 05:44:16 -04:00
2026-07-27 05:44:16 -04:00
2026-08-09 00:16:14 -07:00
2026-08-09 00:16:14 -07:00
2026-07-29 05:03:20 -04:00
2026-08-09 21:15:24 -07:00
2026-08-02 02:56:08 -07:00
2026-07-27 05:44:16 -04:00
2026-07-27 05:44:16 -04:00
2026-07-07 13:44:32 +01:00
2026-07-07 13:44:32 +01:00
2026-08-06 14:48:01 -07:00
2026-08-11 11:18:24 -07:00
2026-08-11 11:18:24 -07:00
2026-07-27 16:07:11 +08:00
2026-08-10 06:47:43 -07:00
2026-07-31 16:20:34 -07:00
2026-07-31 16:20:34 -07:00
2026-07-11 11:24:04 -07:00
2026-08-02 19:56:40 -07:00
2026-08-11 13:25:53 -07:00
2026-08-03 03:17:25 -07:00
2026-07-05 12:10:24 -07:00
2026-06-22 14:00:57 +08:00
2026-06-22 14:00:57 +08:00
2026-08-01 14:06:30 -07:00
2026-08-01 14:06:30 -07:00
2026-08-01 14:06:30 -07:00
2026-07-31 16:20:34 -07:00
2026-07-27 05:44:16 -04:00
2026-08-10 13:48:32 +05:30
2026-08-11 20:35:23 -07:00
2026-07-13 00:42:56 -07:00
2026-07-10 11:56:44 +01:00
2026-08-11 15:55:40 -07:00
2026-08-02 01:24:28 -07:00
2026-08-08 20:34:45 -07:00
2026-08-04 04:26:22 +08:00
2026-07-18 09:30:27 +01:00
2026-07-18 09:30:27 +01:00
2026-07-27 05:44:16 -04:00
2026-07-29 14:04:12 +08:00
2026-07-10 08:49:27 +01:00
2026-07-11 20:47:34 -07:00
2026-07-19 16:56:54 +08:00
2026-07-19 16:56:54 +08:00
2026-08-09 09:40:46 -07:00
2026-08-11 10:22:01 -07:00
2026-07-27 05:44:16 -04:00
2026-08-01 10:03:33 -07:00
2026-08-11 20:58:51 +00:00
2026-08-11 20:58:51 +00:00
2026-08-11 20:58:51 +00:00
2026-08-10 09:55:41 -07:00
2026-08-11 14:11:21 -07:00
2026-08-11 20:58:51 +00:00
2026-08-07 21:06:29 -07:00
2026-08-11 14:11:21 -07:00
2026-08-11 20:58:51 +00:00
2026-08-02 06:36:43 -07:00
2026-07-15 16:57:21 -07:00
2026-08-09 12:50:06 -07:00
2026-08-04 20:51:32 -07:00
2026-08-09 12:50:06 -07:00
2026-08-09 12:50:06 -07:00
2026-07-28 11:57:36 -07:00
2026-07-28 11:57:36 -07:00
2026-07-28 11:57:36 -07:00
2026-08-08 08:05:50 -07:00
2026-08-11 00:02:18 -07:00
2026-08-11 06:50:22 -07:00
2026-07-10 22:45:54 +01:00
2026-08-11 00:02:18 -07:00
2026-08-11 00:02:18 -07:00
2026-08-11 00:02:18 -07:00
2026-07-15 03:25:36 +10:00
2026-07-27 19:34:01 -04:00
2026-07-27 19:34:01 -04:00
2026-08-01 10:03:33 -07:00
2026-07-23 11:28:54 -07:00
2026-08-10 11:08:17 +05:30
2026-08-10 11:08:17 +05:30
2026-08-02 06:36:43 -07:00
2026-08-10 07:10:06 +00:00
2026-08-10 07:10:06 +00:00
2026-08-09 12:50:06 -07:00
2026-07-09 23:02:31 +01:00
2026-07-16 00:45:23 -07:00
2026-06-11 20:52:07 +09:00
2026-06-11 20:52:07 +09:00
2026-07-11 20:47:34 -07:00
2026-07-28 18:25:57 -04:00
2026-08-10 06:42:37 -07:00
2026-08-05 04:08:35 +08:00
2026-08-05 04:08:35 +08:00
2026-08-01 21:18:47 -07:00
2026-08-01 21:18:47 -07:00
2026-08-02 02:56:08 -07:00
2026-08-02 02:56:08 -07:00
2026-08-11 13:34:24 -07:00
2026-08-04 08:29:29 +08:00
2026-08-11 11:18:24 -07:00
2026-08-02 02:56:08 -07:00
2026-08-11 10:41:50 -07:00
2026-08-01 01:56:44 -07:00
2026-08-01 18:24:08 -07:00
2026-08-11 11:18:24 -07:00
2026-08-11 10:41:50 -07:00
2026-08-02 23:23:18 -07:00
2026-08-02 02:56:08 -07:00
2026-08-11 11:18:24 -07:00
2026-08-11 11:18:24 -07:00
2026-07-10 11:56:44 +01:00
2026-07-27 06:54:14 -04:00
2026-08-07 02:55:08 -07:00
2026-08-11 11:18:24 -07:00
2026-08-10 06:42:37 -07:00
2026-07-28 18:25:57 -04:00
2026-07-28 18:25:57 -04:00
2026-07-28 18:25:57 -04:00
2026-08-11 11:18:24 -07:00
2026-07-28 23:01:24 -04:00
2026-06-20 23:37:00 +08:00
2026-08-01 11:55:59 -07:00
2026-08-02 01:18:40 -07:00
2026-08-07 02:55:08 -07:00
2026-08-07 02:55:08 -07:00
2026-08-02 01:18:40 -07:00
2026-08-11 15:10:27 -07:00
2026-08-11 15:10:27 -07:00
2026-07-29 11:43:41 -04:00
2026-08-04 09:07:35 +08:00
2026-08-10 06:42:37 -07:00
2026-08-10 06:42:37 -07:00
2026-08-10 06:42:37 -07:00
2026-08-01 07:38:20 -07:00
2026-08-01 07:38:20 -07:00
2026-08-11 06:50:22 -07:00
2026-07-16 21:38:45 -07:00
2026-07-16 21:38:45 -07:00
2026-06-26 18:33:19 +10:00
2026-08-06 17:00:28 -07:00
2026-08-01 04:36:18 -07:00
2026-07-14 09:28:16 -07:00
2026-07-29 01:02:32 -04:00
2026-08-02 13:38:28 -07:00
2026-07-30 05:22:50 -07:00
2026-08-01 11:28:39 +08:00
2026-08-01 11:28:39 +08:00
2026-07-29 01:02:32 -04:00
2026-08-11 06:50:22 -07:00
2026-08-11 06:50:22 -07:00
2026-08-11 06:50:22 -07:00
2026-08-11 11:18:24 -07:00
2026-08-11 11:18:24 -07:00
2026-07-31 16:20:34 -07:00
2026-07-31 16:20:34 -07:00
2026-07-07 01:10:42 -06:00
2026-06-26 18:33:19 +10:00
2026-08-02 02:56:08 -07:00
2026-08-02 02:56:08 -07:00
2026-08-02 02:56:08 -07:00
2026-08-02 02:56:08 -07:00
2026-07-27 05:44:16 -04:00
2026-08-09 00:47:33 -03:00
2026-08-09 00:47:33 -03:00
2026-08-02 19:56:40 -07:00
2026-07-18 07:15:37 +01:00
2026-06-22 02:59:57 -04:00
2026-07-28 11:57:36 -07:00
2026-08-09 02:52:06 -07:00
2026-08-09 12:39:59 -07:00
2026-08-09 02:52:06 -07:00
2026-06-20 22:09:32 +08:00
2026-06-22 21:27:47 +08:00
2026-08-02 00:20:39 -07:00
2026-08-02 00:20:39 -07:00
2026-07-30 05:22:50 -07:00
2026-08-11 05:06:11 -07:00
2026-06-20 03:56:15 +01:00
2026-07-30 05:22:50 -07:00
2026-08-11 08:24:03 -07:00
2026-08-10 07:08:40 -07:00
2026-08-10 07:08:40 -07:00
2026-08-11 02:30:04 -07:00
2026-08-11 02:30:04 -07:00
2026-08-11 02:30:04 -07:00
2026-08-11 13:34:24 -07:00
2026-08-11 13:34:24 -07:00
2026-08-09 16:44:25 -07:00
2026-08-09 16:44:25 -07:00
2026-08-09 16:44:25 -07:00
2026-07-30 05:22:50 -07:00
2026-08-02 18:06:46 -07:00
2026-07-13 00:36:02 -07:00
2026-08-10 06:42:37 -07:00
2026-07-07 03:25:44 +01:00
2026-08-01 11:57:20 -07:00
2026-08-01 11:57:20 -07:00
2026-08-11 02:06:26 +05:30
2026-08-10 06:42:37 -07:00
2026-07-30 01:09:56 +08:00
2026-07-31 16:20:34 -07:00
2026-07-27 05:44:16 -04:00
2026-08-11 05:41:48 -07:00
2026-08-11 05:41:48 -07:00
2026-08-11 06:50:22 -07:00
2026-08-11 06:50:22 -07:00
2026-07-25 06:51:49 -07:00
2026-07-31 14:38:21 -07:00
2026-08-04 20:51:32 -07:00
2026-07-27 05:44:16 -04:00
2026-07-13 15:09:26 -07:00
2026-07-13 15:09:26 -07:00
2026-07-18 07:01:38 +01:00
2026-07-22 19:10:02 -04:00
2026-08-09 02:52:06 -07:00
2026-08-09 16:44:25 -07:00
2026-07-27 20:10:35 -04:00
2026-08-12 08:10:17 +08:00
2026-07-27 20:10:35 -04:00
2026-08-11 12:07:43 -07:00
2026-08-09 08:48:48 -07:00
2026-08-09 08:48:48 -07:00
2026-08-11 21:51:35 +07:00
2026-08-11 21:51:35 +07:00
2026-08-09 07:56:15 -07:00
2026-08-09 07:56:15 -07:00
2026-07-13 02:34:31 -07:00
2026-07-19 07:35:45 -07:00
2026-07-19 07:35:45 -07:00