"""Method Registry — built-in steering methods (AP1.0).""" from __future__ import annotations from dataclasses import dataclass _METHODS: dict[str, "MethodDefinition"] = {} @dataclass(frozen=True) class MethodDefinition: key: str version: str description: str default_lifecycle_steps: tuple[str, ...] def register_method(defn: MethodDefinition) -> None: if defn.key in _METHODS: raise ValueError(f"Method already registered: {defn.key}") _METHODS[defn.key] = defn def get_method(key: str) -> MethodDefinition | None: return _METHODS.get(key) def list_methods() -> tuple[MethodDefinition, ...]: return tuple(_METHODS.values()) def clear_methods_for_tests() -> None: _METHODS.clear()