/** * Delta Module v3 * * Handles diff computation and delta storage for attribution tracking. * Uses unified diff format for computing what changed between edits. * * Storage: .git/agentblame/working/{base_sha}/deltas.jsonl */ import type { DeltaHunk, EditDelta } from "./types"; /** * Get the deltas.jsonl path for a base SHA */ export declare function getDeltasPath(repoRoot: string, baseSha: string): string; /** * Compute unified diff hunks between two strings * Returns array of DeltaHunk describing what changed */ export declare function computeDiff(before: string, after: string): DeltaHunk[]; /** * Compute diff and return detailed line information * Useful for debugging and testing */ export declare function computeDiffDetailed(before: string, after: string): { hunks: DeltaHunk[]; additions: number; deletions: number; }; /** * Append a delta to the working log * Deltas are stored in JSONL format for append-only writes */ export declare function appendDelta(repoRoot: string, baseSha: string, delta: EditDelta): void; /** * Read all deltas for a base SHA * Optionally filter by file path */ export declare function readDeltas(repoRoot: string, baseSha: string, file?: string): EditDelta[]; /** * Read deltas for a specific file (more efficient than filtering all) */ export declare function readDeltasForFile(repoRoot: string, baseSha: string, filePath: string): EditDelta[]; /** * Get all unique files that have deltas */ export declare function getFilesWithDeltas(repoRoot: string, baseSha: string): string[]; /** * Get the most recent AI delta for a file (if any) * Used to detect if another AI tool recently edited a file */ export declare function getLastAIDeltaForFile(repoRoot: string, baseSha: string, filePath: string): EditDelta | null; /** * Get the most recent delta for a file (AI or human) * Used to get the latest known state of a file */ export declare function getLastDeltaForFile(repoRoot: string, baseSha: string, filePath: string): EditDelta | null; /** * Clear deltas for a base SHA (after commit) */ export declare function clearDeltas(repoRoot: string, baseSha: string): void; /** * Get delta statistics for a base SHA */ export declare function getDeltaStats(repoRoot: string, baseSha: string): { totalDeltas: number; aiDeltas: number; humanDeltas: number; files: number; totalAdditions: number; totalDeletions: number; }; /** * Create an AI edit delta */ export declare function createAIDelta(file: string, sessionId: string, promptId: number | null, hunks: DeltaHunk[], afterBlob?: string): EditDelta; /** * Create a human edit delta */ export declare function createHumanDelta(file: string, hunks: DeltaHunk[], afterBlob?: string): EditDelta;