Codex Handbook
state/src/model/memories.rs 69 lines
use chrono::DateTime;use chrono::Utc;use codex_protocol::ThreadId;use std::path::PathBuf;use super::ThreadMetadata;/// Stored stage-1 memory extraction output for a single thread.#[derive(Debug, Clone, PartialEq, Eq)]pub struct Stage1Output {    pub thread_id: ThreadId,    pub rollout_path: PathBuf,    pub source_updated_at: DateTime<Utc>,    pub raw_memory: String,    pub rollout_summary: String,    pub rollout_slug: Option<String>,    pub cwd: PathBuf,    pub git_branch: Option<String>,    pub generated_at: DateTime<Utc>,}/// Result of trying to claim a stage-1 memory extraction job.#[derive(Debug, Clone, PartialEq, Eq)]pub enum Stage1JobClaimOutcome {    /// The caller owns the job and should continue with extraction.    Claimed { ownership_token: String },    /// Existing output is already newer than or equal to the source rollout.    SkippedUpToDate,    /// Another worker currently owns a fresh lease for this job.    SkippedRunning,    /// The job is in backoff and should not be retried yet.    SkippedRetryBackoff,    /// The job has exhausted retries and should not be retried automatically.    SkippedRetryExhausted,}/// Claimed stage-1 job with thread metadata.#[derive(Debug, Clone, PartialEq, Eq)]pub struct Stage1JobClaim {    pub thread: ThreadMetadata,    pub ownership_token: String,}#[derive(Debug, Clone, Copy)]pub struct Stage1StartupClaimParams<'a> {    pub scan_limit: usize,    pub max_claimed: usize,    pub max_age_days: i64,    pub min_rollout_idle_hours: i64,    pub allowed_sources: &'a [String],    pub lease_seconds: i64,}/// Result of trying to claim a phase-2 consolidation job.#[derive(Debug, Clone, PartialEq, Eq)]pub enum Phase2JobClaimOutcome {    /// The caller owns the global lock and may inspect the memory workspace.    Claimed {        ownership_token: String,        /// Snapshot of `input_watermark` at claim time.        input_watermark: i64,    },    /// The global job is in retry backoff.    SkippedRetryUnavailable,    /// The global job completed recently enough that consolidation is cooling down.    SkippedCooldown,    /// Another worker currently owns a fresh global consolidation lease.    SkippedRunning,}