You've already forked adk-python
mirror of
https://github.com/encounter/adk-python.git
synced 2026-03-30 10:57:20 -07:00
feat: Introduce custom_metadata field to run_config and propagate a2a request metadata to that field
PiperOrigin-RevId: 823066539
This commit is contained in:
committed by
Copybara-Service
parent
955632ce2c
commit
ba631764a5
@@ -106,6 +106,10 @@ def convert_a2a_request_to_agent_run_request(
|
||||
if not request.message:
|
||||
raise ValueError('Request message cannot be None')
|
||||
|
||||
custom_metadata = {}
|
||||
if request.metadata:
|
||||
custom_metadata['a2a_metadata'] = request.metadata
|
||||
|
||||
return AgentRunRequest(
|
||||
user_id=_get_user_id(request),
|
||||
session_id=request.context_id,
|
||||
@@ -113,5 +117,5 @@ def convert_a2a_request_to_agent_run_request(
|
||||
role='user',
|
||||
parts=[part_converter(part) for part in request.message.parts],
|
||||
),
|
||||
run_config=RunConfig(),
|
||||
run_config=RunConfig(custom_metadata=custom_metadata),
|
||||
)
|
||||
|
||||
@@ -17,6 +17,7 @@ from __future__ import annotations
|
||||
from enum import Enum
|
||||
import logging
|
||||
import sys
|
||||
from typing import Any
|
||||
from typing import Optional
|
||||
|
||||
from google.genai import types
|
||||
@@ -118,6 +119,9 @@ class RunConfig(BaseModel):
|
||||
- Less than or equal to 0: This allows for unbounded number of llm calls.
|
||||
"""
|
||||
|
||||
custom_metadata: Optional[dict[str, Any]] = None
|
||||
"""Custom metadata for the current invocation."""
|
||||
|
||||
@field_validator('max_llm_calls', mode='after')
|
||||
@classmethod
|
||||
def validate_max_llm_calls(cls, value: int) -> int:
|
||||
|
||||
@@ -165,6 +165,7 @@ class TestConvertA2aRequestToAgentRunRequest:
|
||||
request.message = mock_message
|
||||
request.context_id = "test_context_123"
|
||||
request.call_context = mock_call_context
|
||||
request.metadata = {"test_key": "test_value"}
|
||||
|
||||
# Create proper genai_types.Part objects instead of mocks
|
||||
mock_genai_part1 = genai_types.Part(text="test part 1")
|
||||
@@ -185,6 +186,9 @@ class TestConvertA2aRequestToAgentRunRequest:
|
||||
assert result.new_message.role == "user"
|
||||
assert result.new_message.parts == [mock_genai_part1, mock_genai_part2]
|
||||
assert isinstance(result.run_config, RunConfig)
|
||||
assert result.run_config.custom_metadata == {
|
||||
"a2a_metadata": {"test_key": "test_value"}
|
||||
}
|
||||
|
||||
# Verify calls
|
||||
assert mock_convert_part.call_count == 2
|
||||
@@ -212,6 +216,7 @@ class TestConvertA2aRequestToAgentRunRequest:
|
||||
request.message = mock_message
|
||||
request.context_id = "test_context_123"
|
||||
request.call_context = None
|
||||
request.metadata = {}
|
||||
|
||||
# Act
|
||||
result = convert_a2a_request_to_agent_run_request(
|
||||
@@ -241,6 +246,7 @@ class TestConvertA2aRequestToAgentRunRequest:
|
||||
request.message = mock_message
|
||||
request.context_id = None
|
||||
request.call_context = None
|
||||
request.metadata = {}
|
||||
|
||||
# Create proper genai_types.Part object instead of mock
|
||||
mock_genai_part = genai_types.Part(text="test part")
|
||||
@@ -272,6 +278,7 @@ class TestConvertA2aRequestToAgentRunRequest:
|
||||
request.message = mock_message
|
||||
request.context_id = "session_123"
|
||||
request.call_context = None
|
||||
request.metadata = {}
|
||||
|
||||
# Create proper genai_types.Part object instead of mock
|
||||
mock_genai_part = genai_types.Part(text="test part")
|
||||
@@ -313,6 +320,7 @@ class TestIntegration:
|
||||
request.call_context = mock_call_context
|
||||
request.message = mock_message
|
||||
request.context_id = "mysession"
|
||||
request.metadata = {}
|
||||
|
||||
# Create proper genai_types.Part object instead of mock
|
||||
mock_genai_part = genai_types.Part(text="test part")
|
||||
@@ -344,6 +352,7 @@ class TestIntegration:
|
||||
request.call_context = None
|
||||
request.message = mock_message
|
||||
request.context_id = "test_session_456"
|
||||
request.metadata = {}
|
||||
|
||||
# Create proper genai_types.Part object instead of mock
|
||||
mock_genai_part = genai_types.Part(text="test part")
|
||||
|
||||
Reference in New Issue
Block a user