implemenation on the ai agents and registry
This commit is contained in:
@@ -89,6 +89,10 @@ class FleetAgent(SpecializedAgent):
|
||||
handlers = {
|
||||
"assign_vehicle": self._assign_vehicle,
|
||||
"release_vehicle": self._release_vehicle,
|
||||
# Sent by ExceptionAgent._cancel_order, which knows the order, not
|
||||
# the vehicle. Had no handler, so every cancellation hit
|
||||
# _unknown_task and the vehicle stayed marked in use.
|
||||
"release_vehicle_for_cancel": self._release_vehicle_for_order,
|
||||
"get_availability": self._get_availability,
|
||||
"track_vehicle": self._track_vehicle,
|
||||
"update_location": self._update_location,
|
||||
@@ -181,6 +185,20 @@ class FleetAgent(SpecializedAgent):
|
||||
|
||||
return {"status": "released", "vehicle_id": vehicle_id, "hub": vehicle["hub"]}
|
||||
|
||||
async def _release_vehicle_for_order(self, task: AgentTask) -> Dict[str, Any]:
|
||||
"""Release the vehicle carrying a cancelled order, found by order id."""
|
||||
order_id = task.data.get("order_id")
|
||||
for assignment in self._assignments.values():
|
||||
if assignment.status == "active" and order_id in (assignment.order_ids or []):
|
||||
return await self._release_vehicle(AgentTask(
|
||||
task_id=f"{task.task_id}:release",
|
||||
agent_type=task.agent_type,
|
||||
task_type="release_vehicle",
|
||||
data={"vehicle_id": assignment.vehicle_id},
|
||||
))
|
||||
return {"status": "no_assignment", "order_id": order_id,
|
||||
"message": f"No active vehicle assignment carries order {order_id}"}
|
||||
|
||||
async def _get_availability(self, task: AgentTask) -> Dict[str, Any]:
|
||||
hub_id = task.data.get("hub_id")
|
||||
vehicle_type = task.data.get("vehicle_type")
|
||||
|
||||
Reference in New Issue
Block a user