from typing import Dict, Any from src.models import ContextPreset from src.result_types import Result, ErrorInfo, ErrorKind class ContextPresetManager: """Manages context presets within the project dictionary (manual_slop.toml).""" def load_all(self, project_dict: Dict[str, Any]) -> Result[Dict[str, ContextPreset]]: """Loads all context presets from the project dictionary.""" presets: Dict[str, ContextPreset] = {} errors: list[ErrorInfo] = [] presets_data = project_dict.get("context_presets", {}) for name, data in presets_data.items(): try: presets[name] = ContextPreset.from_dict(name, data) except (ValueError, KeyError, TypeError) as e: errors.append(ErrorInfo(kind=ErrorKind.INTERNAL, message=str(e), source=f"context_presets.load_all[{name}]", original=e)) return Result(data=presets, errors=errors) def save_preset(self, project_dict: Dict[str, Any], preset: ContextPreset) -> None: """Saves a context preset into the project dictionary.""" if "context_presets" not in project_dict: project_dict["context_presets"] = {} project_dict["context_presets"][preset.name] = preset.to_dict() def delete_preset(self, project_dict: Dict[str, Any], name: str) -> None: """Deletes a context preset from the project dictionary.""" if "context_presets" in project_dict and name in project_dict["context_presets"]: del project_dict["context_presets"][name]