| 512 | } |
| 513 | |
| 514 | fn ensure_tool_allowed(&self, tool_name: &str) -> Result<(), ToolError> { |
| 515 | match self.agent.tool_permission_decision(tool_name) { |
| 516 | crate::PermissionDecision::Allow => Ok(()), |
| 517 | crate::PermissionDecision::Ask => Err(ToolError::PermissionDenied(format!( |
| 518 | "Tool '{}' requires explicit approval for agent '{}'", |
| 519 | tool_name, self.agent.name |
| 520 | ))), |
| 521 | crate::PermissionDecision::Deny => Err(ToolError::PermissionDenied(format!( |
| 522 | "Tool '{}' is denied by agent '{}' permission rules", |
| 523 | tool_name, self.agent.name |
| 524 | ))), |
| 525 | } |
| 526 | } |
| 527 | } |
| 528 | |
| 529 | fn parse_model_string(raw: Option<&str>) -> Option<(String, String)> { |