def get_task_output(self, description: str) -> Any:
        """
        Gets the output of a task by its description.
        
        Args:
            description: The description of the task
            
        Returns:
            The output of the specified task, or None if not found
        """
        for node in self.nodes:
            if isinstance(node, TaskNode) and node.task.description == description:
                output = self.state.get_task_output(node.id)
                if output is not None:
                    return output
        
        # If not found in direct nodes, check for nodes in decision branches
        for node in self.nodes:
            if isinstance(node, (DecisionFunc, DecisionLLM)):
                # Check true branch
                if node.true_branch:
                    if isinstance(node.true_branch, TaskNode) and node.true_branch.task.description == description:
                        return self.state.get_task_output(node.true_branch.id)
                    elif isinstance(node.true_branch, TaskChain):
                        for branch_node in node.true_branch.nodes:
                            if isinstance(branch_node, TaskNode) and branch_node.task.description == description:
                                return self.state.get_task_output(branch_node.id)
                
                # Check false branch
                if node.false_branch:
                    if isinstance(node.false_branch, TaskNode) and node.false_branch.task.description == description:
                        return self.state.get_task_output(node.false_branch.id)
                    elif isinstance(node.false_branch, TaskChain):
                        for branch_node in node.false_branch.nodes:
                            if isinstance(branch_node, TaskNode) and branch_node.task.description == description:
                                return self.state.get_task_output(branch_node.id)
        
        return None

        Gets the output of a task by its description.
        
        Args:
            description: The description of the task
            
        Returns:
            The output of the specified task, or None if not found
        
src/upsonic/client/graph.py