mod chain;
mod cli;
pub mod detect;
mod env;
mod model;
mod prompt;
mod scripted;
mod slots;
pub use agent_call::Provider;
pub use chain::AgentChain;
pub use cli::{CliBackend, CliBackendConfig};
pub use env::EnvScrub;
pub use model::{model_parts, validate_model};
pub use prompt::inline_system_prompt;
pub use scripted::ScriptedBackend;
pub use slots::{MachineSlots, Slot};
pub fn parse_provider(name: &str) -> Option<Provider> {
match name {
"claude" => Some(Provider::Claude),
"codex" => Some(Provider::Codex),
"opencode" => Some(Provider::OpenCodeV2),
"devin" => Some(Provider::Devin),
_ => None,
}
}
pub fn provider_name(provider: Provider) -> &'static str {
match provider {
Provider::Claude => "claude",
Provider::Codex => "codex",
Provider::OpenCodeV2 => "opencode",
Provider::Devin => "devin",
}
}
pub const PROVIDERS: [Provider; 4] = [
Provider::Claude,
Provider::Codex,
Provider::OpenCodeV2,
Provider::Devin,
];