feat(core): add reconstruction pipeline contracts

This commit is contained in:
2026-09-16 21:52:45 +02:00
committed by admin
parent ac797d3e4d
commit 762b778ee2
@@ -0,0 +1,92 @@
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<string, unknown>;
}
export interface DiscoveryAdapter {
id: string;
discover(target: TargetDescriptor, profile: CaptureProfile): Promise<DiscoveryResult>;
}
export interface CaptureAdapter {
id: string;
capture(request: CaptureRequest): Promise<CaptureResult>;
}
export interface ReconstructionAdapter {
id: string;
reconstruct(spec: ReconstructionSpec): Promise<{
artifactRef: string;
previewUrl?: string;
commitRef?: string;
}>;
}
export interface VerificationAdapter {
id: string;
verify(request: VerificationRequest): Promise<VerificationResult>;
}