diff --git a/src/app/handlers.rs b/src/app/handlers.rs index 6eb3760..4083322 100644 --- a/src/app/handlers.rs +++ b/src/app/handlers.rs @@ -1328,7 +1328,7 @@ fn handle_file_history( if robot_mode { let elapsed_ms = start.elapsed().as_millis() as u64; - print_file_history_json(&result, elapsed_ms); + print_file_history_json(&result, elapsed_ms)?; } else { print_file_history(&result); } @@ -1384,7 +1384,7 @@ fn handle_trace( if robot_mode { let elapsed_ms = start.elapsed().as_millis() as u64; - print_trace_json(&result, elapsed_ms, line_requested); + print_trace_json(&result, elapsed_ms, line_requested)?; } else { print_trace(&result); } diff --git a/src/cli/commands/file_history.rs b/src/cli/commands/file_history.rs index 588e87e..6bbec0e 100644 --- a/src/cli/commands/file_history.rs +++ b/src/cli/commands/file_history.rs @@ -5,7 +5,7 @@ use tracing::info; use crate::Config; use crate::cli::render::{self, Icons, Theme}; use crate::core::db::create_connection; -use crate::core::error::Result; +use crate::core::error::{LoreError, Result}; use crate::core::file_history::resolve_rename_chain; use crate::core::paths::get_db_path; use crate::core::project::resolve_project; @@ -391,7 +391,7 @@ pub fn print_file_history(result: &FileHistoryResult) { // ── Robot (JSON) output ───────────────────────────────────────────────────── -pub fn print_file_history_json(result: &FileHistoryResult, elapsed_ms: u64) { +pub fn print_file_history_json(result: &FileHistoryResult, elapsed_ms: u64) -> Result<()> { let output = serde_json::json!({ "ok": true, "data": { @@ -409,5 +409,10 @@ pub fn print_file_history_json(result: &FileHistoryResult, elapsed_ms: u64) { } }); - println!("{}", serde_json::to_string(&output).unwrap_or_default()); + println!( + "{}", + serde_json::to_string(&output) + .map_err(|e| LoreError::Other(format!("JSON serialization failed: {e}")))? + ); + Ok(()) } diff --git a/src/cli/commands/trace.rs b/src/cli/commands/trace.rs index e56ee07..120b87d 100644 --- a/src/cli/commands/trace.rs +++ b/src/cli/commands/trace.rs @@ -1,4 +1,5 @@ use crate::cli::render::{Icons, Theme}; +use crate::core::error::{LoreError, Result}; use crate::core::trace::{TraceChain, TraceResult}; /// Parse a path with optional `:line` suffix. @@ -152,7 +153,11 @@ fn truncate_body(body: &str, max: usize) -> String { format!("{}...", &body[..boundary]) } -pub fn print_trace_json(result: &TraceResult, elapsed_ms: u64, line_requested: Option) { +pub fn print_trace_json( + result: &TraceResult, + elapsed_ms: u64, + line_requested: Option, +) -> Result<()> { // Truncate discussion bodies for token efficiency in robot mode let chains: Vec = result .trace_chains @@ -205,7 +210,12 @@ pub fn print_trace_json(result: &TraceResult, elapsed_ms: u64, line_requested: O } }); - println!("{}", serde_json::to_string(&output).unwrap_or_default()); + println!( + "{}", + serde_json::to_string(&output) + .map_err(|e| LoreError::Other(format!("JSON serialization failed: {e}")))? + ); + Ok(()) } #[cfg(test)]