diff options
Diffstat (limited to 'makima/src/daemon/config.rs')
| -rw-r--r-- | makima/src/daemon/config.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/makima/src/daemon/config.rs b/makima/src/daemon/config.rs index 476b57e..79c9341 100644 --- a/makima/src/daemon/config.rs +++ b/makima/src/daemon/config.rs @@ -218,6 +218,11 @@ pub struct ProcessConfig { /// Set to 0 to disable. Default: 300 (5 minutes). #[serde(default = "default_heartbeat_commit_interval", alias = "heartbeatcommitintervalsecs")] pub heartbeat_commit_interval_secs: u64, + + /// Maximum iterations for autonomous task loops. + /// Set to 0 for unlimited (not recommended). Default: 10. + #[serde(default = "default_max_iterations", alias = "maxiterations")] + pub max_iterations: u32, } fn default_claude_command() -> String { @@ -228,6 +233,10 @@ fn default_heartbeat_commit_interval() -> u64 { 300 // 5 minutes } +fn default_max_iterations() -> u32 { + 10 +} + fn default_max_tasks() -> u32 { 4 } @@ -245,6 +254,7 @@ impl Default for ProcessConfig { env_vars: HashMap::new(), bubblewrap: BubblewrapConfig::default(), heartbeat_commit_interval_secs: default_heartbeat_commit_interval(), + max_iterations: default_max_iterations(), } } } @@ -530,6 +540,11 @@ impl DaemonConfig { config.process.bubblewrap.enabled = true; } + // Apply max_iterations if CLI flag is set + if let Some(max_iterations) = args.max_iterations { + config.process.max_iterations = max_iterations; + } + // Validate required fields after all sources are merged config.validate()?; @@ -564,6 +579,8 @@ impl DaemonConfig { default_timeout_secs: 0, env_vars: HashMap::new(), bubblewrap: BubblewrapConfig::default(), + heartbeat_commit_interval_secs: 300, + max_iterations: 10, }, local_db: LocalDbConfig { path: PathBuf::from("/tmp/makima-daemon-test/state.db"), |
