Files
2026-07-13 12:11:42 +08:00

51 lines
1.2 KiB
Python

from __future__ import annotations
import logging
import platform
import sys
from importlib.metadata import PackageNotFoundError, version
from pathlib import Path
from typing import Any
from uuid import uuid4
logger = logging.getLogger(__name__)
SESSION_ID: str = uuid4().hex[:16]
_FIRST_RUN_CACHED: bool | None = None
def get_version() -> str:
try:
return version("strix-agent")
except PackageNotFoundError:
logger.debug("strix-agent version lookup failed", exc_info=True)
return "unknown"
def is_first_run() -> bool:
global _FIRST_RUN_CACHED # noqa: PLW0603
if _FIRST_RUN_CACHED is not None:
return _FIRST_RUN_CACHED
marker = Path.home() / ".strix" / ".seen"
if marker.exists():
_FIRST_RUN_CACHED = False
return False
try:
marker.parent.mkdir(parents=True, exist_ok=True)
marker.touch()
except Exception: # noqa: BLE001, S110
pass # nosec B110
_FIRST_RUN_CACHED = True
return True
def base_props() -> dict[str, Any]:
return {
"os": platform.system().lower(),
"arch": platform.machine(),
"python": f"{sys.version_info.major}.{sys.version_info.minor}",
"strix_version": get_version(),
}