from dataclasses import dataclass, field from datetime import datetime, timezone from typing import Any @dataclass(frozen=True) class SourceRef: repository: str path: str revision: str = "main" @dataclass(frozen=True) class Document: source: SourceRef content: str metadata: dict[str, Any] = field(default_factory=dict) @dataclass(frozen=True) class IngestionRequest: source: SourceRef destination: str = "sharepoint" @dataclass(frozen=True) class IngestionResult: accepted: bool document: Document | None = None message: str = "" created_at: datetime = field(default_factory=lambda: datetime.now(timezone.utc))