| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import type {
- ConfigFileResponse,
- ContentItemsResponse,
- DashboardResponse,
- PlatformCatalogResponse,
- QueryListResponse,
- RunListResponse,
- RuntimeFileResponse,
- RuntimeFilesResponse,
- TimelineResponse
- } from "./types";
- const DEFAULT_API_BASE_URL = "http://127.0.0.1:8000";
- export class ApiError extends Error {
- status: number;
- detail: unknown;
- constructor(message: string, status: number, detail: unknown) {
- super(message);
- this.name = "ApiError";
- this.status = status;
- this.detail = detail;
- }
- }
- export function apiBaseUrl() {
- return (
- process.env.NEXT_PUBLIC_CONTENTFIND_API_BASE_URL ||
- process.env.VITE_CONTENTFIND_API_BASE_URL ||
- DEFAULT_API_BASE_URL
- ).replace(/\/$/, "");
- }
- async function request<T>(path: string): Promise<T> {
- const response = await fetch(`${apiBaseUrl()}${path}`, {
- headers: { Accept: "application/json" },
- cache: "no-store"
- });
- if (!response.ok) {
- let detail: unknown = null;
- try {
- detail = await response.json();
- } catch {
- detail = await response.text();
- }
- throw new ApiError(`request failed: ${path}`, response.status, detail);
- }
- return response.json() as Promise<T>;
- }
- export function listRuns(params: URLSearchParams) {
- const query = params.toString();
- return request<RunListResponse>(`/runs${query ? `?${query}` : ""}`);
- }
- export function getDashboard(runId: string) {
- return request<DashboardResponse>(`/runs/${encodeURIComponent(runId)}/dashboard`);
- }
- export function getQueries(runId: string) {
- return request<QueryListResponse>(`/runs/${encodeURIComponent(runId)}/queries`);
- }
- export function getTimeline(runId: string) {
- return request<TimelineResponse>(`/runs/${encodeURIComponent(runId)}/timeline`);
- }
- export function getContentItems(runId: string) {
- return request<ContentItemsResponse>(`/runs/${encodeURIComponent(runId)}/content-items`);
- }
- export function getRuntimeFiles(runId: string) {
- return request<RuntimeFilesResponse>(`/runs/${encodeURIComponent(runId)}/runtime-files`);
- }
- export function getRuntimeFile(runId: string, filename: string, limit = 100) {
- const safeFilename = encodeURIComponent(filename);
- return request<RuntimeFileResponse>(
- `/runs/${encodeURIComponent(runId)}/runtime-files/${safeFilename}?limit=${limit}`
- );
- }
- export function getConfigRulePacks() {
- return request<ConfigFileResponse>("/config/rule-packs");
- }
- export function getConfigWalkStrategy() {
- return request<ConfigFileResponse>("/config/walk-strategy");
- }
- export function getConfigQueryPrompts() {
- return request<ConfigFileResponse>("/config/query-prompts");
- }
- export function getConfigWalkPolicy() {
- return request<ConfigFileResponse>("/config/walk-policy");
- }
- export function getConfigPlatforms() {
- return request<PlatformCatalogResponse>("/config/platforms");
- }
|