feat(agentic): Langflow Assistant improvements — flow building, model portability, and robustness - #14007
feat(agentic): Langflow Assistant improvements — flow building, model portability, and robustness#14007Cristhianzl wants to merge 20 commits into
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThe change expands the agentic assistant with headless execution, HTTP MCP access, loop-aware flow building and validation, bounded history, progress events, restore/revert behavior, structured errors, template tools, atomic canvas updates, and frontend localization with extensive regression coverage. ChangesAgentic assistant and MCP
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 8 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (8 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Test Coverage AdvisorNo source changes detected without accompanying tests. Thanks for keeping coverage up! 🎉
|
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## release-1.12.0 #14007 +/- ##
==================================================
+ Coverage 61.47% 61.53% +0.05%
==================================================
Files 2339 2353 +14
Lines 237145 238537 +1392
Branches 35410 33490 -1920
==================================================
+ Hits 145787 146779 +992
- Misses 89561 89995 +434
+ Partials 1797 1763 -34
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
This comment has been minimized.
This comment has been minimized.
…ngflow into cz/assistant-improvements
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
✅ Migration Validation Passed All migrations follow the Expand-Contract pattern correctly. |
This comment has been minimized.
This comment has been minimized.
| ): SerializedAssistantMessage[] { | ||
| return messages.map((msg) => { | ||
| const { timestamp, progress, result, ...rest } = msg; | ||
| const { timestamp, progress, result, inProgressTask, ...rest } = msg; |
There was a problem hiding this comment.
We pull inProgressTask out here because it is transient, but flowProposalSnapshot still rides along in ...rest, so it gets persisted. That field is a full cloneDeep of nodes+edges (set in handleApplyFlowProposal), so every applied proposal writes an entire canvas copy into the session localStorage. On a big flow, or after a few proposals in one session, that can balloon and eventually blow past the ~5MB quota — at which point the whole setItem throws and we lose the session save, not just the snapshot.
If keeping revert working across a reload is intentional, can we bound it? e.g. only keep the snapshot while flowProposalStatus === "applied", or keep just the latest one. If it is only meant to power the in-session undo, I think we can drop it in the destructure the same way we do inProgressTask.
There was a problem hiding this comment.
Good catch — you are right. The snapshot rides along in ...rest, and since it is a full cloneDeep of the canvas it can get heavy fast on big flows. And it is worse than just the snapshot: saveSessionsToStorage swallows the quota error, so once setItem starts throwing we silently lose the whole session save.
Cross-reload revert was never the intent here — that is what the restore-point path covers (restoreVersionId + flow versions), and that one survives reloads fine because it lives on the backend. The snapshot only exists to power the in-session undo on the proposal card. So I will go with your second option and drop it in the destructure, same as inProgressTask. After restoring a session the card just renders with canRevert=false and handleRevertFlowProposal already no-ops without a snapshot, so nothing else needs to change.
Will push the fix with a serialization test. Thanks!
This comment has been minimized.
This comment has been minimized.
|
Build successful! ✅ |
Summary
A broad reliability + capability pass on the Langflow Assistant: it now builds
loop and conditional flows correctly, works across every configured model provider
(fixing silent failures on WatsonX, Ollama, and reasoning models like gpt-5.6),
surfaces recovered errors instead of hiding them, and gives the user session-level
control over memory and step budget. Targets
release-1.11.0.Summary by CodeRabbit
New Features
/historycontrols for limiting conversation context.Bug Fixes
Documentation