fix(ui): stop stripping the word assistant from rendered text (#5974)

* fix: stop stripping the word 'assistant' from rendered text

The QWEN_BARE_MARKER_RE regex in both the Python backend (tool_parsing.py)
and JS frontend (chatRenderer.js) was matching any standalone occurrence of
the word 'assistant' separated by any whitespace, then replacing it with a
space. This caused normal English uses like 'Home assistant' to render as
'Home '.

Fixed by narrowing the word-boundary check from [\t\r\n ] (any whitespace)
to [\r\n] (line boundaries only), so only Qwen-format role-token leaks
(where 'assistant' appears alone on a line) are stripped.

* fix(tests): update bare-marker test expectations for #5971

Move 'x assistant y' from STRIPPED to KEPT (mid-sentence must survive).
Add 'Before\nassistant\nAfter' to STRIPPED (bare-marker on own line).

* fix(ui): strip whitespace-padded assistant role markers

---------

Co-authored-by: samy <samy@users.noreply.github.com>
Co-authored-by: Alexandre Teixeira <alexandremagteixeira@gmail.com>
This commit is contained in:
Samy
2026-08-12 01:47:11 +01:00
committed by GitHub
co-authored by samy Alexandre Teixeira
parent bea48c749c
commit d87a913729
3 changed files with 6 additions and 3 deletions
+4 -1
View File
@@ -34,6 +34,7 @@ KEPT = [
("append end", "append end"),
("END", "END"),
("\nEnd\n", "End"),
("x assistant y", "x assistant y"), # mid-sentence must survive (#5971)
]
# Real markers — at least one pipe, plus the role word — with the exact output
@@ -44,7 +45,9 @@ STRIPPED = [
("a /|end| b", "a b"),
("a |end b", "a b"),
("a end| b", "a b"),
("x assistant y", "x y"),
("Before\nassistant\nAfter", "Before \nAfter"), # bare-marker on its own line still stripped
("Before\n assistant\t \nAfter", "Before \nAfter"), # whitespace-padded marker still stripped
("Before\n\tassistan \nAfter", "Before \nAfter"), # truncated marker variant still stripped
]