summaryrefslogtreecommitdiff
path: root/makima/src/daemon/config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/daemon/config.rs')
-rw-r--r--makima/src/daemon/config.rs17
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"),