From 594e1d48761bb7c67f5922284385a655223629fb Mon Sep 17 00:00:00 2001 From: Greyson LaLonde Date: Mon, 6 Apr 2026 22:23:06 +0800 Subject: [PATCH] fix: restore emission counter from checkpoint event record --- lib/crewai/src/crewai/crew.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/crewai/src/crewai/crew.py b/lib/crewai/src/crewai/crew.py index d8bd989fd..2e7964fb1 100644 --- a/lib/crewai/src/crewai/crew.py +++ b/lib/crewai/src/crewai/crew.py @@ -416,6 +416,7 @@ class Crew(FlowTrackable, BaseModel): def _restore_event_scope(self) -> None: """Rebuild the event scope stack from the checkpoint's event record.""" + from crewai.events.base_events import set_emission_counter from crewai.events.event_bus import crewai_event_bus from crewai.events.event_context import ( restore_event_scope, @@ -447,19 +448,18 @@ class Crew(FlowTrackable, BaseModel): restore_event_scope(tuple(stack)) - # Set last_event_id to the most recent event in the record + # Restore last_event_id and emission counter from the record last_event_id: str | None = None + max_seq = 0 for node in state.event_record.nodes.values(): seq = node.event.emission_sequence or 0 - if last_event_id is None or seq > ( - state.event_record.nodes.get( - last_event_id, node - ).event.emission_sequence - or 0 - ): + if seq > max_seq: + max_seq = seq last_event_id = node.event.event_id if last_event_id is not None: set_last_event_id(last_event_id) + if max_seq > 0: + set_emission_counter(max_seq) @field_validator("id", mode="before") @classmethod