mirror of
https://github.com/browser-use/browser-use
synced 2026-05-06 17:52:15 +02:00
57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
from abc import ABC, abstractmethod
|
|
from collections.abc import Sequence
|
|
from dataclasses import asdict, dataclass
|
|
from typing import Any
|
|
|
|
|
|
@dataclass
|
|
class BaseTelemetryEvent(ABC):
|
|
@property
|
|
@abstractmethod
|
|
def name(self) -> str:
|
|
pass
|
|
|
|
@property
|
|
def properties(self) -> dict[str, Any]:
|
|
return {k: v for k, v in asdict(self).items() if k != 'name'}
|
|
|
|
|
|
@dataclass
|
|
class RegisteredFunction:
|
|
name: str
|
|
params: dict[str, Any]
|
|
|
|
|
|
@dataclass
|
|
class ControllerRegisteredFunctionsTelemetryEvent(BaseTelemetryEvent):
|
|
registered_functions: list[RegisteredFunction]
|
|
name: str = 'controller_registered_functions'
|
|
|
|
|
|
@dataclass
|
|
class AgentTelemetryEvent(BaseTelemetryEvent):
|
|
# start details
|
|
task: str
|
|
model: str
|
|
model_provider: str
|
|
planner_llm: str | None
|
|
max_steps: int
|
|
max_actions_per_step: int
|
|
use_vision: bool
|
|
use_validation: bool
|
|
version: str
|
|
source: str
|
|
# step details
|
|
action_errors: Sequence[str | None]
|
|
action_history: Sequence[list[dict] | None]
|
|
urls_visited: Sequence[str | None]
|
|
# end details
|
|
steps: int
|
|
total_input_tokens: int
|
|
total_duration_seconds: float
|
|
success: bool | None
|
|
final_result_response: str | None
|
|
error_message: str | None
|
|
|
|
name: str = 'agent_event'
|