diff --git a/static/ui.js b/static/ui.js index 8fd37a782..45252c980 100644 --- a/static/ui.js +++ b/static/ui.js @@ -12908,7 +12908,8 @@ function _toolResultOneLiner(preview){ const first=preview.split('\n').find(l=>l.trim())||''; const trimmed=first.trim(); if(!trimmed) return ''; - if(trimmed[0]==='{'||trimmed[0]==='[') return ''; + if(trimmed[0]==='{') return ''; + if(trimmed[0]==='['){try{JSON.parse(trimmed);return '';}catch(e){/* not JSON */}} return trimmed.length>180?trimmed.slice(0,177)+'…':trimmed; } function _toolCardPreviewText(tc, displaySnippet){ diff --git a/tests/test_issue4752_collapsed_card_shows_result.py b/tests/test_issue4752_collapsed_card_shows_result.py index 3cb2e6f5c..c1ec8e9df 100644 --- a/tests/test_issue4752_collapsed_card_shows_result.py +++ b/tests/test_issue4752_collapsed_card_shows_result.py @@ -99,6 +99,9 @@ class TestToolResultOneLiner: def test_json_array_suppressed(self): assert _result_one_liner('[1,2,3]') == "" + def test_bracket_prefixed_non_json_shown(self): + assert _result_one_liner('[INFO] 3 files created') == "[INFO] 3 files created" + def test_multiline_collapses_to_first_nonempty_line(self): assert _result_one_liner("Line 1\nLine 2\nLine 3") == "Line 1"