dashboard-nanobot/backend/providers/runtime/base.py

41 lines
1.2 KiB
Python
Raw Permalink Normal View History

from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional
from sqlmodel import Session
from models.bot import BotInstance
class RuntimeProvider(ABC):
@abstractmethod
async def start_bot(self, *, session: Session, bot: BotInstance) -> Dict[str, Any]:
raise NotImplementedError
@abstractmethod
def stop_bot(self, *, session: Session, bot: BotInstance) -> Dict[str, Any]:
raise NotImplementedError
@abstractmethod
def deliver_command(self, *, bot_id: str, command: str, media: Optional[List[str]] = None) -> Optional[str]:
raise NotImplementedError
@abstractmethod
def get_recent_logs(self, *, bot_id: str, tail: int = 300) -> List[str]:
raise NotImplementedError
@abstractmethod
def ensure_monitor(self, *, bot_id: str) -> bool:
raise NotImplementedError
@abstractmethod
def get_monitor_packets(self, *, bot_id: str, after_seq: int = 0, limit: int = 200) -> List[Dict[str, Any]]:
raise NotImplementedError
@abstractmethod
def get_runtime_status(self, *, bot_id: str) -> str:
raise NotImplementedError
@abstractmethod
def get_resource_snapshot(self, *, bot_id: str) -> Dict[str, Any]:
raise NotImplementedError