2525from workflows import Context , Workflow , step
2626from workflows .context .serializers import JsonSerializer
2727from 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
2929from workflows .runtime .types .internal_state import BrokerState , EventAttempt
3030
3131
32- class WaitableExternalEvent (Event ):
32+ class WaitableExternalEvent (HumanResponseEvent ):
3333 response : str
3434
3535
3636class 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
4548def _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