mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Python: Fix: Parse oauth_consent_request events in Azure AI client (#4197)
* Fix: Parse oauth_consent_request events in Azure AI client (#3950) When Azure AI Agent Service returns an oauth_consent_request output item for OAuth-protected MCP tools, the base OpenAI responses parser drops it (hits case _ default branch). This causes agent runs to complete silently with zero content. Changes: - Add oauth_consent_request ContentType and Content.from_oauth_consent_request() factory with consent_link field and user_input_request=True - Override _parse_response_from_openai and _parse_chunk_from_openai in RawAzureAIClient to intercept Azure-specific oauth_consent_request items - Add _emit_oauth_consent helper in AG-UI to emit CustomEvent for frontends - Add tests proving base parser drops the event and Azure AI override catches it Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * addressed comment * addressed comments * addressed comments --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -3424,3 +3424,30 @@ class TestResponseStreamEdgeCases:
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
|
||||
# region OAuth Consent Content
|
||||
|
||||
|
||||
def test_oauth_consent_request_creation():
|
||||
"""Test Content.from_oauth_consent_request creates the correct content."""
|
||||
content = Content.from_oauth_consent_request(
|
||||
consent_link="https://login.microsoftonline.com/common/oauth2/authorize?client_id=abc",
|
||||
)
|
||||
assert content.type == "oauth_consent_request"
|
||||
assert content.consent_link == "https://login.microsoftonline.com/common/oauth2/authorize?client_id=abc"
|
||||
assert content.user_input_request is True
|
||||
|
||||
|
||||
def test_oauth_consent_request_serialization_roundtrip():
|
||||
"""Test that oauth_consent_request content serializes and includes consent_link."""
|
||||
content = Content.from_oauth_consent_request(
|
||||
consent_link="https://login.microsoftonline.com/consent",
|
||||
)
|
||||
d = content.to_dict()
|
||||
assert d["type"] == "oauth_consent_request"
|
||||
assert d["consent_link"] == "https://login.microsoftonline.com/consent"
|
||||
assert d["user_input_request"] is True
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
Reference in New Issue
Block a user