File size: 1,526 Bytes
fc9bd9f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import { Fetcher, apiRequest } from "./apiClient";
export interface StartInferenceRequest {
follower_port: string;
follower_config: string;
policy_ref: string;
task: string;
cameras: Record<string, {
type: string;
camera_index?: number;
width: number;
height: number;
fps?: number;
}>;
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<InferenceStatus> {
return apiRequest<InferenceStatus>(baseUrl, fetcher, "/inference-status", {
signal,
action: "Get inference status",
});
}
|