Skip to content

Commit cdb4dee

Browse files
committed
feat(multiagent): introduce Swarm multi-agent orchestrator
1 parent 19db55c commit cdb4dee

File tree

6 files changed

+794
-1
lines changed

6 files changed

+794
-1
lines changed

src/strands/agent/agent.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,9 @@ def __init__(
316316
self.hooks.add_hook(hook)
317317
self.hooks.invoke_callbacks(AgentInitializedEvent(agent=self))
318318

319+
# When True, force stops the agent's event loop
320+
self.stop_event_loop = False
321+
319322
@property
320323
def tool(self) -> ToolCaller:
321324
"""Call tool as a function.

src/strands/event_loop/event_loop.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ def tool_handler(tool_use: ToolUse) -> ToolGenerator:
462462
tracer = get_tracer()
463463
tracer.end_event_loop_cycle_span(span=cycle_span, message=message, tool_result_message=tool_result_message)
464464

465-
if kwargs["request_state"].get("stop_event_loop", False):
465+
if agent.stop_event_loop or kwargs["request_state"].get("stop_event_loop", False):
466466
agent.event_loop_metrics.end_cycle(cycle_start_time, cycle_trace)
467467
yield {"stop": (stop_reason, message, agent.event_loop_metrics, kwargs["request_state"])}
468468
return

src/strands/multiagent/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
from . import a2a
1212
from .base import MultiAgentBase, MultiAgentResult
1313
from .graph import GraphBuilder, GraphResult
14+
from .swarm import Swarm, SwarmConfig, SwarmResult
1415

1516
__all__ = [
1617
"a2a",
1718
"GraphBuilder",
1819
"GraphResult",
1920
"MultiAgentBase",
2021
"MultiAgentResult",
22+
"Swarm",
23+
"SwarmConfig",
24+
"SwarmResult",
2125
]

0 commit comments

Comments
 (0)