33from collections .abc import Iterator
44from typing import SupportsIndex , overload
55
6+ from openhands .sdk .conversation .events_list_base import EventsListBase
67from openhands .sdk .conversation .persistence_const import (
78 EVENT_FILE_PATTERN ,
89 EVENT_NAME_RE ,
1112from openhands .sdk .event import EventBase , EventID
1213from openhands .sdk .io import FileStore
1314from openhands .sdk .logger import get_logger
14- from openhands .sdk .utils .protocol import ListLike
1515
1616
1717logger = get_logger (__name__ )
1818
1919
20- class EventLog (ListLike [ EventBase ] ):
20+ class EventLog (EventsListBase ):
2121 def __init__ (self , fs : FileStore , dir_path : str = EVENTS_DIR ) -> None :
2222 self ._fs = fs
2323 self ._dir = dir_path
@@ -41,15 +41,19 @@ def get_id(self, idx: int) -> EventID:
4141 return self ._idx_to_id [idx ]
4242
4343 @overload
44- def __getitem__ (self , idx : SupportsIndex , / ) -> EventBase : ...
44+ def __getitem__ (self , idx : int ) -> EventBase : ...
45+
4546 @overload
46- def __getitem__ (self , idx : slice , / ) -> list [EventBase ]: ...
47+ def __getitem__ (self , idx : slice ) -> list [EventBase ]: ...
4748
48- def __getitem__ (self , idx : SupportsIndex | slice , / ) -> EventBase | list [EventBase ]:
49+ def __getitem__ (self , idx : SupportsIndex | slice ) -> EventBase | list [EventBase ]:
4950 if isinstance (idx , slice ):
5051 start , stop , step = idx .indices (self ._length )
51- return [self [ i ] for i in range (start , stop , step )]
52+ return [self . _get_single_item ( i ) for i in range (start , stop , step )]
5253 # idx is int-like (SupportsIndex)
54+ return self ._get_single_item (idx )
55+
56+ def _get_single_item (self , idx : SupportsIndex ) -> EventBase :
5357 i = operator .index (idx )
5458 if i < 0 :
5559 i += self ._length
@@ -73,8 +77,8 @@ def __iter__(self) -> Iterator[EventBase]:
7377 self ._id_to_idx .setdefault (evt_id , i )
7478 yield evt
7579
76- def append (self , item : EventBase ) -> None :
77- evt_id = item .id
80+ def append (self , event : EventBase ) -> None :
81+ evt_id = event .id
7882 # Check for duplicate ID
7983 if evt_id in self ._id_to_idx :
8084 existing_idx = self ._id_to_idx [evt_id ]
@@ -83,7 +87,7 @@ def append(self, item: EventBase) -> None:
8387 )
8488
8589 path = self ._path (self ._length , event_id = evt_id )
86- self ._fs .write (path , item .model_dump_json (exclude_none = True ))
90+ self ._fs .write (path , event .model_dump_json (exclude_none = True ))
8791 self ._idx_to_id [self ._length ] = evt_id
8892 self ._id_to_idx [evt_id ] = self ._length
8993 self ._length += 1
0 commit comments