#![allow(clippy::field_reassign_with_default)]
#![allow(clippy::module_inception)]
#![allow(clippy::needless_borrows_for_generic_args)]
#![allow(clippy::type_complexity)]
#![allow(clippy::option_if_let_else)]
pub mod agent;
pub mod cli;
pub mod config;
pub mod error;
pub mod events;
pub mod git;
pub mod governance;
pub mod hitl;
pub mod hooks;
pub mod identity;
pub(crate) mod providers;
pub mod resource;
pub mod run_id;
pub mod session;
pub mod tracker;
pub mod utils;
pub mod workflow;
#[doc(hidden)]
pub mod bdd_api {
pub use crate::cli::handlers::workflow::suggest_flow_for_task;
pub use crate::run_id::validate_run_id;
pub fn resolve_provider_kind(
stage_provider: Option<&str>,
env_value: Option<&str>,
) -> &'static str {
use crate::providers::ProviderKind;
let kind = stage_provider
.and_then(ProviderKind::parse)
.or_else(|| env_value.and_then(ProviderKind::parse))
.unwrap_or(ProviderKind::Claude);
kind.as_str()
}
pub fn parse_provider_kind(input: &str) -> Option<&'static str> {
crate::providers::ProviderKind::parse(input).map(|k| k.as_str())
}
}