"""Toy habitat module adapter. The HabitatAdapter provides a simple mapping for habitat-style LocalProblem instances and produces small PlanDelta objects. It serves as a complementary example adapter to the rover planner. """ from dataclasses import dataclass from typing import Dict, Any from ..core import LocalProblem, PlanDelta @dataclass class HabitatAdapter: name: str = "habitat_module" def to_canonical(self, lp: LocalProblem) -> Dict[str, Any]: return { "adapter": self.name, "id": lp.id, "domain": lp.domain, "assets_count": len(lp.assets or {}), "constraints": lp.constraints, } def propose_delta(self, lp: LocalProblem, author: str = "habitat") -> PlanDelta: # Simple policy: if any safety constraint mentions 'no_move', emit # a delta that pauses movement; otherwise, propose a nominal plan. delta = {} for c in lp.constraints: if "no_move" in c: delta["action"] = "pause" delta["reason"] = "safety_constraint" break else: delta["action"] = "nominal" return PlanDelta(delta=delta, author=author, contract_id=lp.id)