diff --git a/src/strands/multiagent/swarm.py b/src/strands/multiagent/swarm.py index 6c1149624..8368f5936 100644 --- a/src/strands/multiagent/swarm.py +++ b/src/strands/multiagent/swarm.py @@ -199,7 +199,7 @@ def should_continue( return False, f"Max iterations reached: {max_iterations}" # Check timeout - elapsed = time.time() - self.start_time + elapsed = self.execution_time / 1000 + time.time() - self.start_time if elapsed > execution_timeout: return False, f"Execution timed out: {execution_timeout}s" @@ -406,7 +406,7 @@ async def stream_async( self.state.completion_status = Status.FAILED raise finally: - self.state.execution_time = round((time.time() - self.state.start_time) * 1000) + self.state.execution_time += round((time.time() - self.state.start_time) * 1000) await self.hooks.invoke_callbacks_async(AfterMultiAgentInvocationEvent(self, invocation_state)) self._resume_from_session = False diff --git a/tests/strands/multiagent/test_swarm.py b/tests/strands/multiagent/test_swarm.py index f2abed9f7..aae11b709 100644 --- a/tests/strands/multiagent/test_swarm.py +++ b/tests/strands/multiagent/test_swarm.py @@ -1243,6 +1243,8 @@ def test_swarm_interrupt_on_before_node_call_event(interrupt_hook): multiagent_result = swarm("Test task") + first_execution_time = multiagent_result.execution_time + tru_status = multiagent_result.status exp_status = Status.INTERRUPTED assert tru_status == exp_status @@ -1279,6 +1281,8 @@ def test_swarm_interrupt_on_before_node_call_event(interrupt_hook): exp_message = "Task completed" assert tru_message == exp_message + assert multiagent_result.execution_time >= first_execution_time + def test_swarm_interrupt_on_agent(agenerator): exp_interrupts = [