Skip to content

Commit 23f344f

Browse files
committed
use hitl event
1 parent 094ff45 commit 23f344f

File tree

1 file changed

+15
-26
lines changed

1 file changed

+15
-26
lines changed

packages/llama-agents-server/tests/server/test_durable_runtime.py

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,24 @@
2525
from workflows import Context, Workflow, step
2626
from workflows.context.serializers import JsonSerializer
2727
from workflows.context.state_store import DictState, serialize_dict_state_data
28-
from workflows.events import Event, StartEvent, StopEvent
28+
from workflows.events import Event, HumanResponseEvent, StartEvent, StopEvent
2929
from workflows.runtime.types.internal_state import BrokerState, EventAttempt
3030

3131

32-
class WaitableExternalEvent(Event):
32+
class WaitableExternalEvent(HumanResponseEvent):
3333
response: str
3434

3535

3636
class WaitingWorkflow(Workflow):
3737
"""Workflow that uses ctx.wait_for_event() to become idle."""
3838

3939
@step
40-
async def start_and_wait(self, ctx: Context, ev: StartEvent) -> StopEvent:
41-
external = await ctx.wait_for_event(WaitableExternalEvent)
42-
return StopEvent(result=f"received: {external.response}")
40+
async def start_and_wait(self, ctx: Context, ev: StartEvent) -> None:
41+
pass
42+
43+
@step
44+
async def end(self, ctx: Context, ev: WaitableExternalEvent) -> StopEvent:
45+
return StopEvent(result=f"received: {ev.response}")
4346

4447

4548
def _get_idle_release(server: WorkflowServer) -> IdleReleaseDecorator:
@@ -114,9 +117,7 @@ async def test_idle_handler_released_from_memory(
114117
) -> None:
115118
"""When a workflow becomes idle, its handler is released from memory."""
116119
server = WorkflowServer(workflow_store=memory_store)
117-
server.add_workflow(
118-
"test", waiting_workflow, additional_events=[WaitableExternalEvent]
119-
)
120+
server.add_workflow("test", waiting_workflow)
120121

121122
async with server.contextmanager():
122123
handler_data = await server._service.start_workflow(
@@ -144,9 +145,7 @@ async def test_released_handler_reloaded_on_event(
144145
) -> None:
145146
"""A released idle handler is reloaded when an event is sent to it."""
146147
server = WorkflowServer(workflow_store=memory_store)
147-
server.add_workflow(
148-
"test", waiting_workflow, additional_events=[WaitableExternalEvent]
149-
)
148+
server.add_workflow("test", waiting_workflow)
150149

151150
async with server.contextmanager():
152151
handler_data = await server._service.start_workflow(
@@ -177,9 +176,7 @@ async def test_idle_since_cleared_on_reload(
177176
) -> None:
178177
"""idle_since is cleared in the store when a handler is reloaded."""
179178
server = WorkflowServer(workflow_store=memory_store)
180-
server.add_workflow(
181-
"test", waiting_workflow, additional_events=[WaitableExternalEvent]
182-
)
179+
server.add_workflow("test", waiting_workflow)
183180

184181
async with server.contextmanager():
185182
handler_data = await server._service.start_workflow(
@@ -384,9 +381,7 @@ async def test_destroy_aborts_active_runs(
384381
) -> None:
385382
"""destroy() should abort all active runs via _on_server_stop."""
386383
server = WorkflowServer(workflow_store=memory_store)
387-
server.add_workflow(
388-
"test", waiting_workflow, additional_events=[WaitableExternalEvent]
389-
)
384+
server.add_workflow("test", waiting_workflow)
390385

391386
async with server.contextmanager():
392387
idle_release = _get_idle_release(server)
@@ -754,9 +749,7 @@ async def test_simple_hitl_cross_server_restart(
754749

755750
# Server 1: start workflow, let it idle
756751
server1 = WorkflowServer(workflow_store=sqlite_store)
757-
server1.add_workflow(
758-
"test", WaitingWorkflow(), additional_events=[WaitableExternalEvent]
759-
)
752+
server1.add_workflow("test", WaitingWorkflow())
760753

761754
async with server1.contextmanager():
762755
wf1 = server1._service._runtime.get_workflow("test")
@@ -767,9 +760,7 @@ async def test_simple_hitl_cross_server_restart(
767760

768761
# Server 2: send event, expect completion
769762
server2 = WorkflowServer(workflow_store=sqlite_store)
770-
server2.add_workflow(
771-
"test", WaitingWorkflow(), additional_events=[WaitableExternalEvent]
772-
)
763+
server2.add_workflow("test", WaitingWorkflow())
773764

774765
async with server2.contextmanager():
775766
await server2._service.send_event(
@@ -957,9 +948,7 @@ async def test_concurrent_send_event_to_idle_handler(
957948
) -> None:
958949
"""Two concurrent send_event calls to the same idle handler cause no unhandled exceptions."""
959950
server = WorkflowServer(workflow_store=memory_store)
960-
server.add_workflow(
961-
"test", waiting_workflow, additional_events=[WaitableExternalEvent]
962-
)
951+
server.add_workflow("test", waiting_workflow)
963952

964953
async with server.contextmanager():
965954
handler_data = await server._service.start_workflow(

0 commit comments

Comments
 (0)