Download codex-rs/protocol/src/review_format.rs from SaylorTwift/codex: direct link, hf CLI and curl.
- Browser
- Download file 2.87 kB
-
https://huggingface.co/SaylorTwift/codex/resolve/main/codex-rs/protocol/src/review_format.rs
- Command line
-
hf download hf://SaylorTwift/codex/codex-rs/protocol/src/review_format.rs
-
curl -L -o review_format.rs https://huggingface.co/SaylorTwift/codex/resolve/main/codex-rs/protocol/src/review_format.rs
2.87 kB
| use crate::protocol::ReviewFinding; | |
| use crate::protocol::ReviewOutputEvent; | |
| // These helpers return plain strings that higher layers may style as needed. | |
| fn format_location(item: &ReviewFinding) -> String { | |
| let path = item.code_location.absolute_file_path.display(); | |
| let start = item.code_location.line_range.start; | |
| let end = item.code_location.line_range.end; | |
| format!("{path}:{start}-{end}") | |
| } | |
| /// Fallback text used when a review contains no displayable output. | |
| pub const REVIEW_FALLBACK_MESSAGE: &str = "Reviewer failed to output a response."; | |
| /// Format a full review findings block as plain text lines. | |
| /// | |
| /// - When `selection` is `Some`, each item line includes a checkbox marker: | |
| /// "[x]" for selected items and "[ ]" for unselected. Missing indices | |
| /// default to selected. | |
| /// - When `selection` is `None`, the marker is omitted and a simple bullet is | |
| /// rendered ("- Title — path:start-end"). | |
| pub fn format_review_findings_block( | |
| findings: &[ReviewFinding], | |
| selection: Option<&[bool]>, | |
| ) -> String { | |
| let mut lines: Vec<String> = Vec::new(); | |
| lines.push(String::new()); | |
| // Header | |
| if findings.len() > 1 { | |
| lines.push("Full review comments:".to_string()); | |
| } else { | |
| lines.push("Review comment:".to_string()); | |
| } | |
| for (idx, item) in findings.iter().enumerate() { | |
| lines.push(String::new()); | |
| let title = &item.title; | |
| let location = format_location(item); | |
| if let Some(flags) = selection { | |
| // Default to selected if index is out of bounds. | |
| let checked = flags.get(idx).copied().unwrap_or(true); | |
| let marker = if checked { "[x]" } else { "[ ]" }; | |
| lines.push(format!("- {marker} {title} — {location}")); | |
| } else { | |
| lines.push(format!("- {title} — {location}")); | |
| } | |
| for body_line in item.body.lines() { | |
| lines.push(format!(" {body_line}")); | |
| } | |
| } | |
| lines.join("\n") | |
| } | |
| /// Render a human-readable review summary suitable for a user-facing message. | |
| /// | |
| /// Returns either the explanation, the formatted findings block, or both | |
| /// separated by a blank line. If neither is present, emits a fallback message. | |
| pub fn render_review_output_text(output: &ReviewOutputEvent) -> String { | |
| let mut sections = Vec::new(); | |
| let explanation = output.overall_explanation.trim(); | |
| if !explanation.is_empty() { | |
| sections.push(explanation.to_string()); | |
| } | |
| if !output.findings.is_empty() { | |
| let findings = format_review_findings_block(&output.findings, /*selection*/ None); | |
| let trimmed = findings.trim(); | |
| if !trimmed.is_empty() { | |
| sections.push(trimmed.to_string()); | |
| } | |
| } | |
| if sections.is_empty() { | |
| REVIEW_FALLBACK_MESSAGE.to_string() | |
| } else { | |
| sections.join("\n\n") | |
| } | |
| } | |