export interface InvalidationTarget { from: string; to: string | null; type: 'migration' | 'removal' | 'deprecation'; } export interface InvalidationResult { invalidated: number; targets: string[]; skippedPinned: string[]; dryRun: boolean; preview: { id: string; headline: string; }[]; } export interface InvalidationOptions { /** Evaluate matches but write nothing. */ dryRun?: boolean; /** Consider ONLY this memory id (no content/tag matching). */ onlyId?: string; } /** * Extract what was replaced/removed from a commit message. * Returns null if the commit isn't a breaking/migration change. */ export declare function extractInvalidationTarget(message: string): InvalidationTarget | null; /** * Find memories that reference the invalidated pattern and weaken them. * - Halves half_life_days * - Sets confidence to 'stale' * - Adds 'invalidated' tag * - Skips pinned memories (reported in skippedPinned) * * Tag matching is EXACT (2026-06-09 incident): the FULL pattern must equal a * tag. Token-level matching applies to content only, so a pattern that merely * CONTAINS a common tag word ("hippo") can no longer mass-weaken every memory * carrying that tag. Both callers (the CLI `invalidate` command and the * auto-learn-from-git path) inherit this contract. */ export declare function invalidateMatching(hippoRoot: string, target: InvalidationTarget, tenantId?: string, options?: InvalidationOptions): InvalidationResult; //# sourceMappingURL=invalidation.d.ts.map