11import logging
22from abc import ABC , abstractmethod
3- from datetime import datetime , timezone
43from typing import TYPE_CHECKING , Literal , Sequence
54
65import anthropic
@@ -142,6 +141,8 @@ async def _run_human_agent(self, send_stream: ObjectStream[Events]) -> None:
142141 updated_run = self ._retrieve ()
143142 if self ._should_abort (updated_run ):
144143 break
144+ updated_run .ping ()
145+ self ._run_service .save (updated_run )
145146 while event := self ._agent_os .poll_event ():
146147 if self ._should_abort (updated_run ):
147148 break
@@ -287,6 +288,8 @@ async def async_on_message(
287288 updated_run = self ._retrieve ()
288289 if self ._should_abort (updated_run ):
289290 return None
291+ updated_run .ping ()
292+ self ._run_service .save (updated_run )
290293 return on_message_cb_param .message
291294
292295 on_message = syncify (async_on_message )
@@ -390,7 +393,7 @@ async def run(
390393 )
391394 updated_run = self ._retrieve ()
392395 if updated_run .status == "in_progress" :
393- updated_run .completed_at = datetime . now ( tz = timezone . utc )
396+ updated_run .complete ( )
394397 self ._run_service .save (updated_run )
395398 await send_stream .send (
396399 RunEvent (
@@ -405,7 +408,7 @@ async def run(
405408 event = "thread.run.cancelling" ,
406409 )
407410 )
408- updated_run .cancelled_at = datetime . now ( tz = timezone . utc )
411+ updated_run .cancel ( )
409412 self ._run_service .save (updated_run )
410413 await send_stream .send (
411414 RunEvent (
@@ -424,8 +427,7 @@ async def run(
424427 except Exception as e : # noqa: BLE001
425428 logger .exception ("Exception in runner" )
426429 updated_run = self ._retrieve ()
427- updated_run .failed_at = datetime .now (tz = timezone .utc )
428- updated_run .last_error = RunError (message = str (e ), code = "server_error" )
430+ updated_run .fail (RunError (message = str (e ), code = "server_error" ))
429431 self ._run_service .save (updated_run )
430432 await send_stream .send (
431433 RunEvent (
@@ -440,7 +442,7 @@ async def run(
440442 )
441443
442444 def _mark_run_as_started (self ) -> None :
443- self ._run .started_at = datetime . now ( tz = timezone . utc )
445+ self ._run .start ( )
444446 self ._run_service .save (self ._run )
445447
446448 def _should_abort (self , run : Run ) -> bool :
0 commit comments