fix: fix assign value stand as default#30651
Conversation
Summary of ChangesHello @fatelei, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request resolves an issue in the advanced chat workflow where the 'Answer' node could display an incorrect initial value if its underlying variables were updated later in the execution pipeline. The changes introduce logic to detect such discrepancies and send a 'message_replace' event to the frontend, ensuring that the final, correct answer is always presented to the user, thereby improving the accuracy of streamed responses. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a fix for an issue where the UI displays a default variable value that is later updated by a variable_assigner node. The proposed solution correctly identifies when the final output of an ANSWER node differs from the initially streamed content and sends a message_replace event to update the UI. The implementation is clean and directly addresses the problem. I have one suggestion to improve maintainability regarding the reason for the message replacement.
This reverts commit 187bfaf.
Important
Fixes #<issue number>.Summary
fix #30650
↓
- Register Answer node template: "{{#conversation.conv_var#}}"
- Parse template into segments: [TextSegment, VariableSegment]
↓
- Iterate through template segments
- Encounter VariableSegment: conversation.conv_var
- Read current value from variable_pool → "default" (not yet updated at this point)
- Send NodeRunStreamChunkEvent("default")
↓
- NodeRunStreamChunkEvent → QueueTextChunkEvent
- Frontend receives TextChunkStreamResponse → message event
↓
- Variable Assigner node executes, updates conversation.conv_var = "123"
- Answer node finishes execution, outputs "123"
↓
- Frontend has already displayed "default"
- Need to send message_replace event to update
Screenshots
before
Screen.Recording.2026-01-06.at.21.53.16.mov
after
Screen.Recording.2026-01-06.at.21.51.21.mov
Checklist
make lintandmake type-check(backend) andcd web && npx lint-staged(frontend) to appease the lint gods