diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs index d69dc5e20..7d5bacb99 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs @@ -1718,6 +1718,7 @@ fn bridge_file_content_changed(root: &Path, path: &str, content: &[u8]) -> Optio pub(in crate::agent) fn write_file_input( arguments: &Value, ) -> Result<(String, String), WriteFileError> { + ToolArgumentsRejection::check(arguments, &["path", "content"])?; let raw_path = arguments .get("path") .and_then(Value::as_str) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs index f8774f2df..61e78b727 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs @@ -2849,6 +2849,12 @@ mod tests { "content": "{}" })) .is_err()); + assert!(validate_write_file_arguments(&json!({ + "path": "game/index.html", + "content": "", + "unexpected": 1 + })) + .is_err()); assert_eq!( direct_tool_bridge::prepare_game_art_input(&json!({ "brief": "美术包" })) .expect("safe default")