pub use crate::error::{MagiError, ProviderError};
pub use crate::schema::{AgentName, AgentOutput, Finding, Mode, Severity, Verdict};
pub use crate::validate::{ValidationLimits, Validator, clean_title};
pub use crate::consensus::{ConsensusConfig, ConsensusEngine, ConsensusResult};
pub use crate::reporting::{
BANNER_INNER, BANNER_WIDTH, MagiReport, ReportConfig, ReportError, ReportFormatter,
};
pub use crate::provider::{CompletionConfig, LlmProvider, RetryProvider, resolve_claude_alias};
pub use crate::agent::{Agent, AgentFactory};
pub use crate::orchestrator::{DEFAULT_MAX_INPUT_LEN, Magi, MagiBuilder, MagiConfig};
#[cfg(feature = "claude-api")]
pub use crate::providers::claude::ClaudeProvider;
#[cfg(feature = "claude-cli")]
pub use crate::providers::claude_cli::ClaudeCliProvider;
#[cfg(test)]
mod tests {
#[test]
fn test_prelude_reexports_core_types() {
use crate::prelude::*;
let _: fn() -> MagiError = || MagiError::Validation("test".into());
let _: fn() -> ProviderError = || ProviderError::Network {
message: "test".into(),
};
let _mode = Mode::CodeReview;
let _verdict = Verdict::Approve;
let _severity = Severity::Info;
let _agent_name = AgentName::Melchior;
fn _takes_finding(_f: &Finding) {}
fn _takes_agent_output(_o: &AgentOutput) {}
let _config = CompletionConfig::default();
fn _takes_provider(_p: &dyn LlmProvider) {}
let _config = ConsensusConfig::default();
fn _takes_consensus_result(_r: &ConsensusResult) {}
fn _takes_magi_config(_c: &MagiConfig) {}
fn _takes_magi_report(_r: &MagiReport) {}
let _limits = ValidationLimits::default();
let _validator = Validator::default();
}
#[test]
fn test_crate_compiles_with_no_features() {
use crate::prelude::*;
let _mode = Mode::Analysis;
let _err = MagiError::Validation("test".into());
}
#[test]
fn test_feature_flags_gate_provider_modules() {
#[cfg(not(feature = "claude-api"))]
{
}
#[cfg(not(feature = "claude-cli"))]
{
}
}
#[cfg(feature = "claude-api")]
#[test]
fn test_crate_compiles_with_claude_api_feature() {
use crate::prelude::ClaudeProvider;
fn _takes_provider(_p: &ClaudeProvider) {}
}
#[cfg(feature = "claude-cli")]
#[test]
fn test_crate_compiles_with_claude_cli_feature() {
use crate::prelude::ClaudeCliProvider;
fn _takes_provider(_p: &ClaudeCliProvider) {}
}
#[test]
fn test_prelude_reexports_retry_provider() {
use crate::prelude::RetryProvider;
fn _takes_provider(_p: &RetryProvider) {}
}
#[test]
fn test_prelude_reexports_agent_types() {
use crate::prelude::{Agent, AgentFactory};
fn _takes_agent(_a: &Agent) {}
fn _takes_factory(_f: &AgentFactory) {}
}
#[test]
fn test_prelude_reexports_report_types() {
use crate::prelude::{ReportConfig, ReportFormatter};
let _config = ReportConfig::default();
let _formatter = ReportFormatter::new();
}
#[test]
fn test_prelude_reexports_consensus_engine() {
use crate::prelude::ConsensusEngine;
let _engine = ConsensusEngine::default();
}
#[test]
fn test_prelude_reexports_builder() {
use crate::prelude::MagiBuilder;
fn _takes_builder(_b: MagiBuilder) {}
}
}