permissions: expose reviewer override grant API

This commit is contained in:
Michael Bolin
2026-06-11 12:09:42 -04:00
parent b4445f2758
commit 7a66421d6a
14 changed files with 139 additions and 20 deletions
@@ -1,3 +1,4 @@
use super::shared::ApprovalsReviewer;
use super::shared::v2_enum_from_core;
use codex_protocol::approvals::ExecPolicyAmendment as CoreExecPolicyAmendment;
use codex_protocol::approvals::NetworkApprovalContext as CoreNetworkApprovalContext;
@@ -693,4 +694,8 @@ pub struct PermissionsRequestApprovalResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub strict_auto_review: Option<bool>,
/// Override who reviews later approval prompts for the rest of the current turn.
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub approvals_reviewer: Option<ApprovalsReviewer>,
}
@@ -708,6 +708,7 @@ fn permissions_request_approval_response_defaults_scope_to_turn() {
assert_eq!(response.scope, PermissionGrantScope::Turn);
assert_eq!(response.strict_auto_review, None);
assert_eq!(response.approvals_reviewer, None);
}
#[test]
@@ -721,6 +722,20 @@ fn permissions_request_approval_response_accepts_strict_auto_review() {
assert_eq!(response.strict_auto_review, Some(true));
}
#[test]
fn permissions_request_approval_response_accepts_approvals_reviewer() {
let response = serde_json::from_value::<PermissionsRequestApprovalResponse>(json!({
"permissions": {},
"approvalsReviewer": "auto_review",
}))
.expect("response should deserialize");
assert_eq!(
response.approvals_reviewer,
Some(ApprovalsReviewer::AutoReview)
);
}
#[test]
fn permission_profile_selection_uses_id_string() {
let start: ThreadStartParams = serde_json::from_value(json!({