diff --git a/crates/acp_thread/src/acp_thread.rs b/crates/acp_thread/src/acp_thread.rs index a994cc8e57e4456ec57092b2257269b104af74c7..3fe833cbeade93ffba422198fa6bf21180b26efe 100644 --- a/crates/acp_thread/src/acp_thread.rs +++ b/crates/acp_thread/src/acp_thread.rs @@ -11,6 +11,7 @@ use language::language_settings::FormatOnSave; pub use mention::*; use project::lsp_store::{FormatTrigger, LspFormatTarget}; use serde::{Deserialize, Serialize}; +use serde_json::to_string_pretty; use settings::Settings as _; use task::{Shell, ShellBuilder}; pub use terminal::*; @@ -2422,8 +2423,10 @@ fn markdown_for_raw_output( ) })), value => Some(cx.new(|cx| { + let pretty_json = to_string_pretty(value).unwrap_or_else(|_| value.to_string()); + Markdown::new( - format!("```json\n{}\n```", value).into(), + format!("```json\n{}\n```", pretty_json).into(), Some(language_registry.clone()), None, cx, diff --git a/crates/agent_ui/src/acp/thread_view.rs b/crates/agent_ui/src/acp/thread_view.rs index 32b2de2c0d850676bf7a6a80ee88950d62aa24e0..72d5536ce28641d6a7b830346542beece52bf6e0 100644 --- a/crates/agent_ui/src/acp/thread_view.rs +++ b/crates/agent_ui/src/acp/thread_view.rs @@ -2489,9 +2489,11 @@ impl AcpThreadView { .border_color(self.tool_card_border_color(cx)) .child(input_output_header("Raw Input:".into())) .children(tool_call.raw_input_markdown.clone().map(|input| { - self.render_markdown( - input, - default_markdown_style(false, false, window, cx), + div().id(("tool-call-raw-input-markdown", entry_ix)).child( + self.render_markdown( + input, + default_markdown_style(false, false, window, cx), + ), ) })) .child(input_output_header("Output:".into())), @@ -2499,15 +2501,17 @@ impl AcpThreadView { }) .children(tool_call.content.iter().enumerate().map( |(content_ix, content)| { - div().child(self.render_tool_call_content( - entry_ix, - content, - content_ix, - tool_call, - use_card_layout, - window, - cx, - )) + div().id(("tool-call-output", entry_ix)).child( + self.render_tool_call_content( + entry_ix, + content, + content_ix, + tool_call, + use_card_layout, + window, + cx, + ), + ) }, )) .into_any(),