renamed all (#3207)

This commit is contained in:
Eduard van Valkenburg
2026-01-14 06:54:07 +01:00
committed by GitHub
Unverified
parent 1ae0b09e42
commit d8cf8361bd
125 changed files with 1024 additions and 1027 deletions
@@ -9,7 +9,7 @@ invoked during durable entity execution.
from dataclasses import dataclass
from typing import Protocol
from agent_framework import AgentRunResponse, AgentRunResponseUpdate
from agent_framework import AgentResponse, AgentResponseUpdate
@dataclass(frozen=True)
@@ -27,14 +27,14 @@ class AgentResponseCallbackProtocol(Protocol):
async def on_streaming_response_update(
self,
update: AgentRunResponseUpdate,
update: AgentResponseUpdate,
context: AgentCallbackContext,
) -> None:
"""Handle a streaming response update emitted by the agent."""
async def on_agent_response(
self,
response: AgentRunResponse,
response: AgentResponse,
context: AgentCallbackContext,
) -> None:
"""Handle the final agent response."""
@@ -35,7 +35,7 @@ from enum import Enum
from typing import Any, cast
from agent_framework import (
AgentRunResponse,
AgentResponse,
BaseContent,
ChatMessage,
DataContent,
@@ -693,8 +693,8 @@ class DurableAgentStateResponse(DurableAgentStateEntry):
)
@staticmethod
def from_run_response(correlation_id: str, response: AgentRunResponse) -> DurableAgentStateResponse:
"""Creates a DurableAgentStateResponse from an AgentRunResponse."""
def from_run_response(correlation_id: str, response: AgentResponse) -> DurableAgentStateResponse:
"""Creates a DurableAgentStateResponse from an AgentResponse."""
return DurableAgentStateResponse(
correlation_id=correlation_id,
created_at=_parse_created_at(response.created_at),
@@ -15,8 +15,8 @@ from typing import Any, cast
import azure.durable_functions as df
from agent_framework import (
AgentProtocol,
AgentRunResponse,
AgentRunResponseUpdate,
AgentResponse,
AgentResponseUpdate,
ChatMessage,
ErrorContent,
Role,
@@ -95,7 +95,7 @@ class AgentEntity:
self,
context: df.DurableEntityContext,
request: RunRequest | dict[str, Any] | str,
) -> AgentRunResponse:
) -> AgentResponse:
"""(Deprecated) Execute the agent with a message directly in the entity.
Args:
@@ -103,7 +103,7 @@ class AgentEntity:
request: RunRequest object, dict, or string message (for backward compatibility)
Returns:
AgentRunResponse enriched with execution metadata.
AgentResponse enriched with execution metadata.
"""
return await self.run(context, request)
@@ -111,7 +111,7 @@ class AgentEntity:
self,
context: df.DurableEntityContext,
request: RunRequest | dict[str, Any] | str,
) -> AgentRunResponse:
) -> AgentResponse:
"""Execute the agent with a message directly in the entity.
Args:
@@ -119,7 +119,7 @@ class AgentEntity:
request: RunRequest object, dict, or string message (for backward compatibility)
Returns:
AgentRunResponse enriched with execution metadata.
AgentResponse enriched with execution metadata.
"""
if isinstance(request, str):
run_request = RunRequest(message=request, role=Role.USER)
@@ -159,7 +159,7 @@ class AgentEntity:
if response_format:
run_kwargs["options"]["response_format"] = response_format
agent_run_response: AgentRunResponse = await self._invoke_agent(
agent_response: AgentResponse = await self._invoke_agent(
run_kwargs=run_kwargs,
correlation_id=correlation_id,
thread_id=thread_id,
@@ -168,11 +168,11 @@ class AgentEntity:
logger.debug(
"[AgentEntity.run] Agent invocation completed - response type: %s",
type(agent_run_response).__name__,
type(agent_response).__name__,
)
try:
response_text = agent_run_response.text if agent_run_response.text else "No response"
response_text = agent_response.text if agent_response.text else "No response"
logger.debug(f"Response: {response_text[:100]}...")
except Exception as extraction_error:
logger.error(
@@ -181,12 +181,12 @@ class AgentEntity:
exc_info=True,
)
state_response = DurableAgentStateResponse.from_run_response(correlation_id, agent_run_response)
state_response = DurableAgentStateResponse.from_run_response(correlation_id, agent_response)
self.state.data.conversation_history.append(state_response)
logger.debug("[AgentEntity.run] AgentRunResponse stored in conversation history")
logger.debug("[AgentEntity.run] AgentResponse stored in conversation history")
return agent_run_response
return agent_response
except Exception as exc:
logger.exception("[AgentEntity.run] Agent execution failed.")
@@ -196,7 +196,7 @@ class AgentEntity:
role=Role.ASSISTANT, contents=[ErrorContent(message=str(exc), error_code=type(exc).__name__)]
)
error_response = AgentRunResponse(messages=[error_message])
error_response = AgentResponse(messages=[error_message])
# Create and store error response in conversation history
error_state_response = DurableAgentStateResponse.from_run_response(correlation_id, error_response)
@@ -211,7 +211,7 @@ class AgentEntity:
correlation_id: str,
thread_id: str,
request_message: str,
) -> AgentRunResponse:
) -> AgentResponse:
"""Execute the agent, preferring streaming when available."""
callback_context: AgentCallbackContext | None = None
if self.callback is not None:
@@ -229,7 +229,7 @@ class AgentEntity:
stream_candidate = await stream_candidate
return await self._consume_stream(
stream=cast(AsyncIterable[AgentRunResponseUpdate], stream_candidate),
stream=cast(AsyncIterable[AgentResponseUpdate], stream_candidate),
callback_context=callback_context,
)
except TypeError as type_error:
@@ -248,32 +248,32 @@ class AgentEntity:
else:
logger.debug("Agent does not expose run_stream; falling back to run().")
agent_run_response = await self._invoke_non_stream(run_kwargs)
await self._notify_final_response(agent_run_response, callback_context)
return agent_run_response
agent_response = await self._invoke_non_stream(run_kwargs)
await self._notify_final_response(agent_response, callback_context)
return agent_response
async def _consume_stream(
self,
stream: AsyncIterable[AgentRunResponseUpdate],
stream: AsyncIterable[AgentResponseUpdate],
callback_context: AgentCallbackContext | None = None,
) -> AgentRunResponse:
"""Consume streaming responses and build the final AgentRunResponse."""
updates: list[AgentRunResponseUpdate] = []
) -> AgentResponse:
"""Consume streaming responses and build the final AgentResponse."""
updates: list[AgentResponseUpdate] = []
async for update in stream:
updates.append(update)
await self._notify_stream_update(update, callback_context)
if updates:
response = AgentRunResponse.from_agent_run_response_updates(updates)
response = AgentResponse.from_agent_run_response_updates(updates)
else:
logger.debug("[AgentEntity] No streaming updates received; creating empty response")
response = AgentRunResponse(messages=[])
response = AgentResponse(messages=[])
await self._notify_final_response(response, callback_context)
return response
async def _invoke_non_stream(self, run_kwargs: dict[str, Any]) -> AgentRunResponse:
async def _invoke_non_stream(self, run_kwargs: dict[str, Any]) -> AgentResponse:
"""Invoke the agent without streaming support."""
run_callable = getattr(self.agent, "run", None)
if run_callable is None or not callable(run_callable):
@@ -283,14 +283,14 @@ class AgentEntity:
if inspect.isawaitable(result):
result = await result
if not isinstance(result, AgentRunResponse):
raise TypeError(f"Agent run() must return an AgentRunResponse instance; received {type(result).__name__}")
if not isinstance(result, AgentResponse):
raise TypeError(f"Agent run() must return an AgentResponse instance; received {type(result).__name__}")
return result
async def _notify_stream_update(
self,
update: AgentRunResponseUpdate,
update: AgentResponseUpdate,
context: AgentCallbackContext | None,
) -> None:
"""Invoke the streaming callback if one is registered."""
@@ -310,7 +310,7 @@ class AgentEntity:
async def _notify_final_response(
self,
response: AgentRunResponse,
response: AgentResponse,
context: AgentCallbackContext | None,
) -> None:
"""Invoke the final response callback if one is registered."""
@@ -11,8 +11,8 @@ from typing import TYPE_CHECKING, Any, TypeAlias, cast
from agent_framework import (
AgentProtocol,
AgentRunResponse,
AgentRunResponseUpdate,
AgentResponse,
AgentResponseUpdate,
AgentThread,
ChatMessage,
get_logger,
@@ -46,10 +46,10 @@ else:
class AgentTask(_TypedCompoundTask):
"""A custom Task that wraps entity calls and provides typed AgentRunResponse results.
"""A custom Task that wraps entity calls and provides typed AgentResponse results.
This task wraps the underlying entity call task and intercepts its completion
to convert the raw result into a typed AgentRunResponse object.
to convert the raw result into a typed AgentResponse object.
"""
def __init__(
@@ -77,7 +77,7 @@ class AgentTask(_TypedCompoundTask):
self.id = entity_task.id
def try_set_value(self, child: TaskBase) -> None:
"""Transition the AgentTask to a terminal state and set its value to `AgentRunResponse`.
"""Transition the AgentTask to a terminal state and set its value to `AgentResponse`.
Parameters
----------
@@ -104,7 +104,7 @@ class AgentTask(_TypedCompoundTask):
response,
)
# Set the typed AgentRunResponse as this task's result
# Set the typed AgentResponse as this task's result
self.set_value(is_error=False, value=response)
except Exception as e:
logger.exception(
@@ -118,18 +118,18 @@ class AgentTask(_TypedCompoundTask):
self._first_error = child.result
self.set_value(is_error=True, value=self._first_error)
def _load_agent_response(self, agent_response: AgentRunResponse | dict[str, Any] | None) -> AgentRunResponse:
"""Convert raw payloads into AgentRunResponse instance."""
def _load_agent_response(self, agent_response: AgentResponse | dict[str, Any] | None) -> AgentResponse:
"""Convert raw payloads into AgentResponse instance."""
if agent_response is None:
raise ValueError("agent_response cannot be None")
logger.debug("[load_agent_response] Loading agent response of type: %s", type(agent_response))
if isinstance(agent_response, AgentRunResponse):
if isinstance(agent_response, AgentResponse):
return agent_response
if isinstance(agent_response, dict):
logger.debug("[load_agent_response] Converting dict payload using AgentRunResponse.from_dict")
return AgentRunResponse.from_dict(agent_response)
logger.debug("[load_agent_response] Converting dict payload using AgentResponse.from_dict")
return AgentResponse.from_dict(agent_response)
raise TypeError(f"Unsupported type for agent_response: {type(agent_response)}")
@@ -137,14 +137,14 @@ class AgentTask(_TypedCompoundTask):
self,
response_format: type[BaseModel] | None,
correlation_id: str,
response: AgentRunResponse,
response: AgentResponse,
) -> None:
"""Ensure the AgentRunResponse value is parsed into the expected response_format."""
"""Ensure the AgentResponse value is parsed into the expected response_format."""
if response_format is not None and not isinstance(response.value, response_format):
response.try_parse_value(response_format)
logger.debug(
"[DurableAIAgent] Loaded AgentRunResponse.value for correlation_id %s with type: %s",
"[DurableAIAgent] Loaded AgentResponse.value for correlation_id %s with type: %s",
correlation_id,
type(response.value).__name__,
)
@@ -190,7 +190,7 @@ class DurableAIAgent(AgentProtocol):
# We return an AgentTask here which is a TaskBase subclass.
# This is an intentional deviation from AgentProtocol which defines run() as async.
# The AgentTask can be yielded in Durable Functions orchestrations and will provide
# a typed AgentRunResponse result.
# a typed AgentResponse result.
def run( # type: ignore[override]
self,
messages: str | ChatMessage | Sequence[str | ChatMessage] | None = None,
@@ -203,7 +203,7 @@ class DurableAIAgent(AgentProtocol):
This method implements AgentProtocol and returns an AgentTask (subclass of TaskBase)
that can be yielded in Durable Functions orchestrations. The task's result will be
a typed AgentRunResponse.
a typed AgentResponse.
Args:
messages: The message(s) to send to the agent
@@ -212,7 +212,7 @@ class DurableAIAgent(AgentProtocol):
**kwargs: Additional arguments (enable_tool_calls)
Returns:
An AgentTask that resolves to an AgentRunResponse when yielded
An AgentTask that resolves to an AgentResponse when yielded
Example:
@app.orchestration_trigger(context_name="context")
@@ -220,7 +220,7 @@ class DurableAIAgent(AgentProtocol):
agent = app.get_agent(context, "MyAgent")
thread = agent.get_new_thread()
response = yield agent.run("Hello", thread=thread)
# response is typed as AgentRunResponse
# response is typed as AgentResponse
"""
message_str = self._normalize_messages(messages)
@@ -266,7 +266,7 @@ class DurableAIAgent(AgentProtocol):
# Call the entity to get the underlying task
entity_task = self.context.call_entity(entity_id, "run", run_request.to_dict())
# Wrap it in an AgentTask that will convert the result to AgentRunResponse
# Wrap it in an AgentTask that will convert the result to AgentResponse
agent_task = AgentTask(
entity_task=entity_task,
response_format=response_format,
@@ -286,7 +286,7 @@ class DurableAIAgent(AgentProtocol):
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AsyncIterator[AgentRunResponseUpdate]:
) -> AsyncIterator[AgentResponseUpdate]:
"""Run the agent with streaming (not supported for durable agents).
Raises:
@@ -10,7 +10,7 @@ from unittest.mock import ANY, AsyncMock, Mock, patch
import azure.durable_functions as df
import azure.functions as func
import pytest
from agent_framework import AgentRunResponse, ChatMessage, ErrorContent
from agent_framework import AgentResponse, ChatMessage, ErrorContent
from agent_framework_azurefunctions import AgentFunctionApp
from agent_framework_azurefunctions._app import WAIT_FOR_RESPONSE_FIELD, WAIT_FOR_RESPONSE_HEADER
@@ -332,7 +332,7 @@ class TestAgentEntityOperations:
"""Test that entity can run agent operation."""
mock_agent = Mock()
mock_agent.run = AsyncMock(
return_value=AgentRunResponse(messages=[ChatMessage(role="assistant", text="Test response")])
return_value=AgentResponse(messages=[ChatMessage(role="assistant", text="Test response")])
)
entity = AgentEntity(mock_agent)
@@ -343,7 +343,7 @@ class TestAgentEntityOperations:
{"message": "Test message", "thread_id": "test-conv-123", "correlationId": "corr-app-entity-1"},
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Test response"
assert entity.state.message_count == 2
@@ -351,7 +351,7 @@ class TestAgentEntityOperations:
"""Test that the entity stores conversation history."""
mock_agent = Mock()
mock_agent.run = AsyncMock(
return_value=AgentRunResponse(messages=[ChatMessage(role="assistant", text="Response 1")])
return_value=AgentResponse(messages=[ChatMessage(role="assistant", text="Response 1")])
)
entity = AgentEntity(mock_agent)
@@ -390,7 +390,7 @@ class TestAgentEntityOperations:
"""Test that the entity increments the message count."""
mock_agent = Mock()
mock_agent.run = AsyncMock(
return_value=AgentRunResponse(messages=[ChatMessage(role="assistant", text="Response")])
return_value=AgentResponse(messages=[ChatMessage(role="assistant", text="Response")])
)
entity = AgentEntity(mock_agent)
@@ -437,7 +437,7 @@ class TestAgentEntityFactory:
"""Test that the entity function handles the run operation."""
mock_agent = Mock()
mock_agent.run = AsyncMock(
return_value=AgentRunResponse(messages=[ChatMessage(role="assistant", text="Response")])
return_value=AgentResponse(messages=[ChatMessage(role="assistant", text="Response")])
)
entity_function = create_agent_entity(mock_agent)
@@ -465,7 +465,7 @@ class TestAgentEntityFactory:
"""Test that the entity function handles the deprecated run_agent operation for backward compatibility."""
mock_agent = Mock()
mock_agent.run = AsyncMock(
return_value=AgentRunResponse(messages=[ChatMessage(role="assistant", text="Response")])
return_value=AgentResponse(messages=[ChatMessage(role="assistant", text="Response")])
)
entity_function = create_agent_entity(mock_agent)
@@ -619,7 +619,7 @@ class TestErrorHandling:
mock_context, {"message": "Test message", "thread_id": "conv-1", "correlationId": "corr-app-error-1"}
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert len(result.messages) == 1
content = result.messages[0].contents[0]
assert isinstance(content, ErrorContent)
@@ -12,7 +12,7 @@ from typing import Any, TypeVar
from unittest.mock import AsyncMock, Mock, patch
import pytest
from agent_framework import AgentRunResponse, AgentRunResponseUpdate, ChatMessage, ErrorContent, Role
from agent_framework import AgentResponse, AgentResponseUpdate, ChatMessage, ErrorContent, Role
from pydantic import BaseModel
from agent_framework_azurefunctions._durable_agent_state import (
@@ -37,12 +37,12 @@ def _role_value(chat_message: DurableAgentStateMessage) -> str:
return str(role_value)
def _agent_response(text: str | None) -> AgentRunResponse:
"""Create an AgentRunResponse with a single assistant message."""
def _agent_response(text: str | None) -> AgentResponse:
"""Create an AgentResponse with a single assistant message."""
message = (
ChatMessage(role="assistant", text=text) if text is not None else ChatMessage(role="assistant", contents=[])
)
return AgentRunResponse(messages=[message])
return AgentResponse(messages=[message])
class RecordingCallback:
@@ -54,12 +54,12 @@ class RecordingCallback:
async def on_streaming_response_update(
self,
update: AgentRunResponseUpdate,
update: AgentResponseUpdate,
context: Any,
) -> None:
await self.stream_mock(update, context)
async def on_agent_response(self, response: AgentRunResponse, context: Any) -> None:
async def on_agent_response(self, response: AgentResponse, context: Any) -> None:
await self.response_mock(response, context)
@@ -132,7 +132,7 @@ class TestAgentEntityRunAgent:
assert getattr(sent_message.role, "value", sent_message.role) == "user"
# Verify result
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Test response"
async def test_run_agent_executes_agent(self) -> None:
@@ -159,18 +159,18 @@ class TestAgentEntityRunAgent:
assert getattr(sent_message.role, "value", sent_message.role) == "user"
# Verify result
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Test response"
async def test_run_agent_streaming_callbacks_invoked(self) -> None:
"""Ensure streaming updates trigger callbacks and run() is not used."""
updates = [
AgentRunResponseUpdate(text="Hello"),
AgentRunResponseUpdate(text=" world"),
AgentResponseUpdate(text="Hello"),
AgentResponseUpdate(text=" world"),
]
async def update_generator() -> AsyncIterator[AgentRunResponseUpdate]:
async def update_generator() -> AsyncIterator[AgentResponseUpdate]:
for update in updates:
yield update
@@ -192,7 +192,7 @@ class TestAgentEntityRunAgent:
},
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert "Hello" in result.text
assert callback.stream_mock.await_count == len(updates)
assert callback.response_mock.await_count == 1
@@ -239,7 +239,7 @@ class TestAgentEntityRunAgent:
},
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Final response"
assert callback.stream_mock.await_count == 0
assert callback.response_mock.await_count == 1
@@ -605,7 +605,7 @@ class TestErrorHandling:
mock_context, {"message": "Message", "thread_id": "conv-1", "correlationId": "corr-entity-error-1"}
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert len(result.messages) == 1
content = result.messages[0].contents[0]
assert isinstance(content, ErrorContent)
@@ -624,7 +624,7 @@ class TestErrorHandling:
mock_context, {"message": "Message", "thread_id": "conv-1", "correlationId": "corr-entity-error-2"}
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert len(result.messages) == 1
content = result.messages[0].contents[0]
assert isinstance(content, ErrorContent)
@@ -643,7 +643,7 @@ class TestErrorHandling:
mock_context, {"message": "Message", "thread_id": "conv-1", "correlationId": "corr-entity-error-3"}
)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert len(result.messages) == 1
content = result.messages[0].contents[0]
assert isinstance(content, ErrorContent)
@@ -682,7 +682,7 @@ class TestErrorHandling:
)
# Even on error, message info should be preserved
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert len(result.messages) == 1
content = result.messages[0].contents[0]
assert isinstance(content, ErrorContent)
@@ -793,7 +793,7 @@ class TestRunRequestSupport:
result = await entity.run(mock_context, request)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Response"
async def test_run_agent_with_dict_request(self) -> None:
@@ -814,7 +814,7 @@ class TestRunRequestSupport:
result = await entity.run(mock_context, request_dict)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == "Response"
async def test_run_agent_with_string_raises_without_correlation(self) -> None:
@@ -869,7 +869,7 @@ class TestRunRequestSupport:
result = await entity.run(mock_context, request)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
assert result.text == '{"answer": 42}'
assert result.value is None
@@ -887,7 +887,7 @@ class TestRunRequestSupport:
result = await entity.run(mock_context, request)
assert isinstance(result, AgentRunResponse)
assert isinstance(result, AgentResponse)
# Agent should have been called (tool disabling is framework-dependent)
mock_agent.run.assert_called_once()
@@ -6,7 +6,7 @@ from typing import Any
from unittest.mock import Mock
import pytest
from agent_framework import AgentRunResponse, AgentThread, ChatMessage
from agent_framework import AgentResponse, AgentThread, ChatMessage
from azure.durable_functions.models.Task import TaskBase, TaskState
from agent_framework_azurefunctions import AgentFunctionApp, DurableAIAgent
@@ -39,7 +39,7 @@ def _create_entity_task(task_id: int = 1) -> TaskBase:
class TestAgentResponseHelpers:
"""Tests for helper utilities that prepare AgentRunResponse values."""
"""Tests for helper utilities that prepare AgentResponse values."""
@staticmethod
def _create_agent_task() -> AgentTask:
@@ -48,7 +48,7 @@ class TestAgentResponseHelpers:
def test_load_agent_response_from_instance(self) -> None:
task = self._create_agent_task()
response = AgentRunResponse(messages=[ChatMessage(role="assistant", text='{"foo": "bar"}')])
response = AgentResponse(messages=[ChatMessage(role="assistant", text='{"foo": "bar"}')])
loaded = task._load_agent_response(response)
@@ -57,7 +57,7 @@ class TestAgentResponseHelpers:
def test_load_agent_response_from_serialized(self) -> None:
task = self._create_agent_task()
serialized = AgentRunResponse(messages=[ChatMessage(role="assistant", text="structured")]).to_dict()
serialized = AgentResponse(messages=[ChatMessage(role="assistant", text="structured")]).to_dict()
serialized["value"] = {"answer": 42}
loaded = task._load_agent_response(serialized)
@@ -65,7 +65,7 @@ class TestAgentResponseHelpers:
assert loaded is not None
assert loaded.value == {"answer": 42}
loaded_dict = loaded.to_dict()
assert loaded_dict["type"] == "agent_run_response"
assert loaded_dict["type"] == "agent_response"
def test_load_agent_response_rejects_none(self) -> None:
task = self._create_agent_task()
@@ -86,7 +86,7 @@ class TestAgentResponseHelpers:
# Simulate successful entity task completion
entity_task.state = TaskState.SUCCEEDED
entity_task.result = AgentRunResponse(messages=[ChatMessage(role="assistant", text="Test response")]).to_dict()
entity_task.result = AgentResponse(messages=[ChatMessage(role="assistant", text="Test response")]).to_dict()
# Clear pending_tasks to simulate that parent has processed the child
task.pending_tasks.clear()
@@ -94,9 +94,9 @@ class TestAgentResponseHelpers:
# Call try_set_value
task.try_set_value(entity_task)
# Verify task completed successfully with AgentRunResponse
# Verify task completed successfully with AgentResponse
assert task.state == TaskState.SUCCEEDED
assert isinstance(task.result, AgentRunResponse)
assert isinstance(task.result, AgentResponse)
assert task.result.text == "Test response"
def test_try_set_value_failure(self) -> None:
@@ -128,9 +128,7 @@ class TestAgentResponseHelpers:
# Simulate successful entity task with JSON response
entity_task.state = TaskState.SUCCEEDED
entity_task.result = AgentRunResponse(
messages=[ChatMessage(role="assistant", text='{"answer": "42"}')]
).to_dict()
entity_task.result = AgentResponse(messages=[ChatMessage(role="assistant", text='{"answer": "42"}')]).to_dict()
# Clear pending_tasks to simulate that parent has processed the child
task.pending_tasks.clear()
@@ -140,7 +138,7 @@ class TestAgentResponseHelpers:
# Verify task completed and value was parsed
assert task.state == TaskState.SUCCEEDED
assert isinstance(task.result, AgentRunResponse)
assert isinstance(task.result, AgentResponse)
assert isinstance(task.result.value, TestSchema)
assert task.result.value.answer == "42"
@@ -152,7 +150,7 @@ class TestAgentResponseHelpers:
name: str
task = self._create_agent_task()
response = AgentRunResponse(messages=[ChatMessage(role="assistant", text='{"name": "test"}')])
response = AgentResponse(messages=[ChatMessage(role="assistant", text='{"name": "test"}')])
# Value should be None initially
assert response.value is None
@@ -173,7 +171,7 @@ class TestAgentResponseHelpers:
task = self._create_agent_task()
existing_value = SampleSchema(name="existing")
response = AgentRunResponse(
response = AgentResponse(
messages=[ChatMessage(role="assistant", text='{"name": "new"}')],
value=existing_value,
)