"""State model for the UI-agnostic installer core.""" from __future__ import annotations from dataclasses import dataclass, field from typing import Any @dataclass class InstallerState: current_id: str | None = None data: dict[str, Any] = field(default_factory=dict) inputs: dict[str, Any] = field(default_factory=dict) config_data: dict[str, Any] = field(default_factory=dict) errors: list[str] = field(default_factory=list) progress: dict[str, float] = field(default_factory=dict) history: list[str] = field(default_factory=list) completed: set[str] = field(default_factory=set) # Execution engine / controller controller: Any = None def mark_completed(self, milestone_id: str) -> None: self.completed.add(milestone_id)