mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
HandoffBuilder.participants() accepted SupportsAgentRun by API contract, but build() failed at runtime because _prepare_agent_with_handoffs() requires Agent instances for cloning, tool injection, and middleware. Fix: Update all public type hints, docstrings, and validation in HandoffBuilder and HandoffAgentExecutor to require Agent explicitly. The isinstance check is now performed early in participants() with a clear error message explaining why Agent is required. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
Unverified
parent
a033721ac2
commit
97b24990d9
@@ -1091,3 +1091,29 @@ async def test_auto_handoff_middleware_calls_next_for_non_handoff_tool() -> None
|
||||
|
||||
call_next.assert_awaited_once()
|
||||
assert context.result is None
|
||||
|
||||
|
||||
def test_handoff_builder_rejects_non_agent_supports_agent_run():
|
||||
"""Verify that participants() rejects SupportsAgentRun implementations that are not Agent instances."""
|
||||
from agent_framework import AgentResponse, AgentSession, SupportsAgentRun
|
||||
|
||||
class FakeAgentRun:
|
||||
def __init__(self, id, name):
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.description = "d"
|
||||
|
||||
async def run(self, messages=None, *, stream=False, session=None, **kwargs):
|
||||
return AgentResponse(messages=[Message(role="assistant", contents=[Content.from_text("ok")])])
|
||||
|
||||
def create_session(self, **kwargs):
|
||||
return AgentSession()
|
||||
|
||||
def get_session(self, *, service_session_id, **kwargs):
|
||||
return AgentSession(service_session_id=service_session_id)
|
||||
|
||||
fake = FakeAgentRun("a", "A")
|
||||
assert isinstance(fake, SupportsAgentRun)
|
||||
|
||||
with pytest.raises(TypeError, match="Participants must be Agent instances"):
|
||||
HandoffBuilder().participants([fake])
|
||||
|
||||
Reference in New Issue
Block a user