OpenHands / openhands /server /monitoring.py
Backup-bdg's picture
Upload 964 files
51ff9e5 verified
from openhands.core.config.openhands_config import OpenHandsConfig
from openhands.events.event import Event
class MonitoringListener:
"""Abstract base class for monitoring application activity.
This is an extension point in OpenHands that allows applications to customize how
application activity is monitored. Applications can substitute their own implementation by:
1. Creating a class that inherits from MonitoringListener
2. Implementing desired methods (all methods have default no-op implementations)
3. Setting server_config.monitoring_listener_class to the fully qualified name of the class
The class is instantiated via get_impl() in openhands.server.shared.py.
Implementations should be non-disruptive, do not raise or block to perform I/O.
"""
def on_session_event(self, event: Event) -> None:
"""
Track metrics about events being added to a Session's EventStream.
"""
pass
def on_agent_session_start(self, success: bool, duration: float) -> None:
"""
Track an agent session start.
Success is true if startup completed without error.
Duration is start time in seconds observed by AgentSession.
"""
pass
def on_create_conversation(self) -> None:
"""
Track the beginning of conversation creation.
Does not currently capture whether it succeed.
"""
pass
@classmethod
def get_instance(
cls,
config: OpenHandsConfig,
) -> 'MonitoringListener':
return cls()