from dataclasses import dataclass @dataclass class DiskSpaceProbeResult: source: str status: str free_bytes: int | None = None message: str | None = None class DiskSpaceProvider: async def get_free_bytes(self, target_host: str) -> DiskSpaceProbeResult: raise NotImplementedError class NullDiskSpaceProvider(DiskSpaceProvider): async def get_free_bytes(self, target_host: str) -> DiskSpaceProbeResult: return DiskSpaceProbeResult( source="none", status="unavailable", free_bytes=None, message=f"No infra probe configured for host {target_host}. Add SSH/Agent provider later.", ) def get_disk_space_provider() -> DiskSpaceProvider: # Extension point: replace by SSH/Agent backed implementation. return NullDiskSpaceProvider()