Michael Suchacz
91c7232d97
feat: add chat suffix messages, idle failure, and content update support ( #27428 )
...
Adds generic chat state and query capabilities that the lifecycle hooks
integration (#27429 ) builds on. Part of the lifecycle hooks stack
(#27401 , #27429 , #27430 ).
- `chatstate`: `EditMessage` accepts caller-provided suffix messages
inserted after the replacement in the same transaction, transitions can
carry a typed error kind, and `FinishError` is also allowed from waiting
chats so admission-time failures can park an idle chat in error.
- `chatstate`: `ValidateToolResults` holds the submitted-tool-result
rules (duplicate, invalid JSON, missing, unexpected) in one place, so
`CompleteRequiresAction` and API-level prechecks reject the same
payloads with the same typed causes.
- `database`: `InsertChat` accepts an optional caller-provided ID.
No hook-specific state or behavior is introduced here; these primitives
are usable by any caller.
An earlier revision added a message-content rewrite primitive so a
`pre_tool_use` override could update an already-committed tool call.
Message content is immutable by design, and @hugodutka pushed back on
changing that. The rewrite is gone: #27429 now dispatches the hook
before the assistant message is stored, so the stored input is the one
that runs and nothing needs updating.
> This PR was written by Mux, an AI coding agent, on Mike's behalf.
2026-07-29 13:16:29 +02:00
..
2026-07-28 09:58:33 -06:00
2026-07-27 23:45:22 +02:00
2026-07-27 17:43:59 +02:00
2026-07-28 09:22:58 +01:00
2026-07-08 15:32:17 +02:00
2026-06-16 09:01:43 +00:00
2026-07-29 09:16:37 +01:00
2026-03-02 16:02:01 +01:00
2026-07-28 16:59:33 -07:00
2026-06-23 11:37:33 -05:00
2026-07-01 21:24:42 -05:00
2026-06-26 07:24:21 -04:00
2026-06-25 15:41:09 -06:00
2026-03-13 00:22:55 +11:00
2026-07-28 12:13:58 -07:00
2026-04-03 15:47:26 -05:00
2026-07-13 11:00:02 -07:00
2026-07-29 13:16:29 +02:00
2026-02-19 09:02:19 +00:00
2026-05-21 09:19:29 -06:00
2026-07-15 12:16:25 -08:00
2026-04-28 13:06:45 -07:00
2026-07-23 14:55:34 -07:00
2026-07-23 11:56:07 -06:00
2026-06-24 14:27:23 -05:00
2026-03-19 21:51:26 +00:00
2026-07-28 16:59:33 -07:00
2026-07-27 17:02:28 -04:00
2026-07-28 16:59:33 -07:00
2026-07-07 09:18:30 -07:00
2026-04-02 23:51:02 +02:00
2026-06-17 13:10:53 +02:00
2026-07-15 12:16:25 -08:00
2026-07-20 10:30:02 +01:00
2026-07-07 00:20:54 +10:00
2026-07-27 20:43:57 -05:00
2026-06-24 12:32:46 +01:00
2026-06-23 17:32:47 -05:00
2026-07-16 15:21:57 +01:00
2026-05-07 17:10:50 +01:00
2026-07-28 09:58:33 -06:00
2026-07-15 14:05:18 -04:00
2026-05-21 09:19:29 -06:00
2026-07-09 14:02:18 +00:00
2026-03-18 09:30:22 -05:00
2026-06-10 02:18:44 -05:00
2026-07-28 19:05:59 +03:00
2026-06-17 00:22:41 +10:00
2026-07-28 15:30:12 -05:00
2026-06-05 15:01:45 -05:00
2026-06-25 15:41:09 -06:00
2026-05-21 09:19:29 -06:00
2026-07-07 09:18:30 -07:00
2026-07-07 09:18:30 -07:00
2026-07-29 13:16:29 +02:00
2026-03-12 18:07:52 +02:00
2026-07-01 15:59:55 +03:00
2026-07-06 23:00:09 +01:00
2026-07-01 20:44:15 +00:00
2026-07-06 23:00:09 +01:00
2026-07-06 23:00:09 +01:00
2026-05-27 11:58:43 +02:00
2026-07-06 23:00:09 +01:00
2026-07-06 23:00:09 +01:00
2026-05-25 18:04:12 +02:00
2026-07-28 09:22:58 +01:00
2026-07-15 12:16:25 -08:00
2026-07-14 13:39:58 -04:00
2026-04-01 09:54:59 -04:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-05-28 18:37:57 +01:00
2026-06-16 09:01:43 +00:00
2026-05-05 02:54:03 +05:00
2026-07-07 10:42:01 +00:00
2026-05-12 22:13:55 +10:00
2026-07-01 20:15:03 +01:00
2026-07-15 17:07:57 -07:00
2026-07-28 16:59:33 -07:00
2026-07-14 12:29:38 -07:00
2026-07-14 12:29:38 -07:00
2026-03-13 14:09:39 +00:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-07-06 13:15:58 +01:00
2026-07-06 13:15:58 +01:00
2026-06-12 13:03:45 +00:00
2026-07-27 10:05:05 +01:00
2026-07-29 07:17:42 +00:00
2026-07-27 10:05:05 +01:00
2026-05-05 02:54:03 +05:00
2026-06-22 19:26:34 -06:00
2026-07-15 12:16:25 -08:00
2026-07-23 11:56:07 -06:00
2026-06-02 10:11:49 -07:00
2026-06-02 10:11:49 -07:00
2026-06-02 08:36:01 -06:00
2026-07-06 13:15:58 +01:00
2026-07-06 13:15:58 +01:00
2026-03-23 19:54:43 +00:00
2026-05-05 02:54:03 +05:00
2026-03-04 18:01:56 -08:00
2026-05-05 02:54:03 +05:00
2026-04-22 12:34:17 +02:00
2026-05-03 11:31:48 -04:00
2026-07-20 00:14:03 +02:00
2026-07-20 00:14:03 +02:00
2026-04-07 12:25:32 -06:00
2026-05-05 02:54:03 +05:00
2026-02-13 08:19:07 -06:00
2026-05-05 02:54:03 +05:00
2026-07-28 16:59:33 -07:00
2026-07-28 16:59:33 -07:00
2026-07-28 16:59:33 -07:00
2026-07-28 16:59:33 -07:00
2026-07-28 16:59:33 -07:00
2026-07-28 16:59:33 -07:00
2026-05-05 02:54:03 +05:00
2026-05-21 09:19:29 -06:00
2026-06-03 10:46:07 +01:00
2026-02-19 09:02:19 +00:00
2026-05-05 02:54:03 +05:00
2026-07-14 13:39:58 -04:00
2026-06-03 10:46:07 +01:00
2026-04-10 09:50:11 -05:00
2026-07-14 13:39:58 -04:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-05-11 08:41:17 -06:00
2026-06-23 23:06:44 +10:00
2026-06-15 11:07:16 -04:00
2026-07-27 16:10:40 -04:00
2026-07-27 16:10:40 -04:00
2026-06-23 17:32:47 -05:00
2026-06-23 17:32:47 -05:00
2026-07-15 14:23:44 -07:00
2026-07-15 14:23:44 -07:00
2026-07-23 16:39:53 -06:00
2026-07-23 16:39:53 -06:00
2026-05-05 02:54:03 +05:00
2026-06-04 14:37:19 -04:00
2026-07-28 21:05:50 +10:00
2026-07-23 11:56:07 -06:00
2026-07-28 21:05:50 +10:00
2026-07-28 21:05:50 +10:00
2026-07-28 09:58:33 -06:00
2026-07-28 09:58:33 -06:00
2026-07-28 09:58:33 -06:00
2026-07-28 09:58:33 -06:00
2026-05-20 19:50:50 +02:00
2026-05-20 00:09:09 +02:00
2026-04-15 11:31:43 +02:00
2026-04-26 14:49:10 -07:00
2026-05-05 02:54:03 +05:00
2026-05-05 02:54:03 +05:00
2026-07-01 15:59:55 +03:00
2026-07-14 13:50:25 +01:00
2026-07-28 15:30:12 -05:00
2026-07-28 15:30:12 -05:00
2026-05-11 14:27:40 -05:00
2026-03-12 18:07:52 +02:00
2026-07-01 20:15:03 +01:00
2026-07-28 13:20:59 -07:00
2026-05-05 02:54:03 +05:00
2026-07-07 09:18:30 -07:00
2026-06-25 15:47:35 -07:00
2026-07-07 09:18:30 -07:00
2026-05-05 02:54:03 +05:00
2026-05-18 08:33:29 -04:00
2026-05-13 14:14:07 +00:00
2026-05-11 11:03:38 +02:00
2026-07-15 14:23:44 -07:00
2026-07-23 16:39:53 -06:00