/** * conversation-archive-enrich-rejection MCP tool. * * Durable rejection memory for conversation-archive-enrich. Writes to a * sidecar JSONL file alongside the account's state directory; the read side * (filter step) lives in `conversation-archive-derive-insights.ts` so the * path constant has a single source of truth. * * Modes: * record — append a rejection line. O_APPEND is POSIX-atomic for writes * ≤ PIPE_BUF; one JSONL line is well under that, so concurrent * appends never corrupt the file. * undo — read all lines, drop matches by (chunkElementId, kind, * contentHash), then atomic-rename the rewritten file. A `wire` * of the same key triggers undo so the operator's change of mind * doesn't leave stale rejections behind. * * Residual race: a `record` append landing between the `undo`'s read and * rename is overwritten. The per-row operator gate is single-threaded * (one chat-turn at a time), so this window is not exploitable in normal * operation. A `flock`-based fix is deferred until rejection volume warrants. */ export type RejectionMode = "record" | "undo"; export interface RecordRejectionParams { accountId: string; archiveElementId: string; chunkElementId: string; kind: string; contentHash: string; mode: RejectionMode; sessionId?: string; } export interface RecordRejectionResult { ok: true; mode: RejectionMode; beforeCount: number; afterCount: number; path: string; } export declare function conversationArchiveEnrichRejection(params: RecordRejectionParams): Promise; //# sourceMappingURL=conversation-archive-enrich-rejection.d.ts.map