diff --git a/lib/crewai/src/crewai/crew.py b/lib/crewai/src/crewai/crew.py index c69dae65a..94868b830 100644 --- a/lib/crewai/src/crewai/crew.py +++ b/lib/crewai/src/crewai/crew.py @@ -187,6 +187,7 @@ class Crew(FlowTrackable, BaseModel): _task_output_handler: TaskOutputStorageHandler = PrivateAttr( default_factory=TaskOutputStorageHandler ) + _kickoff_event_id: str | None = PrivateAttr(default=None) name: str | None = Field(default="crew") cache: bool = Field(default=True) @@ -759,7 +760,11 @@ class Crew(FlowTrackable, BaseModel): except Exception as e: crewai_event_bus.emit( self, - CrewKickoffFailedEvent(error=str(e), crew_name=self.name), + CrewKickoffFailedEvent( + error=str(e), + crew_name=self.name, + started_event_id=self._kickoff_event_id, + ), ) raise finally: @@ -949,7 +954,11 @@ class Crew(FlowTrackable, BaseModel): except Exception as e: crewai_event_bus.emit( self, - CrewKickoffFailedEvent(error=str(e), crew_name=self.name), + CrewKickoffFailedEvent( + error=str(e), + crew_name=self.name, + started_event_id=self._kickoff_event_id, + ), ) raise finally: @@ -1524,6 +1533,7 @@ class Crew(FlowTrackable, BaseModel): crew_name=self.name, output=final_task_output, total_tokens=self.token_usage.total_tokens, + started_event_id=self._kickoff_event_id, ), ) diff --git a/lib/crewai/src/crewai/crews/utils.py b/lib/crewai/src/crewai/crews/utils.py index 2ac8266cc..a432d2fc2 100644 --- a/lib/crewai/src/crewai/crews/utils.py +++ b/lib/crewai/src/crewai/crews/utils.py @@ -265,10 +265,9 @@ def prepare_kickoff( normalized = {} normalized = before_callback(normalized) - future = crewai_event_bus.emit( - crew, - CrewKickoffStartedEvent(crew_name=crew.name, inputs=normalized), - ) + started_event = CrewKickoffStartedEvent(crew_name=crew.name, inputs=normalized) + crew._kickoff_event_id = started_event.event_id + future = crewai_event_bus.emit(crew, started_event) if future is not None: try: future.result()