@@ -54,10 +54,28 @@ export function buildThinkingSummary(content: string, messageParams: unknown | n
5454 return "" ;
5555}
5656
57- /** Formats a tool's parameters for status display, preserving full bash commands but truncating others. */
57+ /** Formats multi-line Bash params as first line, a placeholder, and the final line. */
58+ export function formatBashStatusParams ( params : string ) : string {
59+ const value = params . trim ( ) ;
60+ if ( ! value ) {
61+ return "" ;
62+ }
63+
64+ const lines = value . split ( / \r ? \n / ) ;
65+ if ( lines . length <= 1 ) {
66+ return value ;
67+ }
68+
69+ return `${ lines [ 0 ] } ... ${ lines [ lines . length - 1 ] . trimStart ( ) } ` ;
70+ }
71+
72+ /** Formats a tool's parameters for status display, compacting multi-line Bash commands and truncating others. */
5873export function formatToolStatusParams ( summary : ToolSummary ) : string {
74+ if ( summary . name . toLowerCase ( ) === "bash" ) {
75+ return formatBashStatusParams ( summary . params ) ;
76+ }
5977 const params = firstNonEmptyLine ( summary . params ) ;
60- return summary . name . toLowerCase ( ) === "bash" ? params : truncate ( params , 120 ) ;
78+ return truncate ( params , 120 ) ;
6179}
6280
6381/** Builds a structured summary (name, params, ok, metadata) from a tool session message. */
@@ -226,25 +244,13 @@ export function renderMessageToStdout(message: SessionMessage, mode: RawMode): s
226244 }
227245
228246 if ( message . role === "tool" ) {
229- const payload = parseToolPayload ( message . content ) ;
230- const metaFunctionName =
231- message . meta ?. function && typeof ( message . meta . function as { name ?: unknown } ) . name === "string"
232- ? ( message . meta . function as { name : string } ) . name
233- : null ;
234- const name = payload . name || metaFunctionName || "tool" ;
235- const metaParams = typeof message . meta ?. paramsMd === "string" ? message . meta . paramsMd . trim ( ) : "" ;
236- const params = name . toLowerCase ( ) === "bash" ? metaParams : truncate ( metaParams , 120 ) ;
237- const statusLine = `${ chalk ( "✧" ) } ${ chalk ( formatStatusName ( name ) ) } ${ params ? ` ${ chalk ( params ) } ` : "" } ` ;
247+ const summary = buildToolSummary ( message ) ;
248+ const params = formatToolStatusParams ( summary ) ;
249+ const statusLine = `${ chalk ( "✧" ) } ${ chalk ( formatStatusName ( summary . name ) ) } ${ params ? ` ${ chalk ( params ) } ` : "" } ` ;
238250
239251 const metaResultMd = typeof message . meta ?. resultMd === "string" ? message . meta . resultMd . trim ( ) : "" ;
240252 const result = metaResultMd ? `\n${ chalk . dim ( " └ Result" ) } \n${ metaResultMd } ` : "" ;
241253
242- const summary : ToolSummary = {
243- name,
244- params,
245- ok : payload . ok !== false ,
246- metadata : payload . metadata ,
247- } ;
248254 const planLines = getUpdatePlanPreviewLines ( summary ) ;
249255 if ( planLines . length > 0 ) {
250256 const planText = planLines . map ( ( line ) => ` ${ line } ` ) . join ( "\n" ) ;
0 commit comments