Skip to main content

orchestrator_config/
adaptive.rs

1//! Adaptive planner configuration data types.
2
3use serde::{Deserialize, Serialize};
4
5/// Configuration for agent-driven adaptive planning.
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
7pub struct AdaptivePlannerConfig {
8    /// Whether adaptive planning is enabled.
9    #[serde(default)]
10    pub enabled: bool,
11    /// Agent id responsible for generating the adaptive plan.
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    pub planner_agent: Option<String>,
14    /// Maximum number of history entries to include in the planning prompt.
15    #[serde(default = "default_10")]
16    pub max_history: usize,
17    /// Temperature hint forwarded to the planner prompt.
18    #[serde(default = "default_07")]
19    pub temperature: f32,
20    /// Planner failure handling policy.
21    #[serde(default)]
22    pub fallback_mode: AdaptiveFallbackMode,
23}
24
25/// Fallback behavior used when adaptive planning fails.
26#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
27#[serde(rename_all = "snake_case")]
28pub enum AdaptiveFallbackMode {
29    /// Fall back to deterministic planning when the adaptive planner fails.
30    #[default]
31    SoftFallback,
32    /// Treat adaptive planner failures as hard errors.
33    FailClosed,
34}
35
36fn default_10() -> usize {
37    10
38}
39
40fn default_07() -> f32 {
41    0.7
42}
43
44impl Default for AdaptivePlannerConfig {
45    fn default() -> Self {
46        Self {
47            enabled: false,
48            planner_agent: None,
49            max_history: 10,
50            temperature: 0.7,
51            fallback_mode: AdaptiveFallbackMode::SoftFallback,
52        }
53    }
54}