export type VaultArtifactType = "document" | "pdf" | "image" | "diagram" | "audio" | "video" | "transcript" | "reference"; export type VaultSensitivity = "public" | "internal" | "confidential" | "restricted"; export type VaultIngestionStatus = "registered" | "indexed" | "transcribed" | "redacted" | "failed"; export interface VaultArtifact { id: string; source: string; path: string; fileName: string; type: VaultArtifactType; mediaType: string; sizeBytes: number; checksum: string; owner: string; tenant: string; workspace: string; sensitivity: VaultSensitivity; retention: string; ingestionStatus: VaultIngestionStatus; transcriptPath?: string; registeredAt: string; } export interface VaultCatalog { schemaVersion: 1; updatedAt: string; artifacts: VaultArtifact[]; } export interface VaultListOptions { root?: string; tenant?: string; workspace?: string; type?: string; sensitivity?: string; status?: string; limit?: number; cursor?: number; } export interface VaultListResult { items: VaultArtifact[]; total: number; limit: number; cursor: number; nextCursor?: number; } export interface VaultPackOptions { root?: string; query: string; taskId?: string; phase?: string; role?: string; targetChars?: number; maxArtifacts?: number; tenant?: string; workspace?: string; } export interface VaultPackResult { generatedAt: string; query: string; taskId?: string; phase?: string; role?: string; markdownArtifact: string; jsonArtifact: string; budget: { targetChars: number; usedChars: number; truncated: boolean; }; redactions: number; items: VaultPackItem[]; } export interface VaultPackItem { artifactId: string; source: string; path: string; sensitivity: VaultSensitivity; inclusionReason: string; excerpt: string; transcriptPath?: string; }