import { apiFetch } from "./client"; export interface EvidenceUnit { id: string; title: string; kind: string; language: string; purposes: string[]; applies_to: { concepts: string[]; tables: string[]; columns: string[] }; payload: Record>; provenance: { kind?: "manual"; declared_by?: string; source_file?: string; supporting_excerpts?: string[]; original?: { source_file: string; supporting_excerpts: string[] } | null }; review_items: Array<{ code: string; message: string; field?: string }>; file: string; status: string; revision: string; } export interface EvidencePage { source_reviews?: EvidenceSourceReview[]; items: EvidenceUnit[]; item?: EvidenceUnit; total: number; page: number; page_size: number; errors: Array<{ file: string; message: string }>; initialized: boolean; active_revision: string | null; pending_revision: string | null; location: { repository: string | null; workspace: string | null; runtime_workspace: string; host: string; command: string; git_commands: string[] }; } export interface EvidenceSourceReview { id: string; uri: string; revision: string; availability: "available" | "missing"; status: "review" | "applying" | "accepted" | "kept"; decision?: "keep" | "replace"; current?: EvidenceUnit[]; proposed: EvidenceUnit[]; removed_ids?: string[]; suppressed?: boolean; } export type EvidenceSourceAction = { action: "refresh" } | { action: "decide"; sourceId: string; revision: string; decision: "keep" | "replace"; }; export async function actOnEvidenceSources(workspace: string, action: EvidenceSourceAction) { const result = await apiFetch<{status: string; warnings?: string[]}>( `/workspaces/${encodeURIComponent(workspace)}/evidence/sources`, {method: "POST", body: JSON.stringify(action)}); if (result.status !== "succeeded") throw new Error(result.warnings?.join(" ") || "Source operation failed."); return result; } export function listEvidence(workspace: string, filters: Record = {}) { const params = new URLSearchParams(); for (const [key, value] of Object.entries(filters)) if (value !== "") params.set(key, String(value)); return apiFetch(`/workspaces/${encodeURIComponent(workspace)}/evidence?${params}`); } export function getEvidence(workspace: string, id: string) { return apiFetch(`/workspaces/${encodeURIComponent(workspace)}/evidence/${encodeURIComponent(id)}`); }