56 lines
1.4 KiB
Python
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"]
|