From df6a1086e9b9f39a30df51908f73fec1cd9296ab Mon Sep 17 00:00:00 2001 From: rxy007 Date: Sun, 29 Jun 2025 12:57:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E5=A4=9Asource=E7=9A=84=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=B7=B3=E4=B8=8D=E5=88=B0=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BE=8B=E5=A6=82=EF=BC=9Aagent=20p\u\e,=20p->u,p->e,?= =?UTF-8?q?u->e=20=E5=9C=A8=E8=BF=90=E8=A1=8C=E5=BD=93=E4=B8=AD=EF=BC=8Cp?= =?UTF-8?q?=E6=88=96u=E6=97=A0=E6=B3=95=E8=B7=B3=E5=88=B0e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teams/_group_chat/_graph/_digraph_group_chat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_graph/_digraph_group_chat.py b/python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_graph/_digraph_group_chat.py index aaca418df92b..cca8f51c5310 100644 --- a/python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_graph/_digraph_group_chat.py +++ b/python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_graph/_digraph_group_chat.py @@ -415,7 +415,7 @@ async def update_message_thread(self, messages: Sequence[BaseAgentEvent | BaseCh if self._activation[target][activation_group] == "all": self._remaining[target][activation_group] -= 1 - if self._remaining[target][activation_group] == 0: + if self._remaining[target][activation_group] >= 0: # If all parents are done, add to the ready queue. self._ready.append(target) # Track which activation group was triggered From ba458eede346617ed7823f5a674ceea8e89780e2 Mon Sep 17 00:00:00 2001 From: majiayu000 <1835304752@qq.com> Date: Fri, 23 Jan 2026 11:53:05 +0800 Subject: [PATCH 2/2] test: cover multi-source join with max turns --- .../tests/test_group_chat_graph.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/python/packages/autogen-agentchat/tests/test_group_chat_graph.py b/python/packages/autogen-agentchat/tests/test_group_chat_graph.py index 33f57e69734f..818bf25d7bbb 100644 --- a/python/packages/autogen-agentchat/tests/test_group_chat_graph.py +++ b/python/packages/autogen-agentchat/tests/test_group_chat_graph.py @@ -532,6 +532,35 @@ async def test_digraph_group_chat_parallel_join_all(runtime: AgentRuntime | None assert result.stop_reason is not None +@pytest.mark.asyncio +async def test_digraph_group_chat_multi_source_bypass_max_turns(runtime: AgentRuntime | None) -> None: + agent_p = _EchoAgent("P", description="Echo agent P") + agent_u = _EchoAgent("U", description="Echo agent U") + agent_e = _EchoAgent("E", description="Echo agent E") + + graph = DiGraph( + nodes={ + "P": DiGraphNode(name="P", edges=[DiGraphEdge(target="U"), DiGraphEdge(target="E")]), + "U": DiGraphNode(name="U", edges=[DiGraphEdge(target="E")]), + "E": DiGraphNode(name="E", edges=[]), + } + ) + + team = GraphFlow( + participants=[agent_p, agent_u, agent_e], + graph=graph, + runtime=runtime, + max_turns=2, + ) + + result: TaskResult = await team.run(task="Start") + assert len(result.messages) == 4 + assert result.messages[0].source == "user" + assert result.messages[1].source == "P" + assert set(m.source for m in result.messages[2:]) == {"U", "E"} + assert result.stop_reason is not None + + @pytest.mark.asyncio async def test_digraph_group_chat_parallel_join_any(runtime: AgentRuntime | None) -> None: agent_a = _EchoAgent("A", description="Echo agent A")