Abhinav
6f647caa9b
Support asynchronous command hooks ( #37533 )
...
## Why
Hook configurations can mark command handlers as asynchronous, but Codex previously skipped those handlers outside `SessionEnd`.
## What changed
- Run asynchronous command hooks in the background with a per-session concurrency limit, while keeping `SessionEnd` hooks synchronous.
- Prevent asynchronous hooks from blocking, stopping, rewriting, or otherwise controlling the operation that launched them.
- Deliver warnings and additional context at safe turn boundaries: inject results into an active turn after sampling, or buffer them ahead of the next user prompt when the session is idle.
- Preserve in-flight hooks across configuration reloads, scope spilled output to the thread, and abort outstanding work during session shutdown.
## Testing
Add unit and integration coverage for background scheduling, concurrency, output parsing, active and idle result delivery, configuration reloads, and shutdown cleanup.
GitOrigin-RevId: 8094552e4afe7b47b09a61bb575bb20f4e491d8d
2026-08-08 04:24:12 +00:00
..
2026-08-07 14:08:13 +00:00
2026-07-06 14:29:19 -07:00
2026-08-07 23:43:14 +00:00
2026-08-07 21:04:16 +00:00
2026-08-07 14:08:13 +00:00
2026-08-08 00:59:39 +00:00
2026-08-07 23:49:12 +00:00
2026-06-24 21:08:39 -07:00
2026-08-07 21:04:16 +00:00
2026-07-22 19:43:35 +00:00
2026-07-30 16:30:32 +00:00
2026-08-08 04:24:12 +00:00
2026-08-07 18:38:24 +00:00
2026-08-07 18:38:24 +00:00
2026-08-08 04:24:12 +00:00
2026-08-08 00:59:39 +00:00
2026-07-28 23:49:37 +00:00
2026-07-15 03:27:16 +00:00
2026-08-07 09:50:43 +00:00
2026-08-07 09:50:43 +00:00
2026-06-23 00:02:33 +00:00
2026-08-05 06:38:57 +00:00
2026-07-22 21:00:01 +00:00
2026-06-22 23:56:16 -07:00
2026-08-07 14:08:13 +00:00
2026-08-07 00:58:54 +00:00
2026-08-04 15:32:31 +00:00
2026-08-04 15:23:43 +00:00
2026-08-07 11:30:17 +00:00
2026-07-23 19:32:26 +00:00
2026-08-05 18:19:22 +00:00
2026-07-22 22:50:13 +00:00
2026-07-22 22:50:13 +00:00
2026-08-07 18:33:46 +00:00
2026-08-04 19:33:18 +00:00
2026-08-04 22:07:56 +00:00
2026-07-30 16:44:18 +00:00
2026-08-04 22:07:56 +00:00
2026-08-07 14:08:13 +00:00
2026-08-07 23:43:14 +00:00
2026-08-07 23:43:14 +00:00
2026-06-24 22:17:43 -07:00
2026-07-06 11:20:32 -07:00
2026-07-06 11:20:32 -07:00
2026-08-05 05:30:51 +00:00
2026-08-04 00:51:53 +00:00
2026-08-03 21:37:17 +00:00
2026-06-25 19:00:23 +00:00
2026-06-25 19:00:23 +00:00
2026-08-08 00:59:39 +00:00
2026-07-21 19:17:18 +00:00
2026-08-08 00:59:39 +00:00
2026-07-30 16:30:32 +00:00
2026-07-30 19:23:33 +00:00
2026-08-05 20:23:35 +00:00
2026-08-08 04:24:12 +00:00
2026-08-06 03:15:08 +00:00
2026-08-06 03:15:08 +00:00
2026-08-07 21:04:16 +00:00
2026-08-05 05:30:51 +00:00
2026-08-07 21:36:33 +00:00
2026-08-08 04:24:12 +00:00
2026-08-07 23:43:14 +00:00
2026-08-06 13:37:07 +00:00
2026-08-06 13:37:07 +00:00
2026-08-05 21:45:33 +00:00
2026-08-05 04:07:59 +00:00
2026-07-06 14:51:34 -07:00
2026-07-20 13:45:29 +00:00
2026-07-30 16:44:18 +00:00
2026-07-29 18:37:22 +00:00
2026-07-28 05:26:16 +00:00
2026-07-22 19:43:35 +00:00
2026-08-01 01:17:26 +00:00
2026-08-07 22:41:20 +00:00
2026-07-23 19:32:26 +00:00
2026-08-07 18:33:46 +00:00
2026-08-03 09:46:38 +00:00
2026-07-23 19:19:35 +00:00
2026-08-03 12:03:33 +00:00
2026-08-03 12:03:33 +00:00
2026-07-21 19:17:18 +00:00
2026-06-16 14:34:54 +02:00
2026-06-16 14:34:54 +02:00
2026-07-23 18:22:41 +00:00
2026-08-07 14:08:13 +00:00
2026-07-20 08:29:12 +00:00
2026-08-05 05:30:51 +00:00
2026-06-15 08:18:13 -07:00
2026-06-15 08:18:13 -07:00
2026-08-07 21:36:33 +00:00
2026-06-03 10:41:41 -07:00
2026-07-31 17:24:33 +00:00
2026-07-28 23:49:37 +00:00
2026-08-04 15:23:43 +00:00
2026-08-07 11:30:17 +00:00
2026-08-07 13:54:24 +00:00
2026-07-29 15:41:39 +00:00
2026-07-29 15:41:39 +00:00
2026-07-22 02:19:45 +00:00
2026-07-22 02:19:45 +00:00
2026-08-07 22:41:20 +00:00
2026-08-07 22:41:20 +00:00
2026-07-28 23:49:37 +00:00
2026-07-25 16:06:54 +00:00
2026-08-06 03:11:42 +00:00
2026-06-16 22:17:24 -07:00
2026-07-20 13:45:29 +00:00
2026-07-20 13:45:29 +00:00
2026-07-21 21:06:04 +00:00
2026-07-21 21:06:04 +00:00