idea131-fleetopt-verifiable.../core/dsl.py

56 lines
1.4 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from typing import List, Dict, Any
@dataclass
class LocalRobotPlanDSL:
fleet_id: str
robot_id: str
tasks: List[str]
path: List[Dict[str, float]]
objectives: Dict[str, Any]
def to_model(self):
# Lightweight bridge to core LocalRobotPlan model
from .models import LocalRobotPlan
return LocalRobotPlan(
fleet_id=self.fleet_id,
robot_id=self.robot_id,
tasks=self.tasks,
path=self.path,
objectives=self.objectives,
)
@dataclass
class SharedSignalsDSL:
signals: Dict[str, float]
provenance: str | None = None
timestamp: float | None = None
def to_model(self):
from .models import SharedSignals
return SharedSignals(signals=self.signals, provenance=self.provenance, timestamp=self.timestamp)
@dataclass
class PlanDeltaDSL:
delta_id: str
fleet_id: str
changes: Dict[str, Any]
version: int = 1
nonce: str | None = None
timestamp: float | None = None
def to_model(self):
from .models import PlanDelta
return PlanDelta(
delta_id=self.delta_id,
fleet_id=self.fleet_id,
changes=self.changes,
version=self.version,
nonce=self.nonce,
timestamp=self.timestamp,
)
__all__ = ["LocalRobotPlanDSL", "SharedSignalsDSL", "PlanDeltaDSL"]