idea10-catopt-studio-a/catopt_studio/adapters/habitat_module.py

39 lines
1.2 KiB
Python

"""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)