1mod chain;
8mod cli;
9pub mod detect;
10mod env;
11mod model;
12mod prompt;
13mod slots;
14
15pub use agent_call::Provider;
16pub use chain::AgentChain;
17pub use cli::{CliBackend, CliBackendConfig};
18pub use env::EnvScrub;
19pub use model::{model_parts, validate_model};
20pub use prompt::inline_system_prompt;
21pub use slots::{MachineSlots, Slot};
22
23pub fn parse_provider(name: &str) -> Option<Provider> {
25 match name {
26 "claude" => Some(Provider::Claude),
27 "codex" => Some(Provider::Codex),
28 "opencode" => Some(Provider::OpenCodeV2),
29 "devin" => Some(Provider::Devin),
30 _ => None,
31 }
32}
33
34pub fn provider_name(provider: Provider) -> &'static str {
36 match provider {
37 Provider::Claude => "claude",
38 Provider::Codex => "codex",
39 Provider::OpenCodeV2 => "opencode",
40 Provider::Devin => "devin",
41 }
42}
43
44pub const PROVIDERS: [Provider; 4] = [
46 Provider::Claude,
47 Provider::Codex,
48 Provider::OpenCodeV2,
49 Provider::Devin,
50];