Tamir Duberstein
c941572917
Honor response budgets when reading skill resources ( #40491 )
...
## Why
`skills.read` paginated resources against a fixed response limit, so a page could exceed a smaller tool-call response budget.
## What changed
- Size each serialized `skills.read` page to the current call's response budget, accounting for JSON escaping and UTF-8 boundaries.
- Cache one bounded executor-resource snapshot per thread so cursor continuations return consistent contents without rereading the file. Replace the snapshot when another resource is read, and reject stale cursors after a reread.
- Tie cached executor snapshots to the selected environment and sandbox context without keeping the environment alive.
## Testing
- Cover budget-constrained reads, escaped and multibyte contents, multi-page reconstruction, changed resources, snapshot eviction, and expired turn-scoped access.
GitOrigin-RevId: e515935b82771b3f29b3fb91ea7a7a72e19a65ee
2026-08-24 23:00:57 +00:00
..
2026-08-21 03:31:56 +00:00
2026-08-22 00:42:19 +00:00
2026-08-23 06:10:44 +00:00
2026-08-24 20:47:10 +00:00
2026-08-20 17:46:05 +00:00
2026-08-24 18:22:13 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-24 19:52:27 +00:00
2026-08-13 00:00:16 +00:00
2026-08-24 20:25:26 +00:00
2026-08-17 11:44:56 +00:00
2026-07-09 03:40:08 +00:00
2026-08-24 18:22:13 +00:00
2026-08-24 18:22:13 +00:00
2026-08-21 20:15:23 +00:00
2026-08-13 00:00:16 +00:00
2026-08-23 17:02:21 +00:00
2026-08-20 08:10:08 +00:00
2026-08-18 07:32:03 +00:00
2026-08-20 17:46:05 +00:00
2026-08-23 21:29:11 +00:00
2026-08-13 00:00:16 +00:00
2026-08-23 20:08:40 +00:00
2026-08-24 18:22:13 +00:00
2026-08-23 06:10:44 +00:00
2026-08-20 18:29:35 +00:00
2026-08-20 18:29:35 +00:00
2026-08-20 17:46:05 +00:00
2026-06-18 14:09:38 +02:00
2026-08-17 21:49:30 +00:00
2026-08-24 21:39:48 +00:00
2026-08-20 05:29:12 +00:00
2026-08-21 21:12:43 +00:00
2026-08-21 21:51:12 +00:00
2026-08-21 21:51:12 +00:00
2026-08-24 20:25:26 +00:00
2026-08-21 21:22:35 +00:00
2026-08-24 12:45:35 +00:00
2026-08-18 22:10:43 +00:00
2026-08-20 18:29:35 +00:00
2026-08-23 06:10:44 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-06-15 21:53:47 -07:00
2026-08-13 00:00:16 +00:00
2026-08-21 21:17:42 +00:00
2026-08-04 15:23:43 +00:00
2026-08-20 08:10:08 +00:00
2026-08-22 05:54:43 +00:00
2026-08-19 01:26:16 +00:00
2026-08-20 18:17:28 +00:00
2026-08-23 04:41:11 +00:00
2026-05-18 21:03:51 -07:00
2026-08-13 00:00:16 +00:00
2026-08-23 20:14:26 +00:00
2026-08-17 10:01:59 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-14 18:26:20 +00:00
2026-08-20 11:57:32 +00:00
2026-08-20 18:29:35 +00:00
2026-08-21 17:29:41 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 19:09:04 +00:00
2026-06-08 13:55:15 -07:00
2026-08-20 17:46:05 +00:00
2026-08-17 11:44:56 +00:00
2026-08-17 11:44:56 +00:00
2026-08-24 14:37:48 +00:00
2026-07-14 10:37:23 +00:00
2026-08-14 19:07:15 +00:00
2026-07-22 20:23:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-24 03:34:15 +00:00
2026-08-01 01:17:26 +00:00
2026-08-21 17:29:41 +00:00
2026-08-20 17:46:05 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 18:29:35 +00:00
2026-08-20 17:54:42 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-23 23:52:07 +00:00
2026-07-22 00:50:28 +00:00
2026-08-18 05:46:08 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 23:13:37 +00:00
2026-08-20 08:10:08 +00:00
2026-08-20 18:29:35 +00:00
2026-08-23 06:10:44 +00:00
2026-07-23 19:19:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 17:46:05 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 05:42:20 +00:00
2026-08-21 15:24:56 +00:00
2026-08-20 17:46:05 +00:00
2026-08-24 23:00:57 +00:00
2026-08-23 06:10:44 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-24 18:15:04 +00:00
2026-08-23 23:38:12 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 19:19:41 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-13 19:25:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-24 22:51:36 +00:00
2026-08-20 19:43:54 +00:00
2026-08-21 14:04:33 +00:00
2026-08-10 19:26:52 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 17:46:05 +00:00
2026-08-23 06:10:44 +00:00
2026-08-14 01:23:59 +00:00
2026-08-13 00:00:16 +00:00
2026-08-21 03:31:56 +00:00
2026-08-24 17:29:21 +00:00
2026-08-20 18:29:35 +00:00
2026-08-20 06:29:32 +00:00