Spaces:
Running on Zero
Running on Zero
GitHub Actions
fix: 0 test failures; FileService; real RagService; emergency probe; chat return
4aaae80 | from __future__ import annotations | |
| import time | |
| class DeliveryManager: | |
| """Decides direct vs store-and-forward delivery.""" | |
| def __init__(self, bus=None, our_node_id: str = ""): | |
| self._bus = bus | |
| self._our_node_id = our_node_id | |
| self._queued: list[dict] = [] # store-and-forward queue | |
| async def deliver(self, message: dict, recipient_node_id: str) -> str: | |
| """Try direct delivery. Returns 'direct', 'queued', or 'self'.""" | |
| if recipient_node_id == self._our_node_id: | |
| return "self" | |
| if self._bus is not None: | |
| try: | |
| from hearthnet.bus.capability import RouteRequest | |
| req = RouteRequest( | |
| capability="chat.send", | |
| version_req=(1, 0), | |
| body={"input": message}, | |
| caller=self._our_node_id, | |
| trace_id="", | |
| ) | |
| entry = self._bus.router.route(req) | |
| if entry and entry.node_id == recipient_node_id and not entry.is_local: | |
| return "direct" | |
| except Exception: | |
| pass | |
| # Store-and-forward | |
| self._queued.append( | |
| { | |
| "message": message, | |
| "to": recipient_node_id, | |
| "queued_at": time.time(), | |
| } | |
| ) | |
| return "queued" | |
| def get_queued(self, node_id: str) -> list[dict]: | |
| return [q for q in self._queued if q["to"] == node_id] | |
| def acknowledge(self, message_event_id: str) -> None: | |
| self._queued = [q for q in self._queued if q["message"].get("event_id") != message_event_id] | |