mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-28 05:27:35 +00:00
fix: persist filter outlet() changes to structured message output (#27414)
When a filter's outlet() modified the structured assistant output in place, the change was shown immediately but lost after reload. outlet_filter_handler built its outlet payload with a shallow reference to the message's output list from messages_map, so the filter mutated the stored baseline itself and the subsequent output comparison compared the object against itself, never detecting a change and never persisting it. The same aliasing corrupted originalContent for messages whose text lives only in output. Deepcopy the output when building the outlet payload so messages_map stays a pristine pre-filter baseline and the existing change detection persists outlet-modified output through the existing upsert path. Fixes #27017.
This commit is contained in:
parent
69f8be4cf9
commit
381149ea5e
1 changed files with 2 additions and 1 deletions
|
|
@ -3424,7 +3424,8 @@ async def outlet_filter_handler(ctx):
|
|||
'content': m.get('content') or get_output_text(m.get('output')),
|
||||
'info': m.get('info'),
|
||||
'timestamp': m.get('timestamp'),
|
||||
**({'output': m['output']} if m.get('output') else {}),
|
||||
# Deepcopy so in-place filter mutations do not alias messages_map's baseline
|
||||
**({'output': copy.deepcopy(m['output'])} if m.get('output') else {}),
|
||||
**({'usage': m['usage']} if m.get('usage') else {}),
|
||||
**({'sources': m['sources']} if m.get('sources') else {}),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue