bamboo_agent/agent/loop_module/
config.rs1use std::sync::Arc;
2
3use crate::agent::core::budget::TokenBudget;
4use crate::agent::core::composition::CompositionExecutor;
5use crate::agent::core::storage::Storage;
6use crate::agent::core::tools::ToolSchema;
7use crate::agent::metrics::MetricsCollector;
8use crate::agent::skill::SkillManager;
9use crate::agent::tools::ToolRegistry;
10
11pub struct AgentLoopConfig {
13 pub max_rounds: usize,
14 pub system_prompt: Option<String>,
15 pub additional_tool_schemas: Vec<ToolSchema>,
16 pub tool_registry: Arc<ToolRegistry>,
17 pub composition_executor: Option<Arc<CompositionExecutor>>,
18 pub skill_manager: Option<Arc<SkillManager>>,
19 pub skip_initial_user_message: bool,
21 pub storage: Option<Arc<dyn Storage>>,
23 pub metrics_collector: Option<MetricsCollector>,
25 pub model_name: Option<String>,
27 pub token_budget: Option<TokenBudget>,
29}
30
31impl Default for AgentLoopConfig {
32 fn default() -> Self {
33 Self {
34 max_rounds: 50,
35 system_prompt: None,
36 additional_tool_schemas: Vec::new(),
37 tool_registry: Arc::new(ToolRegistry::new()),
38 composition_executor: None,
39 skill_manager: None,
40 skip_initial_user_message: false,
41 storage: None,
42 metrics_collector: None,
43 model_name: None,
44 token_budget: None,
45 }
46 }
47}