diff --git a/src/crewai/tools/tool_usage.py b/src/crewai/tools/tool_usage.py index 9c924027d..e62c17c3d 100644 --- a/src/crewai/tools/tool_usage.py +++ b/src/crewai/tools/tool_usage.py @@ -244,6 +244,7 @@ class ToolUsage: tool_calling=calling, from_cache=from_cache, started_at=started_at, + result=result, # Pass the result ) if ( @@ -492,7 +493,7 @@ class ToolUsage: crewai_event_bus.emit(self, ToolUsageErrorEvent(**{**event_data, "error": e})) def on_tool_use_finished( - self, tool: Any, tool_calling: ToolCalling, from_cache: bool, started_at: float + self, tool: Any, tool_calling: ToolCalling, from_cache: bool, started_at: float, result: Any = None ) -> None: finished_at = time.time() event_data = self._prepare_event_data(tool, tool_calling) @@ -501,6 +502,7 @@ class ToolUsage: "started_at": datetime.datetime.fromtimestamp(started_at), "finished_at": datetime.datetime.fromtimestamp(finished_at), "from_cache": from_cache, + "result": result, # Add the result to the event data } ) crewai_event_bus.emit(self, ToolUsageFinishedEvent(**event_data)) diff --git a/src/crewai/utilities/events/tool_usage_events.py b/src/crewai/utilities/events/tool_usage_events.py index aa375dcd7..0e40f35e3 100644 --- a/src/crewai/utilities/events/tool_usage_events.py +++ b/src/crewai/utilities/events/tool_usage_events.py @@ -30,6 +30,7 @@ class ToolUsageFinishedEvent(ToolUsageEvent): started_at: datetime finished_at: datetime from_cache: bool = False + result: Any = None # Add this field type: str = "tool_usage_finished" diff --git a/tests/utilities/test_events.py b/tests/utilities/test_events.py index e1f621fbb..8634579da 100644 --- a/tests/utilities/test_events.py +++ b/tests/utilities/test_events.py @@ -358,6 +358,7 @@ def test_tools_emits_finished_events(): assert received_events[0].tool_args == {} assert received_events[0].type == "tool_usage_finished" assert isinstance(received_events[0].timestamp, datetime) + assert received_events[0].result == "hi" # The SayHiTool returns "hi" @pytest.mark.vcr(filter_headers=["authorization"])