@@ -27,8 +27,8 @@ abstract class ToolRenderer {
2727 String get name;
2828
2929 /// Human-facing title shown as the card title and detail-view header
30- /// (e.g. `Read ` , `Write ` ). Defaults to a capitalised [name] .
31- String get displayName => _titleCase ( name) ;
30+ /// (e.g. `read ` , `write ` ). Defaults to [name] as-is (lowercase) .
31+ String get displayName => name;
3232
3333 /// One-line description for the card header.
3434 String ? subtitle (ToolCallItem item) => null ;
@@ -320,8 +320,6 @@ class _ReadRenderer extends ToolRenderer {
320320 @override
321321 String get name => 'read' ;
322322 @override
323- String get displayName => 'Read' ;
324- @override
325323 IconData get icon => Icons .menu_book_outlined;
326324 @override
327325 String ? subtitle (ToolCallItem item) => item.args['path' ]? .toString ();
@@ -333,7 +331,7 @@ class _ReadRenderer extends ToolRenderer {
333331 final offset = item.args['offset' ];
334332 final limit = item.args['limit' ];
335333 return ToolDetailScaffold (
336- title: displayName ,
334+ title: 'read' ,
337335 subtitle: path,
338336 children: [
339337 if (offset != null || limit != null )
@@ -360,8 +358,6 @@ class _WriteRenderer extends ToolRenderer {
360358 @override
361359 String get name => 'write' ;
362360 @override
363- String get displayName => 'Write' ;
364- @override
365361 IconData get icon => Icons .edit_note_outlined;
366362 @override
367363 String ? subtitle (ToolCallItem item) => item.args['path' ]? .toString ();
@@ -373,15 +369,15 @@ class _WriteRenderer extends ToolRenderer {
373369 item.args['content' ]? .toString () ?? item.args['text' ]? .toString () ?? '' ;
374370 final result = item.output ?? item.summary ?? '' ;
375371 return ToolDetailScaffold (
376- title: displayName ,
372+ title: 'write' ,
377373 subtitle: path,
378374 children: [
379375 ToolSection (
380376 title: 'Content written' ,
381377 child: MonoText (content.isEmpty ? '(empty)' : content),
382378 ),
383379 if (result.isNotEmpty)
384- ToolSection (title: 'Result' , child: Text (result)),
380+ ToolSection (title: 'Result' , child: MonoText (result)),
385381 ],
386382 );
387383 }
@@ -392,8 +388,6 @@ class _EditRenderer extends ToolRenderer {
392388 @override
393389 String get name => 'edit' ;
394390 @override
395- String get displayName => 'Edit' ;
396- @override
397391 IconData get icon => Icons .difference_outlined;
398392 @override
399393 String ? subtitle (ToolCallItem item) => item.args['path' ]? .toString ();
@@ -409,8 +403,6 @@ class _BashRenderer extends ToolRenderer {
409403 @override
410404 String get name => 'bash' ;
411405 @override
412- String get displayName => 'Bash' ;
413- @override
414406 IconData get icon => Icons .attach_money;
415407 @override
416408 String ? subtitle (ToolCallItem item) {
@@ -427,7 +419,7 @@ class _BashRenderer extends ToolRenderer {
427419 : (item.output ?? '' );
428420 final failed = item.ended && (item.exitCode ?? 0 ) != 0 ;
429421 return ToolDetailScaffold (
430- title: displayName ,
422+ title: 'bash' ,
431423 subtitle: command.isEmpty ? null : command,
432424 children: [
433425 if (command.isNotEmpty)
@@ -440,7 +432,7 @@ class _BashRenderer extends ToolRenderer {
440432 else if (item.ended)
441433 ToolSection (
442434 title: 'Result' ,
443- child: Text (item.summary ?? 'exit ${item .exitCode ?? 0 }' ),
435+ child: MonoText (item.summary ?? 'exit ${item .exitCode ?? 0 }' ),
444436 ),
445437 ],
446438 );
@@ -452,8 +444,6 @@ class _GrepRenderer extends ToolRenderer {
452444 @override
453445 String get name => 'grep' ;
454446 @override
455- String get displayName => 'Grep' ;
456- @override
457447 IconData get icon => Icons .search;
458448 @override
459449 String ? subtitle (ToolCallItem item) {
@@ -469,7 +459,7 @@ class _GrepRenderer extends ToolRenderer {
469459 final path = item.args['path' ]? .toString ();
470460 final output = item.output ?? item.deltas.join ();
471461 return ToolDetailScaffold (
472- title: displayName ,
462+ title: 'grep' ,
473463 subtitle: pattern.isEmpty ? null : pattern,
474464 children: [
475465 ToolSection (
@@ -488,7 +478,7 @@ class _GrepRenderer extends ToolRenderer {
488478 else if (item.ended)
489479 ToolSection (
490480 title: 'Results' ,
491- child: Text (item.summary ?? 'No matches found' ),
481+ child: MonoText (item.summary ?? 'No matches found' ),
492482 ),
493483 ],
494484 );
@@ -564,7 +554,7 @@ class _EditDiffView extends StatelessWidget {
564554 : (item.output ?? '' );
565555
566556 return ToolDetailScaffold (
567- title: 'Edit ' ,
557+ title: 'edit ' ,
568558 subtitle: path,
569559 children: [
570560 if (hasDiff)
@@ -646,7 +636,7 @@ class _AskUserQuestionRenderer extends ToolRenderer {
646636 @override
647637 String get name => _name;
648638 @override
649- String get displayName => 'Ask the user ' ;
639+ String get displayName => 'askUserQuestion ' ;
650640 @override
651641 IconData get icon => Icons .quiz_outlined;
652642
@@ -682,7 +672,7 @@ class _AskUserQuestionRenderer extends ToolRenderer {
682672 final cs = Theme .of (context).colorScheme;
683673 final questions = _questions (item);
684674 return Scaffold (
685- appBar: AppBar (centerTitle: false , title: const Text ('Ask the user ' )),
675+ appBar: AppBar (centerTitle: false , title: const Text ('askUserQuestion ' )),
686676 body: ListView .separated (
687677 padding: const EdgeInsets .all (16 ),
688678 itemCount: questions.length,
0 commit comments