Skip to main content

phi_agent/agent/
builder.rs

1//! General-purpose AgentBuilder factory — provides default configuration
2//! shared across consumers.
3//!
4//! Returns a pre-configured AgentBuilder; callers then register tools and
5//! approval handlers on top.
6
7use std::sync::Arc;
8
9use agent_base::{AgentBuilder, ConsecutiveFailureRecovery, Language, ReasoningConfig, ReasoningEffort};
10
11/// Returns an AgentBuilder with sensible defaults:
12/// - English
13/// - Medium reasoning effort
14/// - Thinking enabled
15/// - Consecutive failure recovery (default 3 retries)
16/// - Session limits (50/100/50k)
17///
18/// Callers are responsible for: registering tools, setting the approval
19/// handler, setting the system prompt, then calling `.build()`.
20pub fn base_agent_builder(llm_client: Arc<dyn agent_base::LlmClient>) -> AgentBuilder {
21    AgentBuilder::new(llm_client)
22        .language(Language::En)
23        .reasoning(ReasoningConfig { effort: Some(ReasoningEffort::Medium), ..Default::default() })
24        .enable_thought(true)
25        .enable_thinking(true)
26        .max_sessions(50)
27        .max_turns_per_session(100)
28        .max_message_tokens(50_000)
29        .max_tool_output_chars(4000)
30        .error_recovery(Arc::new(ConsecutiveFailureRecovery::new(3)))
31}