diff --git a/codex-rs/ext/guardian-reviewer/src/assessment.rs b/codex-rs/ext/guardian-reviewer/src/assessment.rs index 43c4024ec6..481ec0b562 100644 --- a/codex-rs/ext/guardian-reviewer/src/assessment.rs +++ b/codex-rs/ext/guardian-reviewer/src/assessment.rs @@ -21,7 +21,7 @@ pub struct GuardianAssessment { /// wrapper so transient formatting drift fails less noisily during dogfooding. /// Non-JSON output is still a review failure; this is only a thin recovery path /// for cases where the model wrapped the JSON in extra prose. -pub fn parse_guardian_assessment(text: Option<&str>) -> anyhow::Result { +pub(crate) fn parse_guardian_assessment(text: Option<&str>) -> anyhow::Result { let Some(text) = text else { anyhow::bail!("guardian review completed without an assessment payload"); }; diff --git a/codex-rs/ext/guardian-reviewer/src/circuit_breaker.rs b/codex-rs/ext/guardian-reviewer/src/circuit_breaker.rs index 4034d50c01..83e8143a82 100644 --- a/codex-rs/ext/guardian-reviewer/src/circuit_breaker.rs +++ b/codex-rs/ext/guardian-reviewer/src/circuit_breaker.rs @@ -4,10 +4,10 @@ const MAX_CONSECUTIVE_CYBER_GUARDIAN_DENIALS_PER_TURN: u32 = 1; const MAX_CONSECUTIVE_GUARDIAN_DENIALS_PER_TURN: u32 = 3; const MAX_RECENT_CYBER_AUTO_REVIEW_DENIALS_PER_TURN: u32 = 1; const MAX_RECENT_AUTO_REVIEW_DENIALS_PER_TURN: u32 = 10; -pub const AUTO_REVIEW_DENIAL_WINDOW_SIZE: usize = 50; +pub(crate) const AUTO_REVIEW_DENIAL_WINDOW_SIZE: usize = 50; #[derive(Debug, Default)] -pub struct GuardianRejectionCircuitBreaker { +pub(crate) struct GuardianRejectionCircuitBreaker { turns: std::collections::HashMap, } @@ -19,7 +19,7 @@ struct GuardianRejectionCircuitBreakerTurn { } #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub enum GuardianRejectionCircuitBreakerPolicy { +pub(crate) enum GuardianRejectionCircuitBreakerPolicy { Standard, CyberModel, } @@ -37,7 +37,7 @@ impl From<&codex_protocol::openai_models::ModelInfo> for GuardianRejectionCircui } #[derive(Clone, Copy, Debug, PartialEq, Eq)] -pub enum GuardianRejectionCircuitBreakerAction { +pub(crate) enum GuardianRejectionCircuitBreakerAction { Continue, InterruptTurn { consecutive_denials: u32, @@ -46,11 +46,11 @@ pub enum GuardianRejectionCircuitBreakerAction { } impl GuardianRejectionCircuitBreaker { - pub fn clear_turn(&mut self, turn_id: &str) { + pub(crate) fn clear_turn(&mut self, turn_id: &str) { self.turns.remove(turn_id); } - pub fn record_denial( + pub(crate) fn record_denial( &mut self, turn_id: &str, policy: GuardianRejectionCircuitBreakerPolicy, @@ -83,7 +83,7 @@ impl GuardianRejectionCircuitBreaker { } } - pub fn record_non_denial(&mut self, turn_id: &str) { + pub(crate) fn record_non_denial(&mut self, turn_id: &str) { let turn = self.turns.entry(turn_id.to_string()).or_default(); turn.consecutive_denials = 0; Self::record_recent_review(turn, /*denied*/ false); diff --git a/codex-rs/ext/guardian-reviewer/src/lib.rs b/codex-rs/ext/guardian-reviewer/src/lib.rs index 0e9ad66cc6..ad2aafbb02 100644 --- a/codex-rs/ext/guardian-reviewer/src/lib.rs +++ b/codex-rs/ext/guardian-reviewer/src/lib.rs @@ -23,11 +23,11 @@ mod settings; pub use assessment::GuardianAssessment; pub use assessment::guardian_output_contract_prompt; pub use assessment::guardian_output_schema; -pub use assessment::parse_guardian_assessment; -pub use circuit_breaker::AUTO_REVIEW_DENIAL_WINDOW_SIZE; -pub use circuit_breaker::GuardianRejectionCircuitBreaker; -pub use circuit_breaker::GuardianRejectionCircuitBreakerAction; -pub use circuit_breaker::GuardianRejectionCircuitBreakerPolicy; +pub(crate) use assessment::parse_guardian_assessment; +pub(crate) use circuit_breaker::AUTO_REVIEW_DENIAL_WINDOW_SIZE; +pub(crate) use circuit_breaker::GuardianRejectionCircuitBreaker; +pub(crate) use circuit_breaker::GuardianRejectionCircuitBreakerAction; +pub(crate) use circuit_breaker::GuardianRejectionCircuitBreakerPolicy; pub use model::ReviewModel; pub use model::select_review_model; pub use outcome::GuardianReviewError;