joeytrasatti-openai
589874be81
Add transactional thread attachment mutations to the state runtime ( #43949 )
...
## What changed
- Replace the `ThreadArtifact` model and related exports with attachment terminology.
- Add `StateRuntime::add_thread_attachment` and `remove_thread_attachment` using SQLite transactions. Repeated additions for the same thread, attachment type, and identity key return the existing record without changing its payload or creation time.
- Enforce limits of 100 attachments per thread, 64 KiB per serialized payload, and 256 bytes each for nonblank attachment types and identity keys. Removal returns the deleted record or `NotFound` and frees capacity immediately. Both mutations reject unknown threads.
## Testing
Add tests for idempotency, thread isolation, removal outcomes, capacity reuse, invalid inputs, unknown threads, and concurrent additions creating exactly one record.
GitOrigin-RevId: a68fe5076832f071524f1b4fc87d08b96ac270b7
2026-09-09 00:18:35 +00:00
..
2026-07-29 13:53:15 +00:00
2026-09-05 18:06:26 +00:00
2026-07-23 19:19:35 +00:00
2026-07-21 22:44:43 +00:00
2026-08-24 22:40:35 +00:00
2026-09-07 23:38:35 +00:00
2026-07-29 13:53:15 +00:00
2026-09-08 23:45:10 +00:00
2026-09-07 19:34:23 +00:00
2026-09-07 19:51:53 +00:00
2026-09-08 21:48:53 +00:00
2026-07-30 19:47:30 +00:00
2026-09-03 06:02:25 +00:00
2026-09-07 00:00:23 +00:00
2026-08-20 08:10:08 +00:00
2026-08-31 13:44:12 +00:00
2026-08-31 13:44:12 +00:00
2026-09-03 23:20:54 +00:00
2026-08-24 21:39:48 +00:00
2026-09-02 21:50:51 +00:00
2026-09-07 16:55:06 +00:00
2026-08-14 05:03:39 +00:00
2026-08-17 22:37:14 +00:00
2026-09-09 00:10:54 +00:00
2026-09-02 20:07:11 +00:00
2026-09-03 01:46:37 +00:00
2026-08-28 19:44:50 +00:00
2026-08-29 02:52:58 +00:00
2026-09-01 17:17:45 +00:00
2026-09-01 01:00:50 +00:00
2026-09-08 17:51:40 +00:00
2026-09-07 09:24:03 +00:00
2026-08-18 23:47:00 +00:00
2026-08-13 23:13:37 +00:00
2026-08-25 21:20:51 +00:00
2026-09-08 19:56:25 +00:00
2026-09-05 01:25:06 +00:00
2026-09-08 14:23:23 +00:00
2026-08-31 21:27:51 +00:00
2026-09-08 19:56:25 +00:00
2026-09-04 23:56:25 +00:00
2026-09-08 23:45:10 +00:00
2026-09-03 23:20:54 +00:00
2026-09-02 18:34:27 +00:00
2026-08-07 11:30:17 +00:00
2026-09-05 12:17:32 +00:00
2026-09-07 17:09:04 +00:00
2026-09-08 21:11:43 +00:00
2026-09-07 16:55:06 +00:00
2026-08-17 04:37:50 +00:00
2026-09-08 23:45:10 +00:00
2026-09-02 15:07:11 +00:00
2026-09-05 21:56:43 +00:00
2026-09-04 18:02:08 +00:00
2026-07-31 21:37:56 +00:00
2026-08-27 20:44:47 +00:00
2026-09-06 20:52:29 +00:00
2026-09-08 12:17:28 +00:00
2026-09-07 13:58:57 +00:00
2026-09-08 18:04:48 +00:00
2026-09-08 19:40:43 +00:00
2026-09-01 15:12:53 +00:00
2026-08-26 23:41:18 +00:00
2026-07-22 04:17:34 +00:00
2026-09-07 17:26:10 +00:00
2026-09-08 14:23:23 +00:00
2026-07-17 20:52:42 +00:00
2026-09-08 20:37:30 +00:00
2026-09-03 21:21:09 +00:00
2026-09-08 20:37:30 +00:00
2026-09-08 16:38:25 +00:00
2026-09-08 20:59:50 +00:00
2026-07-30 04:26:36 +00:00
2026-09-04 23:06:00 +00:00
2026-09-01 17:17:45 +00:00
2026-09-05 12:08:18 +00:00
2026-08-25 15:50:19 +00:00
2026-09-08 23:45:10 +00:00
2026-09-07 20:25:30 +00:00
2026-08-26 17:45:42 +00:00
2026-08-21 16:45:05 +00:00
2026-09-09 00:03:41 +00:00
2026-09-08 16:24:38 +00:00
2026-08-28 01:14:02 +00:00
2026-09-04 20:09:04 +00:00
2026-08-10 15:43:10 +00:00
2026-09-08 20:59:50 +00:00
2026-08-08 16:58:26 +00:00
2026-09-05 05:21:42 +00:00
2026-09-09 00:18:35 +00:00
2026-09-02 18:34:27 +00:00
2026-09-08 04:35:21 +00:00
2026-09-08 16:24:38 +00:00
2026-09-02 02:09:35 +00:00
2026-09-08 23:37:26 +00:00
2026-09-02 18:42:06 +00:00
2026-09-08 00:13:28 +00:00
2026-09-08 16:24:38 +00:00
2026-07-22 16:18:08 +00:00
2026-09-08 04:55:29 +00:00
2026-09-03 20:01:07 +00:00
2026-09-08 22:13:38 +00:00
2026-09-02 22:19:51 +00:00
2026-08-15 14:31:04 +00:00
2026-09-08 23:37:26 +00:00
2026-09-08 21:19:02 +00:00
2026-09-08 20:37:30 +00:00
2026-09-07 18:52:37 +00:00
2026-07-28 20:49:22 +00:00
2026-07-11 03:27:51 +00:00
2026-07-29 13:53:15 +00:00
2026-09-04 05:07:02 +00:00