import type { CaptureProfile, EvidenceRecord, FidelityVector, ReconstructionSpec, } from "@siax/c0py-types"; export interface TargetDescriptor { id: string; url: string; allowedOrigins: string[]; mode: ReconstructionSpec["mode"]; } export interface DiscoveryResult { targetId: string; routes: string[]; candidateWorkflows: string[]; evidence: EvidenceRecord[]; } export interface CaptureRequest { target: TargetDescriptor; profile: CaptureProfile; routes: string[]; } export interface CaptureResult { targetId: string; profileId: string; evidence: EvidenceRecord[]; warnings: PipelineFailure[]; } export interface VerificationRequest { spec: ReconstructionSpec; sourceEvidence: EvidenceRecord[]; implementationUrl: string; } export interface VerificationResult { specId: string; fidelity: FidelityVector; failures: PipelineFailure[]; passed: boolean; } export type FailureKind = | "CaptureFailure" | "DiscoveryFailure" | "EvidenceGap" | "ReconstructionFailure" | "VerificationFailure" | "AuthorizationBoundary" | "UnsupportedSurface" | "DynamicContentVariance" | "NetworkReplayLimited" | "AuthSessionMissing"; export interface PipelineFailure { id: string; kind: FailureKind; message: string; route?: string; evidenceIds?: string[]; retryable: boolean; details?: Record; } export interface DiscoveryAdapter { id: string; discover(target: TargetDescriptor, profile: CaptureProfile): Promise; } export interface CaptureAdapter { id: string; capture(request: CaptureRequest): Promise; } export interface ReconstructionAdapter { id: string; reconstruct(spec: ReconstructionSpec): Promise<{ artifactRef: string; previewUrl?: string; commitRef?: string; }>; } export interface VerificationAdapter { id: string; verify(request: VerificationRequest): Promise; }