Skip to content

Commit fe9adf4

Browse files
committed
fix: update durable agent helper methods - ensure_instance_exists and construct_messages signatures
Signed-off-by: Roberto Rodriguez <[email protected]>
1 parent f5bff71 commit fe9adf4

File tree

1 file changed

+49
-52
lines changed

1 file changed

+49
-52
lines changed

tests/agents/durableagent/test_durable_agent.py

Lines changed: 49 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ def test_record_initial_entry(self, basic_durable_agent):
590590
assert entry.status.lower() == "running"
591591

592592
def test_ensure_instance_exists(self, basic_durable_agent):
593-
"""Test _ensure_instance_exists helper method."""
593+
"""Test ensure_instance_exists helper method."""
594594
instance_id = "test-instance-123"
595595
triggering_workflow_instance_id = "parent-instance-123"
596596
time = "2024-01-01T00:00:00Z"
@@ -599,33 +599,33 @@ def test_ensure_instance_exists(self, basic_durable_agent):
599599
from datetime import datetime
600600

601601
test_time = datetime.fromisoformat(time.replace("Z", "+00:00"))
602-
basic_durable_agent._ensure_instance_exists(
603-
instance_id, "Test input", triggering_workflow_instance_id, test_time
602+
basic_durable_agent.ensure_instance_exists(
603+
instance_id=instance_id,
604+
input_value="Test input",
605+
triggering_workflow_instance_id=triggering_workflow_instance_id,
606+
time=test_time
604607
)
605608

606-
assert instance_id in basic_durable_agent.state["instances"]
607-
instance_data = basic_durable_agent.state["instances"][instance_id]
608-
assert (
609-
instance_data["triggering_workflow_instance_id"]
610-
== triggering_workflow_instance_id
611-
)
612-
# start_time is stored as string in dict format
613-
assert instance_data["start_time"] == "2024-01-01T00:00:00+00:00"
614-
assert instance_data["workflow_name"] == "AgenticWorkflow"
609+
assert instance_id in basic_durable_agent._state_model.instances
610+
entry = basic_durable_agent._state_model.instances[instance_id]
611+
assert entry.triggering_workflow_instance_id == triggering_workflow_instance_id
612+
assert entry.start_time == test_time
613+
assert entry.workflow_name is None # Default entry doesn't set workflow_name
615614

616615
# Test that existing instance is not overwritten
617616
original_input = "Original input"
618-
basic_durable_agent.state["instances"][instance_id]["input"] = original_input
617+
entry.input_value = original_input
619618

620-
basic_durable_agent._ensure_instance_exists(
621-
instance_id, "different-parent", "2024-01-02T00:00:00Z"
619+
basic_durable_agent.ensure_instance_exists(
620+
instance_id=instance_id,
621+
input_value="New input",
622+
triggering_workflow_instance_id="different-parent",
623+
time=datetime.fromisoformat("2024-01-02T00:00:00Z".replace("Z", "+00:00"))
622624
)
623625

624-
# Input should remain unchanged
625-
assert (
626-
basic_durable_agent.state["instances"][instance_id]["input"]
627-
== original_input
628-
)
626+
# Input should remain unchanged (ensure_instance_exists doesn't overwrite)
627+
entry = basic_durable_agent._state_model.instances[instance_id]
628+
assert entry.input_value == original_input
629629

630630
def test_process_user_message(self, basic_durable_agent):
631631
"""Test _process_user_message helper method."""
@@ -817,45 +817,42 @@ def test_update_agent_memory_and_history(self, basic_durable_agent):
817817

818818
def test_construct_messages_with_instance_history(self, basic_durable_agent):
819819
"""Test _construct_messages_with_instance_history helper method."""
820+
from datetime import datetime, timezone
821+
820822
instance_id = "test-instance-123"
821-
input_data = "Test input"
822823

823-
# Set up instance with messages
824-
basic_durable_agent.state["instances"][instance_id] = {
825-
"input": "Test task",
826-
"source": "test_source",
827-
"triggering_workflow_instance_id": None,
828-
"workflow_instance_id": instance_id,
829-
"workflow_name": "AgenticWorkflow",
830-
"status": "RUNNING",
831-
"messages": [
832-
AgentWorkflowMessage(role="user", content="Hello").model_dump(
833-
mode="json"
834-
),
835-
AgentWorkflowMessage(role="assistant", content="Hi there!").model_dump(
836-
mode="json"
837-
),
824+
# Set up instance with messages using AgentWorkflowEntry
825+
if not hasattr(basic_durable_agent._state_model, 'instances'):
826+
basic_durable_agent._state_model.instances = {}
827+
828+
basic_durable_agent._state_model.instances[instance_id] = AgentWorkflowEntry(
829+
input_value="Test task",
830+
source="test_source",
831+
triggering_workflow_instance_id=None,
832+
workflow_instance_id=instance_id,
833+
workflow_name="AgenticWorkflow",
834+
status="RUNNING",
835+
messages=[
836+
AgentWorkflowMessage(role="user", content="Hello"),
837+
AgentWorkflowMessage(role="assistant", content="Hi there!"),
838838
],
839-
"tool_history": [],
840-
"end_time": None,
841-
"trace_context": None,
842-
}
843-
844-
# Mock prompt template
845-
basic_durable_agent.prompt_template = Mock()
846-
basic_durable_agent.prompt_template.format_prompt.return_value = [
847-
{"role": "system", "content": "System prompt"}
848-
]
839+
tool_history=[],
840+
end_time=None,
841+
start_time=datetime.now(timezone.utc),
842+
)
849843

850844
messages = basic_durable_agent._construct_messages_with_instance_history(
851-
instance_id, input_data
845+
instance_id
852846
)
853847

854-
# Should include system message + user input
855-
assert len(messages) == 2 # system + user input
856-
assert messages[0]["role"] == "system"
857-
assert messages[1]["role"] == "user"
858-
assert messages[1]["content"] == "Test input"
848+
# Should include messages from instance history (system messages excluded from instance timeline)
849+
# Plus any messages from memory
850+
assert len(messages) >= 2 # At least the 2 instance messages
851+
# Find the user and assistant messages
852+
user_messages = [m for m in messages if m.get("role") == "user"]
853+
assistant_messages = [m for m in messages if m.get("role") == "assistant"]
854+
assert len(user_messages) >= 1
855+
assert len(assistant_messages) >= 1
859856

860857
@pytest.mark.asyncio
861858
async def test_broadcast_message(self, basic_durable_agent):

0 commit comments

Comments
 (0)