diff --git a/codex-rs/core/src/lib.rs b/codex-rs/core/src/lib.rs index f73bef4051..e4f5709345 100644 --- a/codex-rs/core/src/lib.rs +++ b/codex-rs/core/src/lib.rs @@ -75,6 +75,7 @@ pub use rollout::find_conversation_path_by_id_str; pub use rollout::list::ConversationItem; pub use rollout::list::ConversationsPage; pub use rollout::list::Cursor; +mod state; mod user_notification; pub mod util; diff --git a/codex-rs/core/src/state/mod.rs b/codex-rs/core/src/state/mod.rs new file mode 100644 index 0000000000..d88b674ef0 --- /dev/null +++ b/codex-rs/core/src/state/mod.rs @@ -0,0 +1,9 @@ +//! Session/turn state module scaffolding. +//! +//! This module will encapsulate all mutable state for a Codex session. +//! It starts with lightweight placeholders to enable incremental refactors +//! without changing behaviour. + +mod session; +mod turn; + diff --git a/codex-rs/core/src/state/session.rs b/codex-rs/core/src/state/session.rs new file mode 100644 index 0000000000..7765728363 --- /dev/null +++ b/codex-rs/core/src/state/session.rs @@ -0,0 +1,12 @@ +//! Session-wide mutable state scaffolding. + +/// Placeholder for session-persistent state. +#[derive(Debug, Default)] +pub(crate) struct SessionState; + +impl SessionState { + /// Create a new, empty session state. + pub(crate) fn new() -> Self { + Self + } +} diff --git a/codex-rs/core/src/state/turn.rs b/codex-rs/core/src/state/turn.rs new file mode 100644 index 0000000000..5497e62ca6 --- /dev/null +++ b/codex-rs/core/src/state/turn.rs @@ -0,0 +1,9 @@ +//! Turn-scoped state and active turn metadata scaffolding. + +/// Metadata about the currently running turn. +#[derive(Debug, Default)] +pub(crate) struct ActiveTurn; + +/// Mutable state for a single turn. +#[derive(Debug, Default)] +pub(crate) struct TurnState;