diff --git a/src/cleveragents/langgraph/nodes.py b/src/cleveragents/langgraph/nodes.py index c67edad5c..af2de7294 100644 --- a/src/cleveragents/langgraph/nodes.py +++ b/src/cleveragents/langgraph/nodes.py @@ -210,8 +210,7 @@ class Node: # pylint: disable=too-many-instance-attributes try: agent_response = await agent.process_message(agent_input, context) except Exception as e: # pylint: disable=broad-exception-caught - # Catch all agent exceptions to prevent node failure - self.logger.error("Agent %s execution failed: %s", agent.name, e) + self.logger.error("Agent %s execution failed: %s", agent.name, e, exc_info=True) agent_response = f"Error processing message: {str(e)}" # Return state updates diff --git a/src/cleveragents/templates/base.py b/src/cleveragents/templates/base.py index 09c852ff7..d8b92c2be 100644 --- a/src/cleveragents/templates/base.py +++ b/src/cleveragents/templates/base.py @@ -249,8 +249,8 @@ class BaseTemplate(ABC): # Replace single quotes with double quotes for JSON parsing json_str = rendered.replace("'", '"') return json.loads(json_str) - except Exception: # pylint: disable=broad-exception-caught - pass + except (json.JSONDecodeError, ValueError) as e: + logger.debug("Failed to parse as JSON: %s", e) try: # Try to parse as number @@ -284,7 +284,8 @@ class BaseTemplate(ABC): try: return yaml.safe_load(rendered) - except Exception: # pylint: disable=broad-exception-caught + except yaml.YAMLError as e: + logger.warning("Failed to parse YAML in conditional: %s", e) return rendered # Condition was false, exclude this section return None diff --git a/src/cleveragents/templates/graph_templates.py b/src/cleveragents/templates/graph_templates.py index 0c744b882..cf3b08480 100644 --- a/src/cleveragents/templates/graph_templates.py +++ b/src/cleveragents/templates/graph_templates.py @@ -91,9 +91,13 @@ class GraphTemplate(BaseTemplate): agent_ref, node_name, ) - except Exception: # pylint: disable=broad-exception-caught - # Not a local reference, probably a global agent name - pass + except Exception as e: # pylint: disable=broad-exception-caught + logger.debug( + "Could not resolve agent reference '%s' in node '%s': %s", + agent_ref, + node_name, + e + ) processed_nodes[node_name] = node_config diff --git a/src/cleveragents/templates/stream_templates.py b/src/cleveragents/templates/stream_templates.py index cb4c0c408..2a55f673e 100644 --- a/src/cleveragents/templates/stream_templates.py +++ b/src/cleveragents/templates/stream_templates.py @@ -105,9 +105,12 @@ class StreamTemplate(BaseTemplate): logger.debug( "Resolved agent reference '%s' in stream operator", agent_ref ) - except Exception: # pylint: disable=broad-exception-caught - # Not a local reference, probably a global agent name - pass + except Exception as e: # pylint: disable=broad-exception-caught + logger.debug( + "Could not resolve agent reference '%s' in stream operator: %s", + agent_ref, + e + ) # Handle graph references in graph_execute operators if op_type == "graph_execute" and "graph" in op_params: @@ -127,9 +130,12 @@ class StreamTemplate(BaseTemplate): logger.debug( "Resolved graph reference '%s' in stream operator", graph_ref ) - except Exception: # pylint: disable=broad-exception-caught - # Not a local reference, probably a global graph name - pass + except Exception as e: # pylint: disable=broad-exception-caught + logger.debug( + "Could not resolve graph reference '%s' in stream operator: %s", + graph_ref, + e + ) processed_operators.append(operator)