mirror of
https://github.com/openai/codex.git
synced 2026-09-20 12:47:38 +00:00
## Why Attachment mutations must coordinate with thread deletion so queued requests cannot use metadata belonging to a deleted thread. ## What changed - Add typed `ThreadStore` operations for idempotent attachment creation, paginated listing, and removal, with capability detection and unsupported defaults. - Implement attachment operations for SQLite-backed `LocalThreadStore`, including unloaded threads, and preserve invalid-request and missing-thread errors. - Coordinate attachment mutations with lifecycle locks and move SQLite cleanup into thread-store deletion. Remove state rows only after rollout deletion, preserving retries after cleanup failures. - Give the in-memory store ownership of its associated SQLite cleanup and remove duplicate cleanup from the app-server. ## Testing Add coverage for attachment pagination and idempotency, unsupported stores, error categories, lifecycle exclusion, mutations queued behind single and batch deletion, cleanup failure retries, and in-memory state cleanup. Extend the app-server descendant deletion test to verify SQLite rows are removed. GitOrigin-RevId: f0157538c7c5c2ee1362ce40eac157101c5d4505
115 lines
4.0 KiB
Rust
115 lines
4.0 KiB
Rust
//! Storage-neutral thread persistence interfaces.
|
|
//!
|
|
//! Application code should treat [`codex_protocol::ThreadId`] as the only durable thread handle.
|
|
//! Implementations are responsible for resolving that id to local rollout files, RPC requests, or
|
|
//! any other backing store.
|
|
|
|
mod error;
|
|
mod in_memory;
|
|
mod live_thread;
|
|
mod local;
|
|
mod projects;
|
|
mod queue_store;
|
|
mod store;
|
|
mod thread_attachments;
|
|
mod thread_metadata_sync;
|
|
mod thread_sections;
|
|
mod types;
|
|
|
|
pub use codex_state::AddThreadAttachmentOutcome;
|
|
pub use codex_state::MAX_QUEUE_ITEMS;
|
|
pub use codex_state::MAX_THREAD_ATTACHMENT_PAYLOAD_BYTES;
|
|
pub use codex_state::ProjectSortKey;
|
|
pub use codex_state::QueuedUserSubmissionRecord;
|
|
pub use codex_state::RemoveThreadAttachmentOutcome;
|
|
pub use codex_state::ThreadAttachment;
|
|
pub use codex_state::ThreadAttachmentPage;
|
|
pub use error::ThreadStoreError;
|
|
pub use error::ThreadStoreResult;
|
|
pub use in_memory::InMemoryThreadStore;
|
|
pub use in_memory::InMemoryThreadStoreCalls;
|
|
pub use live_thread::LiveThread;
|
|
pub use live_thread::LiveThreadInitGuard;
|
|
pub use local::LocalThreadStore;
|
|
pub use local::LocalThreadStoreConfig;
|
|
pub use local::RolloutMigrationFailureReason;
|
|
pub use local::RolloutMigrationMode;
|
|
pub use local::RolloutMigrationOptions;
|
|
pub use local::RolloutMigrationOutcome;
|
|
pub use local::RolloutMigrationProgress;
|
|
pub use local::RolloutMigrationReport;
|
|
pub use local::RolloutMigrationStatus;
|
|
pub use projects::CreateProjectParams;
|
|
pub use projects::CreatedProject;
|
|
pub use projects::DeletedProject;
|
|
pub use projects::ListProjectsParams;
|
|
pub use projects::MoveProjectParams;
|
|
pub use projects::ProjectMoveOutcome;
|
|
pub use projects::StoredProject;
|
|
pub use projects::StoredProjectRoot;
|
|
pub use projects::StoredProjectsPage;
|
|
pub use projects::UpdateProjectParams;
|
|
pub use projects::UpdatedProject;
|
|
pub use queue_store::LocalQueueStore;
|
|
pub use queue_store::QueueStore;
|
|
pub use store::PersistContext;
|
|
pub use store::ThreadStore;
|
|
pub use store::ThreadStoreFuture;
|
|
pub use thread_attachments::AddThreadAttachmentParams;
|
|
pub use thread_attachments::ListThreadAttachmentsParams;
|
|
pub use thread_attachments::RemoveThreadAttachmentParams;
|
|
pub use thread_sections::CreateThreadSectionParams;
|
|
pub use thread_sections::DeleteThreadSectionParams;
|
|
pub use thread_sections::ListThreadSectionsParams;
|
|
pub use thread_sections::RenameThreadSectionParams;
|
|
pub use thread_sections::StoredThreadSection;
|
|
pub use thread_sections::StoredThreadSectionsPage;
|
|
pub use types::AppendThreadItemsParams;
|
|
pub use types::ArchiveThreadParams;
|
|
pub use types::ArchiveThreadsParams;
|
|
pub use types::ClearableField;
|
|
pub use types::CreateThreadParams;
|
|
pub use types::DeleteThreadParams;
|
|
pub use types::DeleteThreadsParams;
|
|
pub use types::ExtraConfig;
|
|
pub use types::ForkBoundary;
|
|
pub use types::GitInfoPatch;
|
|
pub use types::ItemPage;
|
|
pub use types::ItemSortKey;
|
|
pub use types::ListItemsParams;
|
|
pub use types::ListThreadsParams;
|
|
pub use types::ListTimelineParams;
|
|
pub use types::ListTurnsParams;
|
|
pub use types::LoadThreadHistoryParams;
|
|
pub use types::MoveThreadToSectionParams;
|
|
pub use types::PrepareForkParams;
|
|
pub use types::PreparedFork;
|
|
pub use types::ReadThreadByRolloutPathParams;
|
|
pub use types::ReadThreadParams;
|
|
pub use types::ResumeThreadParams;
|
|
pub use types::RevertThreadParams;
|
|
pub use types::SearchTextRange;
|
|
pub use types::SearchThreadOccurrencesParams;
|
|
pub use types::SearchThreadsParams;
|
|
pub use types::SortDirection;
|
|
pub use types::StoredModelContext;
|
|
pub use types::StoredThread;
|
|
pub use types::StoredThreadHistory;
|
|
pub use types::StoredThreadItem;
|
|
pub use types::StoredThreadOccurrence;
|
|
pub use types::StoredThreadSearchResult;
|
|
pub use types::StoredTurn;
|
|
pub use types::StoredTurnError;
|
|
pub use types::StoredTurnItemsView;
|
|
pub use types::StoredTurnStatus;
|
|
pub use types::ThreadMetadataPatch;
|
|
pub use types::ThreadOccurrenceSearchPage;
|
|
pub use types::ThreadPage;
|
|
pub use types::ThreadPersistenceMetadata;
|
|
pub use types::ThreadRelationFilter;
|
|
pub use types::ThreadSearchPage;
|
|
pub use types::ThreadSortKey;
|
|
pub use types::TimelinePage;
|
|
pub use types::TurnPage;
|
|
pub use types::UpdateThreadMetadataParams;
|