import { MAX_PATCH_CACHE, PATCH_CACHE_TTL_MS } from "../constants.ts"; export type ApplyResult = { status: "clean" | "conflict"; output: string }; type Entry = { result: ApplyResult; expiresAt: number }; const cache = new Map(); export const patchCache = { get: (id: number): ApplyResult | undefined => { const entry = cache.get(id); if (!entry) return undefined; if (entry.expiresAt <= Date.now()) { cache.delete(id); return undefined; } return entry.result; }, set: (id: number, result: ApplyResult) => { if (cache.size >= MAX_PATCH_CACHE && !cache.has(id)) { cache.delete(cache.keys().next().value!); } cache.set(id, { result, expiresAt: Date.now() + PATCH_CACHE_TTL_MS }); }, invalidate: (id: number) => cache.delete(id), };