export type InstructionTarget = "generic" | "claude" | "cursor" | "codex" | "vscode" | "windsurf"; export type InstructionFileStatus = "fresh" | "stale" | "drifted" | "missing" | "user-owned"; export interface InstructionFileSpec { filePath: string; blockId: string; generator: string; version: string; target: InstructionTarget; sourceManifest: string; content: string; } export interface InstructionFileMetadata { blockId: string; generator: string; version: string; target: InstructionTarget; sourceManifest: string; contentHash: string; updatedAt: string; } export interface InstructionFileStatusItem { filePath: string; blockId: string; status: InstructionFileStatus; expectedHash: string; actualHash?: string; metadataHash?: string; generator?: string; version?: string; target?: string; sourceManifest?: string; updatedAt?: string; reason: string; } export interface InstructionFileStatusReport { items: InstructionFileStatusItem[]; totals: Record; } export interface ManagedInstructionBlockInput { blockId: string; generator: string; version: string; target: InstructionTarget; sourceManifest: string; content: string; updatedAt?: string; } export interface ManagedInstructionBlockResult { content: string; changed: boolean; drift: boolean; missing: boolean; hash: string; existingHash?: string; } export interface InstructionImportEntry { id: string; content: string; targets?: Partial>; } export interface InstructionImportResolution { entryId: string; target: InstructionTarget; content: string; importedIds: string[]; }