File size: 2,449 Bytes
877add7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
71
72
73
74
import { API_BASE } from "./constants";
import type {
  EnvCatalog,
  EnvObservation,
  ResetEnvOptions,
  StepCandidatePayload,
  StepResponse,
} from "./types";

async function fetchJson<T>(path: string, init?: RequestInit): Promise<T> {
  const res = await fetch(`${API_BASE}${path}`, init);
  if (!res.ok) {
    const body = await res.text();
    throw new Error(`API ${path} failed (${res.status}): ${body.slice(0, 240)}`);
  }
  return (await res.json()) as T;
}

export async function fetchCatalog(): Promise<EnvCatalog> {
  return fetchJson<EnvCatalog>("/env/catalog");
}

export async function resetEnv(options: ResetEnvOptions = {}): Promise<EnvObservation> {
  return fetchJson<EnvObservation>("/env/reset", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(options),
  });
}

export async function orchestrateStep(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/agents/orchestrate", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({}),
  });
}

export async function stepCandidate(payload: StepCandidatePayload): Promise<StepResponse> {
  return fetchJson<StepResponse>("/env/step_candidate", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload),
  });
}

export async function fetchTrace(): Promise<Array<Record<string, unknown>>> {
  return fetchJson<Array<Record<string, unknown>>>("/env/trace");
}

export async function fetchTrainingMetrics(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/metrics/training");
}

export async function fetchBaselines(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/eval/run_baselines", { method: "POST" });
}

export async function fetchRewardBreakdown(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/env/reward_breakdown");
}

export async function fetchLegalActions(): Promise<Array<Record<string, unknown>>> {
  return fetchJson<Array<Record<string, unknown>>>("/env/legal_actions");
}

export async function fetchUncertainty(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/env/uncertainty");
}

export async function fetchDosingEval(): Promise<Record<string, unknown>> {
  return fetchJson<Record<string, unknown>>("/eval/run_dosing", { method: "POST" });
}