mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
Rename approvals reviewer variant to auto-review (#19056)
## Why `approvals_reviewer` now uses `auto_review` as the canonical config/API value after #18504, but the Rust enum variant and nearby helper/test names still used `GuardianSubagent` / guardian approval wording. That made follow-up code and reviews confusing even though the external value had already moved to Auto-review. ## What changed - Renamed `ApprovalsReviewer::GuardianSubagent` to `ApprovalsReviewer::AutoReview`. - Updated protocol, app-server, config, core, TUI, exec, and analytics test callsites. - Renamed nearby helper/test names from guardian approval wording to Auto-review wording where they refer to the approvals reviewer mode. - Preserved wire compatibility: - `auto_review` remains the canonical serialized value. - `guardian_subagent` remains accepted as a legacy alias. This intentionally does not rename the `[features].guardian_approval` key, `Feature::GuardianApproval`, `core/src/guardian`, analytics event names, or app-server Guardian review event types. ## Verification - `cargo test -p codex-protocol approvals_reviewer_serializes_auto_review_and_accepts_legacy_guardian_subagent` - `cargo test -p codex-app-server-protocol approvals_reviewer_serializes_auto_review_and_accepts_legacy_guardian_subagent` - `cargo test -p codex-config approvals_reviewer` - `cargo test -p codex-tui update_feature_flags` - `cargo test -p codex-core permissions_instructions` - `cargo test -p codex-tui permissions_selection`
This commit is contained in:
@@ -300,7 +300,7 @@ fn default_exec_approval_decisions(
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
struct GuardianApprovalsMode {
|
||||
struct AutoReviewMode {
|
||||
approval_policy: AskForApproval,
|
||||
approvals_reviewer: ApprovalsReviewer,
|
||||
sandbox_policy: SandboxPolicy,
|
||||
@@ -309,11 +309,11 @@ struct GuardianApprovalsMode {
|
||||
/// Enabling the Auto-review experiment in the TUI should also switch the
|
||||
/// current `/approvals` settings to the matching Auto-review mode. Users
|
||||
/// can still change `/approvals` afterward; this just assumes that opting into
|
||||
/// the experiment means they want guardian review enabled immediately.
|
||||
fn guardian_approvals_mode() -> GuardianApprovalsMode {
|
||||
GuardianApprovalsMode {
|
||||
/// the experiment means they want Auto-review enabled immediately.
|
||||
fn auto_review_mode() -> AutoReviewMode {
|
||||
AutoReviewMode {
|
||||
approval_policy: AskForApproval::OnRequest,
|
||||
approvals_reviewer: ApprovalsReviewer::GuardianSubagent,
|
||||
approvals_reviewer: ApprovalsReviewer::AutoReview,
|
||||
sandbox_policy: SandboxPolicy::new_workspace_write_policy(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ impl App {
|
||||
return;
|
||||
}
|
||||
|
||||
let guardian_approvals_preset = guardian_approvals_mode();
|
||||
let auto_review_preset = auto_review_mode();
|
||||
let mut next_config = self.config.clone();
|
||||
let active_profile = self.active_profile.clone();
|
||||
let scoped_segments = |key: &str| {
|
||||
@@ -202,16 +202,12 @@ impl App {
|
||||
// Persist the reviewer setting so future sessions keep the
|
||||
// experiment's matching `/approvals` mode until the user
|
||||
// changes it explicitly.
|
||||
feature_config.approvals_reviewer =
|
||||
guardian_approvals_preset.approvals_reviewer;
|
||||
feature_config.approvals_reviewer = auto_review_preset.approvals_reviewer;
|
||||
feature_edits.push(ConfigEdit::SetPath {
|
||||
segments: scoped_segments("approvals_reviewer"),
|
||||
value: guardian_approvals_preset
|
||||
.approvals_reviewer
|
||||
.to_string()
|
||||
.into(),
|
||||
value: auto_review_preset.approvals_reviewer.to_string().into(),
|
||||
});
|
||||
if previous_approvals_reviewer != guardian_approvals_preset.approvals_reviewer {
|
||||
if previous_approvals_reviewer != auto_review_preset.approvals_reviewer {
|
||||
permissions_history_label = Some("Auto-review");
|
||||
}
|
||||
} else if !effective_enabled {
|
||||
@@ -234,17 +230,17 @@ impl App {
|
||||
// makes guardian review observable in the current thread.
|
||||
if !self.try_set_approval_policy_on_config(
|
||||
&mut feature_config,
|
||||
guardian_approvals_preset.approval_policy,
|
||||
auto_review_preset.approval_policy,
|
||||
"Failed to enable Auto-review",
|
||||
"failed to set guardian approvals approval policy on staged config",
|
||||
"failed to set auto-review approval policy on staged config",
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
if !self.try_set_sandbox_policy_on_config(
|
||||
&mut feature_config,
|
||||
guardian_approvals_preset.sandbox_policy.clone(),
|
||||
auto_review_preset.sandbox_policy.clone(),
|
||||
"Failed to enable Auto-review",
|
||||
"failed to set guardian approvals sandbox policy on staged config",
|
||||
"failed to set auto-review sandbox policy on staged config",
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
@@ -258,8 +254,8 @@ impl App {
|
||||
value: "workspace-write".into(),
|
||||
},
|
||||
]);
|
||||
approval_policy_override = Some(guardian_approvals_preset.approval_policy);
|
||||
sandbox_policy_override = Some(guardian_approvals_preset.sandbox_policy.clone());
|
||||
approval_policy_override = Some(auto_review_preset.approval_policy);
|
||||
sandbox_policy_override = Some(auto_review_preset.sandbox_policy.clone());
|
||||
}
|
||||
next_config = feature_config;
|
||||
feature_updates_to_apply.push((feature, effective_enabled));
|
||||
@@ -305,7 +301,7 @@ impl App {
|
||||
{
|
||||
tracing::error!(
|
||||
error = %err,
|
||||
"failed to set guardian approvals sandbox policy on chat config"
|
||||
"failed to set auto-review sandbox policy on chat config"
|
||||
);
|
||||
self.chat_widget
|
||||
.add_error_message(format!("Failed to enable Auto-review: {err}"));
|
||||
|
||||
@@ -1598,11 +1598,11 @@ async fn reset_memories_clears_local_memory_directories() -> Result<()> {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn update_feature_flags_enabling_guardian_selects_guardian_approvals() -> Result<()> {
|
||||
async fn update_feature_flags_enabling_guardian_selects_auto_review() -> Result<()> {
|
||||
let (mut app, mut app_event_rx, mut op_rx) = make_test_app_with_channels().await;
|
||||
let codex_home = tempdir()?;
|
||||
app.config.codex_home = codex_home.path().to_path_buf().abs();
|
||||
let guardian_approvals = guardian_approvals_mode();
|
||||
let auto_review = auto_review_mode();
|
||||
|
||||
app.update_feature_flags(vec![(Feature::GuardianApproval, true)])
|
||||
.await;
|
||||
@@ -1616,11 +1616,11 @@ async fn update_feature_flags_enabling_guardian_selects_guardian_approvals() ->
|
||||
);
|
||||
assert_eq!(
|
||||
app.config.approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(
|
||||
app.config.permissions.approval_policy.value(),
|
||||
guardian_approvals.approval_policy
|
||||
auto_review.approval_policy
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget
|
||||
@@ -1628,7 +1628,7 @@ async fn update_feature_flags_enabling_guardian_selects_guardian_approvals() ->
|
||||
.permissions
|
||||
.approval_policy
|
||||
.value(),
|
||||
guardian_approvals.approval_policy
|
||||
auto_review.approval_policy
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget
|
||||
@@ -1636,11 +1636,11 @@ async fn update_feature_flags_enabling_guardian_selects_guardian_approvals() ->
|
||||
.permissions
|
||||
.sandbox_policy
|
||||
.get(),
|
||||
&guardian_approvals.sandbox_policy
|
||||
&auto_review.sandbox_policy
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget.config_ref().approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(app.runtime_approval_policy_override, None);
|
||||
assert_eq!(app.runtime_sandbox_policy_override, None);
|
||||
@@ -1648,9 +1648,9 @@ async fn update_feature_flags_enabling_guardian_selects_guardian_approvals() ->
|
||||
op_rx.try_recv(),
|
||||
Ok(Op::OverrideTurnContext {
|
||||
cwd: None,
|
||||
approval_policy: Some(guardian_approvals.approval_policy),
|
||||
approvals_reviewer: Some(guardian_approvals.approvals_reviewer),
|
||||
sandbox_policy: Some(guardian_approvals.sandbox_policy.clone()),
|
||||
approval_policy: Some(auto_review.approval_policy),
|
||||
approvals_reviewer: Some(auto_review.approvals_reviewer),
|
||||
sandbox_policy: Some(auto_review.sandbox_policy.clone()),
|
||||
permission_profile: None,
|
||||
windows_sandbox_level: None,
|
||||
model: None,
|
||||
@@ -1700,9 +1700,9 @@ async fn update_feature_flags_disabling_guardian_clears_review_policy_and_restor
|
||||
.set_enabled(Feature::GuardianApproval, /*enabled*/ true)?;
|
||||
app.chat_widget
|
||||
.set_feature_enabled(Feature::GuardianApproval, /*enabled*/ true);
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent;
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::AutoReview;
|
||||
app.chat_widget
|
||||
.set_approvals_reviewer(ApprovalsReviewer::GuardianSubagent);
|
||||
.set_approvals_reviewer(ApprovalsReviewer::AutoReview);
|
||||
app.config
|
||||
.permissions
|
||||
.approval_policy
|
||||
@@ -1779,7 +1779,7 @@ async fn update_feature_flags_enabling_guardian_overrides_explicit_manual_review
|
||||
let (mut app, _app_event_rx, mut op_rx) = make_test_app_with_channels().await;
|
||||
let codex_home = tempdir()?;
|
||||
app.config.codex_home = codex_home.path().to_path_buf().abs();
|
||||
let guardian_approvals = guardian_approvals_mode();
|
||||
let auto_review = auto_review_mode();
|
||||
let config_toml_path = codex_home.path().join("config.toml").abs();
|
||||
let config_toml = "approvals_reviewer = \"user\"\n";
|
||||
std::fs::write(config_toml_path.as_path(), config_toml)?;
|
||||
@@ -1798,15 +1798,15 @@ async fn update_feature_flags_enabling_guardian_overrides_explicit_manual_review
|
||||
assert!(app.config.features.enabled(Feature::GuardianApproval));
|
||||
assert_eq!(
|
||||
app.config.approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget.config_ref().approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(
|
||||
app.config.permissions.approval_policy.value(),
|
||||
guardian_approvals.approval_policy
|
||||
auto_review.approval_policy
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget
|
||||
@@ -1814,15 +1814,15 @@ async fn update_feature_flags_enabling_guardian_overrides_explicit_manual_review
|
||||
.permissions
|
||||
.sandbox_policy
|
||||
.get(),
|
||||
&guardian_approvals.sandbox_policy
|
||||
&auto_review.sandbox_policy
|
||||
);
|
||||
assert_eq!(
|
||||
op_rx.try_recv(),
|
||||
Ok(Op::OverrideTurnContext {
|
||||
cwd: None,
|
||||
approval_policy: Some(guardian_approvals.approval_policy),
|
||||
approvals_reviewer: Some(guardian_approvals.approvals_reviewer),
|
||||
sandbox_policy: Some(guardian_approvals.sandbox_policy.clone()),
|
||||
approval_policy: Some(auto_review.approval_policy),
|
||||
approvals_reviewer: Some(auto_review.approvals_reviewer),
|
||||
sandbox_policy: Some(auto_review.sandbox_policy.clone()),
|
||||
permission_profile: None,
|
||||
windows_sandbox_level: None,
|
||||
model: None,
|
||||
@@ -1908,7 +1908,7 @@ async fn update_feature_flags_enabling_guardian_in_profile_sets_profile_auto_rev
|
||||
let (mut app, _app_event_rx, mut op_rx) = make_test_app_with_channels().await;
|
||||
let codex_home = tempdir()?;
|
||||
app.config.codex_home = codex_home.path().to_path_buf().abs();
|
||||
let guardian_approvals = guardian_approvals_mode();
|
||||
let auto_review = auto_review_mode();
|
||||
app.active_profile = Some("guardian".to_string());
|
||||
let config_toml_path = codex_home.path().join("config.toml").abs();
|
||||
let config_toml = "profile = \"guardian\"\napprovals_reviewer = \"user\"\n";
|
||||
@@ -1928,19 +1928,19 @@ async fn update_feature_flags_enabling_guardian_in_profile_sets_profile_auto_rev
|
||||
assert!(app.config.features.enabled(Feature::GuardianApproval));
|
||||
assert_eq!(
|
||||
app.config.approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(
|
||||
app.chat_widget.config_ref().approvals_reviewer,
|
||||
guardian_approvals.approvals_reviewer
|
||||
auto_review.approvals_reviewer
|
||||
);
|
||||
assert_eq!(
|
||||
op_rx.try_recv(),
|
||||
Ok(Op::OverrideTurnContext {
|
||||
cwd: None,
|
||||
approval_policy: Some(guardian_approvals.approval_policy),
|
||||
approvals_reviewer: Some(guardian_approvals.approvals_reviewer),
|
||||
sandbox_policy: Some(guardian_approvals.sandbox_policy.clone()),
|
||||
approval_policy: Some(auto_review.approval_policy),
|
||||
approvals_reviewer: Some(auto_review.approvals_reviewer),
|
||||
sandbox_policy: Some(auto_review.sandbox_policy.clone()),
|
||||
permission_profile: None,
|
||||
windows_sandbox_level: None,
|
||||
model: None,
|
||||
@@ -2003,9 +2003,9 @@ guardian_approval = true
|
||||
.set_enabled(Feature::GuardianApproval, /*enabled*/ true)?;
|
||||
app.chat_widget
|
||||
.set_feature_enabled(Feature::GuardianApproval, /*enabled*/ true);
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent;
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::AutoReview;
|
||||
app.chat_widget
|
||||
.set_approvals_reviewer(ApprovalsReviewer::GuardianSubagent);
|
||||
.set_approvals_reviewer(ApprovalsReviewer::AutoReview);
|
||||
|
||||
app.update_feature_flags(vec![(Feature::GuardianApproval, false)])
|
||||
.await;
|
||||
@@ -2083,9 +2083,9 @@ async fn update_feature_flags_disabling_guardian_in_profile_keeps_inherited_non_
|
||||
.set_enabled(Feature::GuardianApproval, /*enabled*/ true)?;
|
||||
app.chat_widget
|
||||
.set_feature_enabled(Feature::GuardianApproval, /*enabled*/ true);
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent;
|
||||
app.config.approvals_reviewer = ApprovalsReviewer::AutoReview;
|
||||
app.chat_widget
|
||||
.set_approvals_reviewer(ApprovalsReviewer::GuardianSubagent);
|
||||
.set_approvals_reviewer(ApprovalsReviewer::AutoReview);
|
||||
|
||||
app.update_feature_flags(vec![(Feature::GuardianApproval, false)])
|
||||
.await;
|
||||
@@ -2097,13 +2097,10 @@ async fn update_feature_flags_disabling_guardian_in_profile_keeps_inherited_non_
|
||||
.features
|
||||
.enabled(Feature::GuardianApproval)
|
||||
);
|
||||
assert_eq!(
|
||||
app.config.approvals_reviewer,
|
||||
ApprovalsReviewer::GuardianSubagent
|
||||
);
|
||||
assert_eq!(app.config.approvals_reviewer, ApprovalsReviewer::AutoReview);
|
||||
assert_eq!(
|
||||
app.chat_widget.config_ref().approvals_reviewer,
|
||||
ApprovalsReviewer::GuardianSubagent
|
||||
ApprovalsReviewer::AutoReview
|
||||
);
|
||||
assert!(
|
||||
op_rx.try_recv().is_err(),
|
||||
|
||||
@@ -9042,7 +9042,7 @@ impl ChatWidget {
|
||||
"Same workspace-write permissions as Default, but eligible `on-request` approvals are routed through the auto-reviewer subagent."
|
||||
.to_string(),
|
||||
),
|
||||
is_current: current_review_policy == ApprovalsReviewer::GuardianSubagent
|
||||
is_current: current_review_policy == ApprovalsReviewer::AutoReview
|
||||
&& Self::preset_matches_current(
|
||||
current_approval,
|
||||
current_sandbox,
|
||||
@@ -9052,7 +9052,7 @@ impl ChatWidget {
|
||||
preset.approval,
|
||||
preset.sandbox.clone(),
|
||||
"Auto-review".to_string(),
|
||||
ApprovalsReviewer::GuardianSubagent,
|
||||
ApprovalsReviewer::AutoReview,
|
||||
),
|
||||
dismiss_on_select: true,
|
||||
disabled_reason: approval_disabled_reason
|
||||
|
||||
@@ -386,7 +386,7 @@ async fn permissions_selection_emits_history_cell_when_current_is_selected() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_hides_guardian_approvals_when_feature_disabled() {
|
||||
async fn permissions_selection_hides_auto_review_when_feature_disabled() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -406,7 +406,7 @@ async fn permissions_selection_hides_guardian_approvals_when_feature_disabled()
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_hides_guardian_approvals_when_feature_disabled_even_if_auto_review_is_active()
|
||||
async fn permissions_selection_hides_auto_review_when_feature_disabled_even_if_auto_review_is_active()
|
||||
{
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
@@ -416,7 +416,7 @@ async fn permissions_selection_hides_guardian_approvals_when_feature_disabled_ev
|
||||
}
|
||||
chat.set_feature_enabled(Feature::GuardianApproval, /*enabled*/ false);
|
||||
chat.config.notices.hide_full_access_warning = Some(true);
|
||||
chat.config.approvals_reviewer = ApprovalsReviewer::GuardianSubagent;
|
||||
chat.config.approvals_reviewer = ApprovalsReviewer::AutoReview;
|
||||
chat.config
|
||||
.permissions
|
||||
.approval_policy
|
||||
@@ -438,7 +438,7 @@ async fn permissions_selection_hides_guardian_approvals_when_feature_disabled_ev
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_marks_guardian_approvals_current_after_session_configured() {
|
||||
async fn permissions_selection_marks_auto_review_current_after_session_configured() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -461,7 +461,7 @@ async fn permissions_selection_marks_guardian_approvals_current_after_session_co
|
||||
model_provider_id: "test-provider".to_string(),
|
||||
service_tier: None,
|
||||
approval_policy: AskForApproval::OnRequest,
|
||||
approvals_reviewer: ApprovalsReviewer::GuardianSubagent,
|
||||
approvals_reviewer: ApprovalsReviewer::AutoReview,
|
||||
sandbox_policy: SandboxPolicy::new_workspace_write_policy(),
|
||||
cwd: test_project_path().abs(),
|
||||
reasoning_effort: None,
|
||||
@@ -483,8 +483,7 @@ async fn permissions_selection_marks_guardian_approvals_current_after_session_co
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_marks_guardian_approvals_current_with_custom_workspace_write_details()
|
||||
{
|
||||
async fn permissions_selection_marks_auto_review_current_with_custom_workspace_write_details() {
|
||||
let (mut chat, _rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -509,7 +508,7 @@ async fn permissions_selection_marks_guardian_approvals_current_with_custom_work
|
||||
model_provider_id: "test-provider".to_string(),
|
||||
service_tier: None,
|
||||
approval_policy: AskForApproval::OnRequest,
|
||||
approvals_reviewer: ApprovalsReviewer::GuardianSubagent,
|
||||
approvals_reviewer: ApprovalsReviewer::AutoReview,
|
||||
sandbox_policy: SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots: vec![extra_root],
|
||||
read_only_access: ReadOnlyAccess::FullAccess,
|
||||
@@ -537,7 +536,7 @@ async fn permissions_selection_marks_guardian_approvals_current_with_custom_work
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn permissions_selection_can_disable_guardian_approvals() {
|
||||
async fn permissions_selection_can_disable_auto_review() {
|
||||
let (mut chat, mut rx, _op_rx) = make_chatwidget_manual(/*model_override*/ None).await;
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
@@ -630,7 +629,7 @@ async fn permissions_selection_sends_approvals_reviewer_in_override_turn_context
|
||||
Op::OverrideTurnContext {
|
||||
cwd: None,
|
||||
approval_policy: Some(AskForApproval::OnRequest),
|
||||
approvals_reviewer: Some(ApprovalsReviewer::GuardianSubagent),
|
||||
approvals_reviewer: Some(ApprovalsReviewer::AutoReview),
|
||||
sandbox_policy: Some(SandboxPolicy::new_workspace_write_policy()),
|
||||
permission_profile: None,
|
||||
windows_sandbox_level: None,
|
||||
|
||||
@@ -586,7 +586,7 @@ mod tests {
|
||||
Some(RequirementSource::CloudRequirements),
|
||||
),
|
||||
approvals_reviewer: ConstrainedWithSource::new(
|
||||
Constrained::allow_any(ApprovalsReviewer::GuardianSubagent),
|
||||
Constrained::allow_any(ApprovalsReviewer::AutoReview),
|
||||
Some(RequirementSource::LegacyManagedConfigTomlFromMdm),
|
||||
),
|
||||
sandbox_policy: ConstrainedWithSource::new(
|
||||
@@ -647,7 +647,7 @@ mod tests {
|
||||
|
||||
let requirements_toml = ConfigRequirementsToml {
|
||||
allowed_approval_policies: Some(vec![AskForApproval::OnRequest]),
|
||||
allowed_approvals_reviewers: Some(vec![ApprovalsReviewer::GuardianSubagent]),
|
||||
allowed_approvals_reviewers: Some(vec![ApprovalsReviewer::AutoReview]),
|
||||
allowed_sandbox_modes: Some(vec![SandboxModeRequirement::ReadOnly]),
|
||||
remote_sandbox_config: None,
|
||||
allowed_web_search_modes: Some(vec![WebSearchModeRequirement::Cached]),
|
||||
@@ -731,13 +731,13 @@ mod tests {
|
||||
fn debug_config_output_lists_approvals_reviewer_as_requirement() {
|
||||
let requirements = ConfigRequirements {
|
||||
approvals_reviewer: ConstrainedWithSource::new(
|
||||
Constrained::allow_any(ApprovalsReviewer::GuardianSubagent),
|
||||
Constrained::allow_any(ApprovalsReviewer::AutoReview),
|
||||
Some(RequirementSource::LegacyManagedConfigTomlFromMdm),
|
||||
),
|
||||
..ConfigRequirements::default()
|
||||
};
|
||||
let requirements_toml = ConfigRequirementsToml {
|
||||
allowed_approvals_reviewers: Some(vec![ApprovalsReviewer::GuardianSubagent]),
|
||||
allowed_approvals_reviewers: Some(vec![ApprovalsReviewer::AutoReview]),
|
||||
..ConfigRequirementsToml::default()
|
||||
};
|
||||
let stack = ConfigLayerStack::new(Vec::new(), requirements, requirements_toml)
|
||||
|
||||
Reference in New Issue
Block a user