Move sleep items to the extension-owned lifecycle path (#33159)

## What changed

- Define `SleepItem` in `codex-extension-items` and carry `clock.sleep` events through `TurnItem::Extension`.
- Preserve sleep persistence, thread-history reconstruction, and the app-server's `type: "sleep"` schema while reusing the extension-owned type.

## Testing

- Add serialization coverage for the `clock.sleep` extension wire shape and its protocol wrapper.
- Update sleep lifecycle and thread-history tests to exercise the extension-owned item.

GitOrigin-RevId: 34bb33ed9b90a09bf4744aafdb56e019c717a168
This commit is contained in:
pakrym-oai authored and copyberry committed 2026-07-14 21:01:54 +00:00
1 parent 83a4187837
commit 5d325ba223
41 files changed
+141 -55

No files matched your search

+5 -1
View File
@@ -1,5 +1,6 @@
use crate::protocol::EventMsg;
use crate::protocol::RolloutItem;
use codex_extension_items::ExtensionItem;
use codex_protocol::items::TurnItem;
use codex_protocol::models::ResponseItem;
use codex_protocol::protocol::ThreadHistoryMode;
@@ -89,7 +90,10 @@ pub fn should_persist_event_msg(ev: &EventMsg, history_mode: ThreadHistoryMode)
// Paginated rollouts store TurnItems.
// Legacy rollouts keep only items with no raw ResponseItem or legacy equivalent.
matches!(history_mode, ThreadHistoryMode::Paginated)
|| matches!(event.item, TurnItem::Plan(_) | TurnItem::Sleep(_))
|| matches!(
event.item,
TurnItem::Plan(_) | TurnItem::Extension(ExtensionItem::Sleep(_))
)
}
EventMsg::TokenCount(_)
| EventMsg::ThreadGoalUpdated(_)