mirror of
https://github.com/openai/codex.git
synced 2026-11-08 20:40:33 +00:00
Persist resume metadata in compaction checkpoints (#47323)
## Why Compaction companion records do not represent all resume state, including the last started turn and previous turn settings. The selected multi-agent runtime also needs a persisted value when no companion turn context is present. ## What changed - Add optional `resume_metadata` to `CompactedItem`, recording the multi-agent version, last started turn ID, and previous turn settings. Preserve the distinction between absent metadata and explicitly empty values while retaining compatibility with older records. - Capture this metadata under the settings persistence lock alongside the compaction checkpoint. - Rewrite inherited metadata to use the child agent's runtime, and clear previous turn settings when the child must rebuild context. - Clear pending continuation state before delivering acceptance of standalone settings updates, while holding the persistence lock. ## Testing Add coverage for metadata round trips with empty values, legacy reader compatibility, checkpoint companion records, inherited fork metadata, and continuation invalidation while settings event delivery is blocked. GitOrigin-RevId: f30b7feaa7e2fdb5b65fc3c53b37fd7a7fe27903
This commit is contained in:
@@ -27,6 +27,7 @@ pub mod state_db;
|
||||
mod writer_lock;
|
||||
|
||||
pub use codex_history::CompactedItem;
|
||||
pub use codex_history::CompactionResumeMetadata;
|
||||
pub use codex_history::InitialHistory;
|
||||
pub use codex_history::ResponseItemEnvelope;
|
||||
pub use codex_history::ResumedHistory;
|
||||
|
||||
@@ -328,6 +328,7 @@ fn builder_from_items_falls_back_to_filename() {
|
||||
window_id: None,
|
||||
compaction_response_id: None,
|
||||
latest_token_usage_record: None,
|
||||
resume_metadata: None,
|
||||
})];
|
||||
|
||||
let builder = builder_from_items(items.as_slice(), path.as_path()).expect("builder");
|
||||
|
||||
Reference in New Issue
Block a user