mirror of
https://github.com/openai/codex.git
synced 2026-05-23 12:34:25 +00:00
Begin migrating the thread write codepaths to ThreadStore. This starts using ThreadStore inside of core session code, not only in the app server code. Rework the interfaces around thread recording/persistence. We're left with the following: * `ThreadManager`: owns the process-level registry of loaded threads and handles cross-thread orchestration: start, resume, fork, lookup, remove, and route ops to running CodexThreads. * `CodexThread`: represents one loaded/running thread from the outside. It is the handle app-server and callers use to submit ops, inspect session metadata, and shut the thread down. * `LiveThread`: session-owned persistence lifecycle handle for one active thread. Core session code uses it to append rollout items, materialize lazy persistence, flush, shutdown, discard init-failed writers, and load that thread’s persisted history. * `ThreadStore`: storage backend abstraction. It answers “how are threads persisted, read, listed, updated, archived?” Local and remote implementations live behind this trait. * `LocalThreadStore`: local ThreadStore implementation. It owns the file/sqlite-specific details and keeps RolloutRecorder as a local implementation detail. This is a few too many Thread abstractions for my liking, but they do all represent different concepts / needs / layers. Migration note: in places where the core code explicitly requires a path, rather than a thread ID, throw an error if we're running with a remote store. Cover the new local live-writer lifecycle with focused tests and preserve app-server thread-start behavior, including ephemeral pathless sessions.
38 lines
1.2 KiB
Rust
38 lines
1.2 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 live_thread;
|
|
mod local;
|
|
mod remote;
|
|
mod store;
|
|
mod types;
|
|
|
|
pub use error::ThreadStoreError;
|
|
pub use error::ThreadStoreResult;
|
|
pub use live_thread::LiveThread;
|
|
pub use live_thread::LiveThreadInitGuard;
|
|
pub use local::LocalThreadStore;
|
|
pub use remote::RemoteThreadStore;
|
|
pub use store::ThreadStore;
|
|
pub use types::AppendThreadItemsParams;
|
|
pub use types::ArchiveThreadParams;
|
|
pub use types::CreateThreadParams;
|
|
pub use types::GitInfoPatch;
|
|
pub use types::ListThreadsParams;
|
|
pub use types::LoadThreadHistoryParams;
|
|
pub use types::OptionalStringPatch;
|
|
pub use types::ReadThreadParams;
|
|
pub use types::ResumeThreadParams;
|
|
pub use types::SortDirection;
|
|
pub use types::StoredThread;
|
|
pub use types::StoredThreadHistory;
|
|
pub use types::ThreadEventPersistenceMode;
|
|
pub use types::ThreadMetadataPatch;
|
|
pub use types::ThreadPage;
|
|
pub use types::ThreadSortKey;
|
|
pub use types::UpdateThreadMetadataParams;
|