You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This commit addresses a critical issue where streaming output would fail in workflows with complex topologies, particularly those involving multiple conditional branches (if/else) that converge on a common node before the LLM and Answer nodes. The root cause was twofold: 1. A bug in the branch pruning logic () that would incorrectly remove shared downstream nodes, leading to a premature emptying of the list. 2. A flawed static dependency analysis () that could not correctly resolve dependencies for nodes that were part of multiple, mutually exclusive execution paths. This refactor introduces a new, robust architecture for streaming dependency management based on the principle of "Static Pre-pruning + Dynamic Adjudication": - **Fix**: The branch pruning logic in is now non-recursive and conservative. It only prunes the immediate first node of an unreachable branch, preserving the integrity of shared downstream paths and join points. - **Refactor**: The old static dependency analysis has been completely removed. This includes deleting the attribute from the entity and deleting the associated recursive dependency fetching methods (, ). - **Feat**: A new method, , has been implemented in . This method performs a real-time, backward traversal of the graph from the streaming node, querying the runtime execution state () to dynamically validate if the *actual* dependency path has been successfully completed. This ensures that streaming decisions are based on the ground truth of the current execution, not a flawed static prediction. - **Doc**: Added comprehensive docstrings and comments to the modified components to explain the new architecture and the rationale behind the changes. |
8 months ago | |
|---|---|---|
| .. | ||
| callbacks | 9 months ago | |
| entities | 8 months ago | |
| graph_engine | 8 months ago | |
| nodes | 8 months ago | |
| repositories | 8 months ago | |
| utils | 9 months ago | |
| __init__.py | ||
| constants.py | ||
| conversation_variable_updater.py | 9 months ago | |
| enums.py | 10 months ago | |
| errors.py | 8 months ago | |
| system_variable.py | 8 months ago | |
| variable_loader.py | 9 months ago | |
| workflow_cycle_manager.py | 8 months ago | |
| workflow_engine_manager.py | ||
| workflow_entry.py | 8 months ago | |
| workflow_type_encoder.py | 8 months ago | |