huskies: merge 560_story_make_merge_agent_work_return_results_like_run_tests_instead_of_polling

This commit is contained in:
dave
2026-04-14 10:22:52 +00:00
parent ff1149750b
commit df5ba8ebab
3 changed files with 33 additions and 50 deletions
+16 -9
View File
@@ -24,16 +24,23 @@ impl AgentPool {
project_root: &Path,
story_id: &str,
) -> Result<(), String> {
// Guard against double-starts.
// Guard against double-starts; clear any completed/failed entry so the
// caller can retry without needing to call a separate cleanup step.
{
let jobs = self.merge_jobs.lock().map_err(|e| e.to_string())?;
if let Some(job) = jobs.get(story_id)
&& matches!(job.status, crate::agents::merge::MergeJobStatus::Running)
{
return Err(format!(
"Merge already in progress for '{story_id}'. \
Use get_merge_status to poll for completion."
));
let mut jobs = self.merge_jobs.lock().map_err(|e| e.to_string())?;
if let Some(job) = jobs.get(story_id) {
match &job.status {
crate::agents::merge::MergeJobStatus::Running => {
return Err(format!(
"Merge already in progress for '{story_id}'. \
Use get_merge_status to poll for completion."
));
}
// Completed or Failed: clear stale entry so we can start fresh.
_ => {
jobs.remove(story_id);
}
}
}
}