72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
|
|
@dataclass
|
|
class RunArtifacts:
|
|
run_id: str
|
|
root_dir: Path
|
|
logs_dir: Path
|
|
shots_dir: Path
|
|
enhance_dir: Path
|
|
log_file: Path
|
|
|
|
|
|
@dataclass
|
|
class AgentResult:
|
|
completed: bool
|
|
result: str
|
|
return_message: str
|
|
data: Any | None
|
|
steps: int
|
|
started_at: float
|
|
ended_at: float
|
|
usage: "UsageSummary"
|
|
error: str | None = None
|
|
cancelled: bool = False
|
|
|
|
|
|
@dataclass
|
|
class UsageSummary:
|
|
input_tokens: int = 0
|
|
cached_input_tokens: int = 0
|
|
output_tokens: int = 0
|
|
reasoning_tokens: int = 0
|
|
total_tokens: int = 0
|
|
estimated_cost_usd: float | None = None
|
|
model_for_pricing: str | None = None
|
|
|
|
def to_dict(self) -> dict[str, Any]:
|
|
return {
|
|
"input_tokens": self.input_tokens,
|
|
"cached_input_tokens": self.cached_input_tokens,
|
|
"output_tokens": self.output_tokens,
|
|
"reasoning_tokens": self.reasoning_tokens,
|
|
"total_tokens": self.total_tokens,
|
|
"estimated_cost_usd": self.estimated_cost_usd,
|
|
"model_for_pricing": self.model_for_pricing,
|
|
}
|
|
|
|
|
|
@dataclass
|
|
class RuntimeOptions:
|
|
model: str
|
|
max_steps: int = 60
|
|
command_timeout: int = 45
|
|
type_interval: float = 0.02
|
|
click_pause: float = 0.10
|
|
reasoning_effort: str = "medium"
|
|
screen_context_decay_steps: int = 4
|
|
max_visual_context_images: int = 3
|
|
native_automation_mode: str = "prefer"
|
|
dialog_timeout_seconds: float = 12.0
|
|
focus_timeout_seconds: float = 8.0
|
|
ui_element_timeout_seconds: float = 8.0
|
|
max_retries_per_surface: int = 3
|
|
pretty_logs: bool = False
|
|
disable_tools: set[str] | None = None
|
|
prohibited_key_combos: set[str] | None = None
|