from __future__ import annotations from dataclasses import dataclass, field from datetime import datetime, timezone def _utcnow() -> datetime: return datetime.now(timezone.utc) from typing import Any, Dict, Optional @dataclass class StoredArtifactInfo: """Lightweight description of an artifact persisted to storage.""" path: str size_bytes: int checksum: str created_at: datetime = field(default_factory=_utcnow) content_type: Optional[str] = None metadata: Dict[str, Any] = field(default_factory=dict) def as_dict(self) -> Dict[str, Any]: return { "path": self.path, "size_bytes": self.size_bytes, "checksum": self.checksum, "created_at": self.created_at.isoformat(), "content_type": self.content_type, "metadata": self.metadata, }