| 1234567891011121314151617181920212223242526272829303132 |
- import type { JourneyView, RunSummary } from "@/lib/types";
- const API_BASE = process.env.NEXT_PUBLIC_API_BASE ?? "http://127.0.0.1:8788";
- async function getJson<T>(path: string, signal?: AbortSignal): Promise<T> {
- const response = await fetch(`${API_BASE}${path}`, {
- cache: "no-store",
- credentials: "include",
- signal,
- });
- if (!response.ok) {
- const payload = await response.json().catch(() => null);
- const detail = typeof payload?.detail === "string" ? payload.detail : `HTTP ${response.status}`;
- throw new Error(detail);
- }
- return response.json() as Promise<T>;
- }
- export function fetchRuns(signal?: AbortSignal) {
- return getJson<RunSummary[]>("/api/runs", signal);
- }
- export function fetchJourney(scriptBuildId: number, signal?: AbortSignal) {
- return getJson<JourneyView>(`/api/runs/${scriptBuildId}/journey`, signal);
- }
- export function fetchArtifact(scriptBuildId: number, artifactVersionId: number, signal?: AbortSignal) {
- return getJson<Record<string, unknown>>(
- `/api/runs/${scriptBuildId}/artifacts/${artifactVersionId}`,
- signal,
- );
- }
|