(
value: serde_yaml::Value,
context: &str,
)
| 692 | } |
| 693 | |
| 694 | fn parse_agent_yaml_value( |
| 695 | value: serde_yaml::Value, |
| 696 | context: &str, |
| 697 | ) -> anyhow::Result<AgentDefinition> { |
| 698 | let tools = yaml_get_any(&value, &["tools", "allowedTools", "allowed_tools"]) |
| 699 | .map(parse_tools_field) |
| 700 | .unwrap_or_default(); |
| 701 | let disallowed_tools = yaml_get_any( |
| 702 | &value, |
| 703 | &["disallowedTools", "disallowed-tools", "disallowed_tools"], |
| 704 | ) |
| 705 | .map(parse_tools_field) |
| 706 | .unwrap_or_default(); |
| 707 | |
| 708 | if yaml_value_has_key(&value, "kind") { |
| 709 | let mut spec: WorkerAgentSpec = serde_yaml::from_value(value) |
| 710 | .map_err(|e| anyhow::anyhow!("Failed to parse worker {}: {}", context, e))?; |
| 711 | validate_agent_name(&spec.name)?; |
| 712 | apply_claude_style_tools_to_spec(&mut spec, &tools, &disallowed_tools); |
| 713 | return Ok(spec.into_agent_definition()); |
| 714 | } |
| 715 | |
| 716 | let mut agent: AgentDefinition = serde_yaml::from_value(value) |
| 717 | .map_err(|e| anyhow::anyhow!("Failed to parse {}: {}", context, e))?; |
| 718 | validate_agent_name(&agent.name)?; |
| 719 | apply_claude_style_tools_to_agent(&mut agent, &tools, &disallowed_tools); |
| 720 | Ok(agent) |
| 721 | } |
| 722 | |
| 723 | fn apply_claude_style_tools_to_agent( |
| 724 | agent: &mut AgentDefinition, |
no test coverage detected