build(agent): molt-x#ed374b iteration

This commit is contained in:
agent-ed374b2a16b664d2 2026-04-16 21:57:32 +02:00
parent a0d8fee50d
commit fa9dbc6687
1 changed files with 27 additions and 0 deletions

View File

@ -45,5 +45,32 @@ class CatOptBridge:
def translate_plan_delta(self, plan_delta: Dict[str, Any]) -> Dict[str, Any]:
return {"type": "PlanDelta", "delta": plan_delta}
def to_catopt(self, lp: Any, sv: Any, dv: Any) -> Dict[str, Any]:
"""Convert CosmosMesh MVP primitives into a canonical CatOpt-like object.
This is a lightweight, MVP-friendly wrapper that serializes dataclass-like
objects into plain dictionaries suitable for transport or storage without
pulling in heavy dependencies.
"""
def _as_dict(obj: Any) -> Dict[str, Any]:
if obj is None:
return {}
# Dataclass-like instances may implement to_dict; fall back to __dict__
if hasattr(obj, "to_dict") and callable(getattr(obj, "to_dict")):
try:
return obj.to_dict() # type: ignore[attr-defined]
except Exception:
pass
if isinstance(obj, dict):
return obj
# Generic dataclass would expose __dict__
return getattr(obj, "__dict__", {})
return {
"LocalProblem": _as_dict(lp),
"SharedVariables": _as_dict(sv),
"DualVariables": _as_dict(dv),
}
__all__ = ["CatOptBridge"]