MCPcopy Index your code
hub / github.com/AI45Lab/Code / parse_agent_yaml_value

Function parse_agent_yaml_value

core/src/subagent.rs:694–721  ·  view source on GitHub ↗
(
    value: serde_yaml::Value,
    context: &str,
)

Source from the content-addressed store, hash-verified

692}
693
694fn 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
723fn apply_claude_style_tools_to_agent(
724 agent: &mut AgentDefinition,

Callers 2

parse_agent_yamlFunction · 0.85
parse_agent_mdFunction · 0.85

Calls 6

yaml_get_anyFunction · 0.85
yaml_value_has_keyFunction · 0.85
validate_agent_nameFunction · 0.85
into_agent_definitionMethod · 0.80

Tested by

no test coverage detected