File size: 1,708 Bytes
afa0cbf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | use super::super::tests::test_model;
use super::*;
use pretty_assertions::assert_eq;
#[test]
fn guardian_policy_is_optional_and_tolerates_future_config() -> anyhow::Result<()> {
let model = test_model(/*spec*/ None);
let mut wire = serde_json::to_value(&model)?;
assert!(
!wire
.as_object()
.expect("model object")
.contains_key("guardian")
);
assert_eq!(serde_json::from_value::<ModelInfo>(wire.clone())?, model);
wire["guardian"] = serde_json::json!({
"computer_use": "adaptive", "shell": "future_mode", "future_scope": {"version": 2},
"mcp": null, "permissions": "adaptive",
});
let model: ModelInfo = serde_json::from_value(wire)?;
assert_eq!(
model.guardian,
Some(GuardianModelPolicy {
computer_use: Some(GuardianReviewMode::Adaptive),
shell: Some(GuardianReviewMode::Unknown),
permissions: Some(GuardianReviewMode::Adaptive),
..Default::default()
})
);
assert!(model.computer_use_review_required());
assert_eq!(
model.guardian_review_mode(GuardianScope::Mcp),
Some(GuardianReviewMode::Disabled)
);
Ok(())
}
#[test]
fn guardian_policy_overrides_the_legacy_cua_bit_only_when_present() {
let mut model = test_model(/*spec*/ None);
model.node_repl_auto_review_required = true;
assert!(model.computer_use_review_required());
model.guardian = Some(GuardianModelPolicy::default());
assert!(!model.computer_use_review_required());
model.guardian.as_mut().expect("policy").computer_use = Some(GuardianReviewMode::Synchronous);
assert!(model.computer_use_review_required());
}
|