import type { Pool } from "pg"; export interface ReembedTarget { memoryId: string; text: string; } export interface ReembedRunOptions { modelId: string; dimensions: number; batchSize?: number; recoveryAfterMs?: number; } export interface ReembedRunResult { id: string; status: "completed" | "failed" | "no-op"; claimed: number; reembedded: number; errors: string[]; } /** Default cooldown, overridable via `RememConfig.reembedCooldownMs` (see `config.ts`). */ export declare const DEFAULT_REEMBED_COOLDOWN_MS: number; /** * Cooldown gate for opportunistic hook-triggered re-embedding: avoids * hammering the database with a reembedStale() attempt on every prompt. */ export declare function shouldAttemptReembed(lastAttemptMs: number | undefined, now?: () => number, cooldownMs?: number): boolean; /** * Re-embeds remem.memory_embeddings rows whose stored model/dimensions don't * match the currently configured embedding model. Mirrors * PostgresConsolidationRunner's claim/complete/fail/recover pattern (see * src/consolidation.ts) reusing the existing remem.consolidation_records * table for run tracking, so stuck runs from a crashed process are safely * reclaimed rather than silently lost. */ export declare class PostgresReembedRunner { private readonly pool; private readonly embed; private readonly options; private readonly batchSize; private readonly recoveryAfterMs; constructor(pool: Pool, embed: (text: string, signal?: AbortSignal) => Promise, options: ReembedRunOptions); run(signal?: AbortSignal): Promise; private recoverInterruptedRuns; private claimStaleRows; private complete; private fail; private releaseClaim; }