- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.5k
webui: add OAI-Compat Harmony tool-call streaming visualization and persistence in chat UI #16618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
webui: add OAI-Compat Harmony tool-call streaming visualization and persistence in chat UI #16618
Conversation
| I have to do a little cleaning, the patch was not merged properly on my side. -> draft | 
| This PR is now clean, but it was developed after this one: #16562 | 
0fe776d    to
    02df5a1      
    Compare
  
    | Alright, @ServeurpersoCom, let's move forward with this one after merging #16562 ;) Let me know when you've addressed the merge conflicts and I'll gladly review the code | 
…ersistence in chat UI - Purely visual and diagnostic change, no effect on model context, prompt construction, or inference behavior - Introduces full support for delta.tool_calls streaming from Harmony-compatible models - Adds parsing, incremental merging, and live updates of tool-call deltas in ChatService - Extends chat store, database schema, and message model to persist toolCalls content alongside reasoning traces - Implements new Svelte components ChatMessageToolCallBlock and ChatMessageToolCallItem for structured display of tool-call payloads - Adds a fallback raw string mode for malformed or non-JSON tool-call chunks - Adds 'Show tool call chunks' toggle in chat settings and new config flag showToolCalls - Updates ApiChatCompletion types to define ToolCall and ToolCallDelta interfaces for typed Harmony compatibility - Integrates tool-call rendering in ChatMessageAssistant when showToolCalls is enabled
02df5a1    to
    a5cff84      
    Compare
  
    | Feel free to dissect the architecture as deep as you want! Component boundaries, store coupling, service layering, anything that smells non-idiomatic.  | 
| And we could even imagine the architecture being reusable later : like having a small JavaScript execution module decoupled from the UI, so the model could actually interact with a JS thread it coded itself. | 
| Includes a very small optimization from the previous PR (scroll listener removal). It landed here intentionally :D | 


Close #16597