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(path: string, signal?: AbortSignal): Promise { 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; } export function fetchRuns(signal?: AbortSignal) { return getJson("/api/runs", signal); } export function fetchJourney(scriptBuildId: number, signal?: AbortSignal) { return getJson(`/api/runs/${scriptBuildId}/journey`, signal); } export function fetchArtifact(scriptBuildId: number, artifactVersionId: number, signal?: AbortSignal) { return getJson>( `/api/runs/${scriptBuildId}/artifacts/${artifactVersionId}`, signal, ); }