pub mod anthropic;
pub mod copilot;
pub mod crewai;
pub mod native;
pub mod openai;
use agentforge_core::{AgentFile, AgentFileFormat, Result};
pub fn normalize(
format: &AgentFileFormat,
value: &serde_json::Value,
raw: &str,
) -> Result<AgentFile> {
match format {
AgentFileFormat::NativeYaml => native::normalize(value),
AgentFileFormat::OpenaiJson => openai::normalize(value),
AgentFileFormat::AnthropicJson => anthropic::normalize(value),
AgentFileFormat::CrewaiYaml => crewai::normalize(value),
AgentFileFormat::LangchainYaml => {
native::normalize(value)
}
AgentFileFormat::CopilotAgentMd => {
let body = extract_markdown_body(raw);
copilot::normalize(value, body)
}
}
}
fn extract_markdown_body(raw: &str) -> &str {
let trimmed = raw.trim();
if !trimmed.starts_with("---") {
return trimmed;
}
let mut parts = trimmed.splitn(3, "---");
parts.next(); parts.next(); parts.next().map(|s| s.trim()).unwrap_or("")
}