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="agentless", status="unavailable", free_bytes=None, message=f"Agentless mode: host-level free disk is not available for {target_host}.", ) def get_disk_space_provider() -> DiskSpaceProvider: # Extension point: replace by SSH/Agent backed implementation. return NullDiskSpaceProvider()