Commit 84958cf
feat(loop): implement isolated subgraph execution for LoopComponent (#11034)
* refactor(loop): implement isolated subgraph execution for LoopComponent
- Refactor LoopComponent to execute loop body as isolated subgraph
- Add create_subgraph method to Graph class for creating isolated subgraphs
- Add loop_utils with get_loop_body_vertices helper function
- Add on_end_vertex event emission in async_start for progress tracking
- Add comprehensive tests for subgraph execution and event emission
This change enables proper vertex event streaming during loop execution
by running each iteration as an isolated subgraph with its own context.
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve subgraph event streaming to UI
- Add event types to stream token event manager (end_vertex, error, build_start, build_end)
- Preserve start_component_id in async_start for proper subgraph execution
- Fix has_chat_output/has_chat_input to use vertex.base_name instead of string matching
- Add _stream_to_playground check to allow inner graph components to send events
- Fix _send_message_event to properly extract and forward message IDs
* update index
* fix: Enhance extract_loop_output to handle multiple message formats
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Improve intra-layer cycle detection logging in sorting function
* refactor: Update loop execution to create fresh subgraph for each iteration
* test: Add tests for subgraph isolation and state management
* fix: Update LoopComponent description for clarity on item processing
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* [autofix.ci] apply automated fixes (attempt 3/3)
* fix: Add warning log for missing custom_component in loop item injection
* refactor: Simplify loop event tests while preserving critical coverage
Reduced test complexity by removing excessive mocking while maintaining completeå event manager propagation coverage. Event manager tests are critical for ensuring UI updates work correctly during loop execution.
* fix: Update Google dependency version to 2.5.0 across multiple components
* fix: Update value format in Research Translation Loop JSON for clarity
* fix: Inject loop items into HandleInput fields via raw_params
HandleInput fields (type="other") were receiving None instead of loop items
because:
1. Fields with type="other" are skipped during field param processing
2. Loop->Parser edge is filtered out in subgraph creation
3. updated_raw_params flag was reset too early by multiple build_params() calls
Fix:
- Inject loop items into template before prepare()
- Inject into raw_params after prepare() using update_raw_params()
- Persist updated_raw_params flag across all build_params() calls
- Reset flag in _build_each_vertex_in_params_dict() after processing
Tests:
- Add integration test exercising execute_loop_body() code path
- Verify update_raw_params() called with correct data per iteration
- Add full Loop+Parser integration test
- Fix fieldName -> field_name in existing tests
* fix: Update done_output method to use internal event manager and improve event handling
* refactor: Update execute_loop_body to use async context manager for subgraph creation and cleanup
* fix: import json in unified_models.py
* feat: Implement subgraph tracing context management
* fix: Update code_hash and improve loop component execution logic
* fix: Update code_hash and refine LoopComponent execution logic
* [autofix.ci] apply automated fixes
* fix: Update LoopComponent subgraph execution to set event manager as instance attribute
* test: Enhance subgraph execution tests to verify event manager passing
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>1 parent 47728f5 commit 84958cf
18 files changed
Lines changed: 1728 additions & 109 deletions
File tree
- src
- backend
- base/langflow/initial_setup/starter_projects
- tests/unit/components/flow_controls
- lfx
- src/lfx
- _assets
- base
- flow_controls
- models
- components/flow_controls
- custom/custom_component
- events
- graph
- graph
- vertex
- tests/unit
- components/flow_controls
- graph/graph
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1449 | 1449 | | |
1450 | 1450 | | |
1451 | 1451 | | |
1452 | | - | |
| 1452 | + | |
1453 | 1453 | | |
1454 | 1454 | | |
1455 | 1455 | | |
| |||
1460 | 1460 | | |
1461 | 1461 | | |
1462 | 1462 | | |
1463 | | - | |
| 1463 | + | |
1464 | 1464 | | |
1465 | 1465 | | |
1466 | 1466 | | |
| |||
1526 | 1526 | | |
1527 | 1527 | | |
1528 | 1528 | | |
1529 | | - | |
| 1529 | + | |
1530 | 1530 | | |
1531 | 1531 | | |
1532 | 1532 | | |
| |||
1717 | 1717 | | |
1718 | 1718 | | |
1719 | 1719 | | |
1720 | | - | |
| 1720 | + | |
1721 | 1721 | | |
1722 | 1722 | | |
1723 | 1723 | | |
| |||
0 commit comments