Skip to content

Commit 1924500

Browse files
authored
[app-server] populate thread>turns>items on thread/resume (#6848)
This PR allows clients to render historical messages when resuming a thread via `thread/resume` by reading from the list of `EventMsg` payloads loaded from the rollout, and then transforming them into Turns and ThreadItems to be returned on the `Thread` object. This is implemented by leveraging `SessionConfiguredNotification` which returns this list of `EventMsg` objects when resuming a conversation, and then applying a stateful `ThreadHistoryBuilder` that parses from this EventMsg log and transforms it into Turns and ThreadItems. Note that we only persist a subset of `EventMsg`s in a rollout as defined in `policy.rs`, so we lose fidelity whenever we resume a thread compared to when we streamed the thread's turns originally. However, this behavior is at parity with the legacy API.
1 parent cfc57e1 commit 1924500

File tree

6 files changed

+496
-5
lines changed

6 files changed

+496
-5
lines changed

codex-rs/app-server-protocol/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ pub use export::generate_ts;
77
pub use export::generate_types;
88
pub use jsonrpc_lite::*;
99
pub use protocol::common::*;
10+
pub use protocol::thread_history::*;
1011
pub use protocol::v1::*;
1112
pub use protocol::v2::*;

codex-rs/app-server-protocol/src/protocol/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
// Exposes protocol pieces used by `lib.rs` via `pub use protocol::common::*;`.
33

44
pub mod common;
5+
pub mod thread_history;
56
pub mod v1;
67
pub mod v2;

0 commit comments

Comments
 (0)