Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9728b10ffd | ||
|
|
1b2b392710 |
@@ -28,6 +28,7 @@ async fn info_carries_version_and_presets() {
|
||||
id: "claude".into(),
|
||||
label: "Claude".into(),
|
||||
command: "claude".into(),
|
||||
resume_command: None,
|
||||
}],
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
@@ -313,16 +313,19 @@ pub fn builtin_presets() -> Vec<SpawnPreset> {
|
||||
id: "claude".into(),
|
||||
label: "Claude".into(),
|
||||
command: "claude".into(),
|
||||
resume_command: Some("claude --resume {agent_session}".into()),
|
||||
},
|
||||
SpawnPreset {
|
||||
id: "opencode".into(),
|
||||
label: "opencode".into(),
|
||||
command: "opencode".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
SpawnPreset {
|
||||
id: "zsh".into(),
|
||||
label: "Shell".into(),
|
||||
command: "zsh".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
]
|
||||
}
|
||||
@@ -334,6 +337,7 @@ pub fn custom_preset() -> SpawnPreset {
|
||||
id: CUSTOM_PRESET_ID.into(),
|
||||
label: "Custom…".into(),
|
||||
command: String::new(),
|
||||
resume_command: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -507,6 +511,18 @@ auto_install = false
|
||||
assert!(custom.command.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn builtin_claude_preset_resumes_by_agent_session() {
|
||||
let claude = builtin_presets()
|
||||
.into_iter()
|
||||
.find(|preset| preset.id == "claude")
|
||||
.expect("Claude preset");
|
||||
assert_eq!(
|
||||
claude.resume_command.as_deref(),
|
||||
Some("claude --resume {agent_session}")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spawn_presets_override_replaces_builtins() {
|
||||
// Present list replaces the built-ins entirely; custom still appended.
|
||||
@@ -515,6 +531,7 @@ auto_install = false
|
||||
id: "fish".into(),
|
||||
label: "fish".into(),
|
||||
command: "fish".into(),
|
||||
resume_command: None,
|
||||
}]),
|
||||
..Default::default()
|
||||
};
|
||||
@@ -551,6 +568,7 @@ auto_install = false
|
||||
id: " ".into(),
|
||||
label: "x".into(),
|
||||
command: "x".into(),
|
||||
resume_command: None,
|
||||
}]),
|
||||
..Default::default()
|
||||
};
|
||||
@@ -561,6 +579,7 @@ auto_install = false
|
||||
id: "x".into(),
|
||||
label: "x".into(),
|
||||
command: "".into(),
|
||||
resume_command: None,
|
||||
}]),
|
||||
..Default::default()
|
||||
};
|
||||
@@ -578,11 +597,13 @@ auto_install = false
|
||||
id: "a".into(),
|
||||
label: "a".into(),
|
||||
command: "a".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
SpawnPreset {
|
||||
id: "a".into(),
|
||||
label: "a2".into(),
|
||||
command: "a2".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
]),
|
||||
..Default::default()
|
||||
@@ -597,6 +618,7 @@ auto_install = false
|
||||
id: "custom".into(),
|
||||
label: "Custom".into(),
|
||||
command: "whatever".into(),
|
||||
resume_command: None,
|
||||
}]),
|
||||
..Default::default()
|
||||
};
|
||||
@@ -632,6 +654,27 @@ presets = [
|
||||
assert_eq!(ids, ["claude", "zsh", "custom"]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spawn_preset_parses_resume_command_from_issue_example() {
|
||||
let cfg = toml::from_str::<MaestroConfigFile>(
|
||||
r#"
|
||||
[spawn]
|
||||
presets = [
|
||||
{ id = "claude", command = "claude --dangerously-skip-permissions", resume_command = "claude --dangerously-skip-permissions --resume {agent_session}" }
|
||||
]
|
||||
"#,
|
||||
)
|
||||
.expect("issue #165 example parses");
|
||||
|
||||
let preset = &cfg.spawn.presets.expect("configured presets")[0];
|
||||
assert_eq!(preset.id, "claude");
|
||||
assert_eq!(preset.command, "claude --dangerously-skip-permissions");
|
||||
assert_eq!(
|
||||
preset.resume_command.as_deref(),
|
||||
Some("claude --dangerously-skip-permissions --resume {agent_session}")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn spawn_project_scan_fields_default_to_none() {
|
||||
// Absent [spawn].project_* → None; the daemon applies its own defaults.
|
||||
|
||||
@@ -517,8 +517,11 @@ impl ApiError {
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct SpawnPreset {
|
||||
pub id: String,
|
||||
#[serde(default)]
|
||||
pub label: String,
|
||||
pub command: String,
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub resume_command: Option<String>,
|
||||
}
|
||||
|
||||
/// Build provenance of the running daemon: the commit it was compiled
|
||||
|
||||
@@ -1705,6 +1705,7 @@ mod tests {
|
||||
id: "aider".into(),
|
||||
label: "Aider".into(),
|
||||
command: "aider".into(),
|
||||
resume_command: None,
|
||||
}]);
|
||||
assert_eq!(
|
||||
draft.command(),
|
||||
@@ -1727,11 +1728,13 @@ mod tests {
|
||||
id: "claude".into(),
|
||||
label: "Claude".into(),
|
||||
command: "claude".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
SpawnPreset {
|
||||
id: "aider".into(),
|
||||
label: "Aider".into(),
|
||||
command: "aider".into(),
|
||||
resume_command: None,
|
||||
},
|
||||
]);
|
||||
assert_eq!(draft.command(), "aider");
|
||||
@@ -1751,6 +1754,7 @@ mod tests {
|
||||
id: "claude".into(),
|
||||
label: "Claude".into(),
|
||||
command: "claude".into(),
|
||||
resume_command: None,
|
||||
}]);
|
||||
assert!(draft.is_custom());
|
||||
assert_eq!(draft.command(), "bash -l");
|
||||
|
||||
@@ -183,6 +183,7 @@ mod tests {
|
||||
id: id.into(),
|
||||
label: id.into(),
|
||||
command: command.into(),
|
||||
resume_command: None,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user