import { Fetcher, apiRequest } from "./apiClient"; export interface StartInferenceRequest { follower_port: string; follower_config: string; policy_ref: string; task: string; cameras: Record; duration_s: number; } export interface InferenceStatus { inference_active: boolean; started_at: number | null; rollout_started_at: number | null; elapsed_s: number; rollout_elapsed_s: number; duration_s: number | null; policy_ref: string | null; log_path: string | null; exited?: boolean; exit_code?: number | null; } export async function startInference( baseUrl: string, fetcher: Fetcher, request: StartInferenceRequest, ): Promise<{ message: string; log_path: string }> { return apiRequest<{ message: string; log_path: string }>( baseUrl, fetcher, "/start-inference", { method: "POST", body: request, action: "Start inference" }, ); } export async function stopInference( baseUrl: string, fetcher: Fetcher, ): Promise<{ message: string }> { return apiRequest<{ message: string }>(baseUrl, fetcher, "/stop-inference", { method: "POST", action: "Stop inference", }); } export async function getInferenceStatus( baseUrl: string, fetcher: Fetcher, signal?: AbortSignal, ): Promise { return apiRequest(baseUrl, fetcher, "/inference-status", { signal, action: "Get inference status", }); }