diff --git a/src/review.rs b/src/review.rs index bd427c4..c348cf0 100644 --- a/src/review.rs +++ b/src/review.rs @@ -62,33 +62,29 @@ pub(crate) async fn review_findings( show_progress, format!("{REVIEW_EMOJI} Reviewing findings..."), ); + let prompt = format!("Topic: {topic}\n\nResearch findings to review:\n{findings}"); let mut last_error = None; - let mut review = None; + let mut extracted_review = None; + for attempt in 0..=REVIEW_RETRIES { - match reviewer.prompt_typed::(prompt.clone()).await { + match reviewer.prompt_typed(prompt.clone()).await { Ok(r) => { - review = Some(r); + extracted_review = Some(r); break; } Err(e) => { - let suffix = if attempt < REVIEW_RETRIES { - " Retrying..." - } else { - "" - }; - tracing::warn!("Attempt {attempt} to extract JSON failed: {e:?}.{suffix}"); + tracing::warn!("Attempt {attempt} to extract JSON failed: {e:?}."); last_error = Some(e); } } } + drop(spinner); - let review = match review { - Some(review) => review, - None => return Err(last_error.expect("loop always sets last_error on failure").into()), - }; + let review: Review = extracted_review + .ok_or_else(|| last_error.expect("loop always sets last_error on failure"))?; tracing::info!(approved = review.approved, gaps = %review.gaps, "review complete");