dhruvgupta-oai
5037919777
Add Luna Reserve usage fallback to the TUI ( #42372 )
...
## Why
When ordinary included usage is exhausted, eligible users need a way to keep working with the backend-provided Luna Reserve quota and return to their previous model once ordinary usage recovers.
## What changed
- Automatically switch eligible TUI tasks to Luna Reserve after an authoritative account usage read, preserving the prior model and reasoning effort per task.
- Restrict model selection while on Reserve to its supported reasoning levels, keep queued turns on the accepted model, and restore the saved model after a fresh read confirms recovery.
- Surface Reserve usage in the composer and `/status`, and expose `normalModelSlug` in app-server rate-limit snapshots so clients can use the associated model's display metadata without changing the request model.
- Poll account limits more frequently near exhaustion and retain compatibility with app servers that only accept the legacy null request parameters.
## Testing
- Added coverage for Reserve entry, queued-turn handling, task reconstruction, recovery authorization, account changes, model selection, usage rendering, and banner dismissal.
GitOrigin-RevId: 46a435e9531051f8cec3f6a46c4b9f7cfa479747
2026-09-02 21:50:51 +00:00
..
2026-09-02 21:50:51 +00:00
2026-09-02 04:06:44 +00:00
2026-09-02 04:20:38 +00:00
2026-08-31 00:20:06 +00:00
2026-09-02 21:50:51 +00:00
2026-09-02 21:50:51 +00:00
2026-08-30 13:42:42 +00:00
2026-08-31 18:34:10 +00:00
2026-08-25 20:51:34 +00:00
2026-09-02 21:50:51 +00:00
2026-08-17 16:34:21 +00:00
2026-08-29 06:05:28 +00:00
2026-09-02 03:35:41 +00:00
2026-09-02 03:35:41 +00:00
2026-09-01 19:51:05 +00:00
2026-09-02 04:20:38 +00:00
2026-09-01 00:12:22 +00:00
2026-08-17 16:58:24 +00:00
2026-08-20 05:49:49 +00:00
2026-08-17 19:59:22 +00:00
2026-08-14 16:33:28 +00:00
2026-09-02 03:35:41 +00:00
2026-09-02 21:50:51 +00:00
2026-09-02 18:03:55 +00:00
2026-08-24 20:04:52 +00:00
2026-08-24 20:04:52 +00:00
2026-08-25 12:20:41 +00:00
2026-09-02 18:34:27 +00:00
2026-08-17 21:49:30 +00:00
2026-09-02 04:06:44 +00:00
2026-07-21 14:25:18 +00:00
2026-07-15 01:07:29 +00:00
2026-09-02 21:50:51 +00:00
2026-07-22 23:45:45 +00:00
2026-06-15 19:25:54 -07:00
2026-09-02 21:50:51 +00:00
2026-09-02 04:20:38 +00:00
2026-08-26 21:39:05 +00:00
2026-08-25 03:08:33 +00:00
2026-08-31 00:20:06 +00:00
2026-09-02 21:50:51 +00:00
2026-08-04 16:53:33 +00:00
2026-09-02 21:50:51 +00:00
2026-08-18 00:31:51 +00:00
2026-08-20 06:57:00 +00:00
2026-08-17 21:06:34 +00:00
2026-08-30 13:42:42 +00:00
2026-09-02 04:20:38 +00:00
2026-09-02 01:50:51 +00:00
2026-09-01 17:37:47 +00:00
2026-08-31 21:36:49 +00:00
2026-09-02 04:20:38 +00:00
2026-08-31 21:36:49 +00:00
2026-08-16 03:14:17 +00:00
2026-08-16 03:14:17 +00:00
2026-08-04 16:53:33 +00:00
2026-08-21 19:23:26 +00:00
2026-07-29 03:50:00 +00:00
2026-06-12 17:14:27 -07:00
2026-08-13 04:08:23 +00:00
2026-08-13 04:08:23 +00:00
2026-08-24 20:04:52 +00:00
2026-08-01 17:43:03 +00:00
2026-09-01 21:30:27 +00:00
2026-09-02 03:35:41 +00:00
2026-09-02 04:20:38 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-07-29 14:01:31 +00:00
2026-08-24 21:39:48 +00:00
2026-09-02 04:20:38 +00:00
2026-09-02 04:20:38 +00:00
2026-08-25 18:27:42 +00:00
2026-06-26 19:27:31 +00:00
2026-06-26 19:27:31 +00:00
2026-09-01 19:51:05 +00:00
2026-09-01 19:51:05 +00:00
2026-07-19 16:50:54 +00:00
2026-06-08 17:02:36 -07:00
2026-08-24 20:04:52 +00:00
2026-08-27 23:10:10 +00:00
2026-09-02 21:50:51 +00:00
2026-08-25 20:51:34 +00:00
2026-08-17 17:10:16 +00:00
2026-08-25 10:17:03 +00:00
2026-08-05 20:44:03 +00:00
2026-08-17 22:44:37 +00:00
2026-08-14 20:30:30 +00:00
2026-09-01 00:12:22 +00:00
2026-09-02 15:07:11 +00:00
2026-09-02 04:20:38 +00:00
2026-09-02 04:20:38 +00:00
2026-07-29 13:53:15 +00:00
2026-09-02 04:20:38 +00:00
2026-08-19 02:45:45 +00:00
2026-08-19 02:45:45 +00:00
2026-08-21 19:23:26 +00:00
2026-08-25 17:17:01 +00:00
2026-08-17 22:44:37 +00:00
2026-08-19 02:45:45 +00:00
2026-08-14 20:59:34 +00:00
2026-08-20 07:25:40 +00:00
2026-09-02 04:20:38 +00:00
2026-06-18 15:06:23 -07:00
2026-08-17 17:10:16 +00:00
2026-07-20 15:44:37 +00:00
2026-08-25 21:03:11 +00:00
2026-08-16 05:59:34 +00:00
2026-09-02 04:20:38 +00:00
2026-06-10 11:24:29 -07:00
2026-09-02 04:20:38 +00:00
2026-09-01 04:33:38 +00:00
2026-08-14 20:38:52 +00:00
2026-08-14 20:38:52 +00:00
2026-09-02 18:03:55 +00:00
2026-08-22 05:54:43 +00:00
2026-08-24 02:46:56 +00:00
2026-08-24 02:46:56 +00:00
2026-09-02 02:09:35 +00:00
2026-08-25 20:56:03 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 22:05:48 +00:00
2026-08-25 12:20:41 +00:00
2026-08-25 12:20:41 +00:00
2026-06-05 17:23:45 -07:00
2026-08-13 00:30:08 +00:00
2026-06-10 17:55:49 -07:00
2026-07-29 14:01:31 +00:00
2026-09-02 04:20:38 +00:00
2026-08-29 06:05:28 +00:00
2026-08-04 19:05:45 +00:00
2026-08-15 17:30:13 +00:00
2026-08-25 20:51:34 +00:00
2026-07-06 16:33:13 -04:00
2026-08-20 07:25:40 +00:00
2026-08-25 20:51:34 +00:00
2026-09-01 15:12:53 +00:00
2026-08-25 20:51:34 +00:00
2026-06-12 09:26:08 -07:00
2026-06-12 09:26:08 -07:00
2026-09-01 15:12:53 +00:00
2026-08-30 00:42:00 +00:00
2026-07-29 14:01:31 +00:00
2026-09-02 16:49:45 +00:00
2026-06-11 18:16:39 -07:00
2026-06-22 04:25:07 -07:00
2026-06-22 04:25:07 -07:00
2026-07-29 14:01:31 +00:00