Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
"""Relay subscriber for the persisted Hermes shared-metrics slice."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import platform
|
||||
import threading
|
||||
from typing import Any
|
||||
|
||||
from agent.relay_runtime import RUNTIME_INSTANCE_KEY
|
||||
from hermes_cli.config import detect_install_method
|
||||
|
||||
from .shared_metrics import SharedMetricsStore
|
||||
from .shared_metrics_contract import (
|
||||
CLIENT_ACTIVE_METRIC,
|
||||
MODEL_ROUTE_METRIC,
|
||||
TOOL_CALL_METRIC,
|
||||
client_active_counter,
|
||||
client_resource,
|
||||
model_call_dimensions,
|
||||
skill_counter,
|
||||
task_counter,
|
||||
tool_approval_counter,
|
||||
tool_call_dimensions,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SharedMetricsSubscriber:
|
||||
"""Persist validated Hermes counters from Relay lifecycle events."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
store: SharedMetricsStore,
|
||||
hermes_version: str,
|
||||
*,
|
||||
runtime_id: str | None = None,
|
||||
) -> None:
|
||||
self.store = store
|
||||
self._client_resource = client_resource(
|
||||
hermes_version,
|
||||
os_name=platform.system(),
|
||||
architecture=platform.machine(),
|
||||
install_method=detect_install_method(),
|
||||
)
|
||||
self._runtime_id = runtime_id
|
||||
self._active = True
|
||||
self._lock = threading.RLock()
|
||||
|
||||
def deactivate(self) -> None:
|
||||
"""Stop accepting events before telemetry is disabled or torn down."""
|
||||
with self._lock:
|
||||
self._active = False
|
||||
|
||||
def __call__(self, event: Any) -> None:
|
||||
if self._runtime_id is not None:
|
||||
metadata = getattr(event, "metadata", None)
|
||||
if (
|
||||
not isinstance(metadata, dict)
|
||||
or metadata.get(RUNTIME_INSTANCE_KEY) != self._runtime_id
|
||||
):
|
||||
return
|
||||
metric = client_active_counter(event)
|
||||
dimensions = None
|
||||
metric_name = CLIENT_ACTIVE_METRIC
|
||||
if metric is not None:
|
||||
metric_name, dimensions = metric
|
||||
if dimensions is None:
|
||||
dimensions = model_call_dimensions(event)
|
||||
metric_name = MODEL_ROUTE_METRIC
|
||||
if dimensions is None:
|
||||
dimensions = tool_call_dimensions(event)
|
||||
metric_name = TOOL_CALL_METRIC
|
||||
if dimensions is None:
|
||||
metric = (
|
||||
task_counter(event)
|
||||
or tool_approval_counter(event)
|
||||
or skill_counter(event)
|
||||
)
|
||||
if metric is None:
|
||||
return
|
||||
metric_name, dimensions = metric
|
||||
with self._lock:
|
||||
if not self._active:
|
||||
return
|
||||
try:
|
||||
if metric_name == CLIENT_ACTIVE_METRIC:
|
||||
self.store.record_client_active(self._client_resource)
|
||||
else:
|
||||
self.store.record_counter(
|
||||
metric_name,
|
||||
dimensions,
|
||||
self._client_resource,
|
||||
)
|
||||
except Exception:
|
||||
logger.warning(
|
||||
"Unable to persist the Hermes shared metric: %s",
|
||||
metric_name,
|
||||
exc_info=True,
|
||||
)
|
||||
Reference in New Issue
Block a user