"""Pydantic request and response models for the RT-OSS HTTP server.""" from __future__ import annotations from pydantic import BaseModel # --------------------------------------------------------------------------- # Orchestrator # --------------------------------------------------------------------------- class DeployRequest(BaseModel): config: dict class DeployResponse(BaseModel): campaign_id: str class CampaignStatusResponse(BaseModel): campaign_id: str status: str config_name: str progress: int total_steps: int started_at: float ended_at: float | None = None result: dict | None = None error: str | None = None class CancelResponse(BaseModel): campaign_id: str cancelled: bool # --------------------------------------------------------------------------- # Inference # --------------------------------------------------------------------------- class SdrConfig(BaseModel): device: str center_freq: float sample_rate: float gain: float | str = "auto" class LoadModelRequest(BaseModel): model_path: str label_map: dict[str, int] # class_name -> class_index class LoadModelResponse(BaseModel): loaded: bool model_path: str num_classes: int class StartInferenceRequest(BaseModel): sdr_config: SdrConfig class StartInferenceResponse(BaseModel): running: bool class StopInferenceResponse(BaseModel): stopped: bool class InferenceStatusResponse(BaseModel): timestamp: float prediction: str confidence: float snr_db: float zone: str | None = None