= (0..=crate::agent_uploads::MAX_UPLOAD_FILES)
+ .map(|n| serde_json::json!({ "name": format!("{n}.txt"), "text": "x" }))
+ .collect();
+ assert!(refused(serde_json::json!({ "files": many })).contains("At most"));
+ let large = "x".repeat(crate::agent_uploads::MAX_UPLOAD_BYTES + 1);
+ assert!(
+ refused(serde_json::json!({ "files": [{ "name": "big.txt", "text": large }] }))
+ .contains("KB")
+ );
+ }
+
+ #[test]
+ fn a_select_refusal_tells_the_agent_what_to_do() {
+ let message = |answer: serde_json::Value| select_refusal(&answer).unwrap().into_mcp().message;
+ assert!(
+ message(serde_json::json!({ "error": "not_select", "tag": "div" }))
+ .contains(", not a