Trim double Total output lines (#4787)

This commit is contained in:
pakrym-oai
2025-10-05 16:41:55 -07:00
committed by GitHub
parent b2d81a7cac
commit a90a58f7a1
3 changed files with 16 additions and 7 deletions

View File

@@ -159,12 +159,16 @@ fn build_structured_output(parsed: &ExecOutputJson) -> String {
parsed.metadata.duration_seconds parsed.metadata.duration_seconds
)); ));
let mut output = parsed.output.clone();
if let Some(total_lines) = extract_total_output_lines(&parsed.output) { if let Some(total_lines) = extract_total_output_lines(&parsed.output) {
sections.push(format!("Total output lines: {total_lines}")); sections.push(format!("Total output lines: {total_lines}"));
if let Some(stripped) = strip_total_output_header(&output) {
output = stripped.to_string();
}
} }
sections.push("Output:".to_string()); sections.push("Output:".to_string());
sections.push(parsed.output.clone()); sections.push(output);
sections.join("\n") sections.join("\n")
} }
@@ -177,6 +181,13 @@ fn extract_total_output_lines(output: &str) -> Option<u32> {
total_segment.parse::<u32>().ok() total_segment.parse::<u32>().ok()
} }
fn strip_total_output_header(output: &str) -> Option<&str> {
let after_prefix = output.strip_prefix("Total output lines: ")?;
let (_, remainder) = after_prefix.split_once('\n')?;
let remainder = remainder.strip_prefix('\n').unwrap_or(remainder);
Some(remainder)
}
#[derive(Debug)] #[derive(Debug)]
pub enum ResponseEvent { pub enum ResponseEvent {
Created, Created,

View File

@@ -255,17 +255,17 @@ async fn shell_output_reserializes_truncated_content() -> Result<()> {
Wall time: [0-9]+(?:\.[0-9]+)? seconds Wall time: [0-9]+(?:\.[0-9]+)? seconds
Total output lines: 400 Total output lines: 400
Output: Output:
Total output lines: 400
1 1
2 2
3 3
4 4
5 5
6 6
.*\[\.{3} omitted \d+ of 400 lines \.{3}\] .*
\[\.{3} omitted \d+ of 400 lines \.{3}\]
.*\n396 .*
396
397 397
398 398
399 399

View File

@@ -516,7 +516,6 @@ async fn shell_sandbox_denied_truncates_error_output() -> Result<()> {
Wall time: [0-9]+(?:\.[0-9]+)? seconds Wall time: [0-9]+(?:\.[0-9]+)? seconds
Total output lines: \d+ Total output lines: \d+
Output: Output:
Total output lines: \d+
failed in sandbox: .*?(?:Operation not permitted|Permission denied|Read-only file system).*? failed in sandbox: .*?(?:Operation not permitted|Permission denied|Read-only file system).*?
\[\.{3} omitted \d+ of \d+ lines \.{3}\] \[\.{3} omitted \d+ of \d+ lines \.{3}\]
@@ -601,7 +600,6 @@ execution error: .*$"#;
Wall time: [0-9]+(?:\.[0-9]+)? seconds Wall time: [0-9]+(?:\.[0-9]+)? seconds
Total output lines: \d+ Total output lines: \d+
Output: Output:
Total output lines: \d+
execution error: .*$"#; execution error: .*$"#;
let spawn_error_regex = Regex::new(spawn_error_pattern)?; let spawn_error_regex = Regex::new(spawn_error_pattern)?;