huskies: merge 1015

This commit is contained in:
dave
2026-05-13 23:33:30 +00:00
parent 69b207872a
commit 5ed1438ab9
22 changed files with 227 additions and 73 deletions
+9 -8
View File
@@ -5,6 +5,7 @@
//! [`merge_settings_into_toml`] (the pure TOML key-updating logic used by the
//! write path in `mod.rs` + `io.rs`).
use crate::agents::AgentModel;
use crate::config::ProjectConfig;
use serde::{Deserialize, Serialize};
@@ -17,8 +18,8 @@ use serde::{Deserialize, Serialize};
pub struct ProjectSettings {
/// Project-wide default QA mode: "server", "agent", or "human". Default: "server".
pub default_qa: String,
/// Default model for coder-stage agents (e.g. "sonnet").
pub default_coder_model: Option<String>,
/// Default model for coder-stage agents (e.g. `Sonnet`).
pub default_coder_model: Option<AgentModel>,
/// Maximum number of concurrent coder-stage agents.
pub max_coders: Option<u32>,
/// Maximum retries per story per pipeline stage before marking as blocked. Default: 2.
@@ -89,7 +90,7 @@ pub fn merge_settings_into_toml(
Some(v) => {
table.insert(
"default_coder_model".to_string(),
toml::Value::String(v.clone()),
toml::Value::String(v.as_str().to_string()),
);
}
None => {
@@ -180,7 +181,7 @@ mod tests {
fn settings_from_config_copies_all_scalar_fields() {
let cfg = ProjectConfig {
default_qa: "human".to_string(),
default_coder_model: Some("opus".to_string()),
default_coder_model: Some(AgentModel::Opus),
max_coders: Some(4),
max_retries: 5,
base_branch: Some("main".to_string()),
@@ -196,7 +197,7 @@ mod tests {
let s = settings_from_config(&cfg);
assert_eq!(s.default_qa, "human");
assert_eq!(s.default_coder_model, Some("opus".to_string()));
assert_eq!(s.default_coder_model, Some(AgentModel::Opus));
assert_eq!(s.max_coders, Some(4));
assert_eq!(s.max_retries, 5);
assert_eq!(s.base_branch, Some("main".to_string()));
@@ -247,7 +248,7 @@ mod tests {
let mut val = empty_toml();
let s = ProjectSettings {
default_qa: "server".to_string(),
default_coder_model: Some("sonnet".to_string()),
default_coder_model: Some(AgentModel::Sonnet),
max_coders: Some(2),
max_retries: 2,
base_branch: Some("main".to_string()),
@@ -273,7 +274,7 @@ mod tests {
// First set them
let s_with = ProjectSettings {
default_qa: "server".to_string(),
default_coder_model: Some("sonnet".to_string()),
default_coder_model: Some(AgentModel::Sonnet),
max_coders: Some(3),
max_retries: 2,
base_branch: Some("master".to_string()),
@@ -372,7 +373,7 @@ path = "."
let mut val = empty_toml();
let s = ProjectSettings {
default_qa: "human".to_string(),
default_coder_model: Some("opus".to_string()),
default_coder_model: Some(AgentModel::Opus),
max_coders: Some(2),
max_retries: 4,
base_branch: Some("develop".to_string()),