Files
Moltbot/extensions/tlon/src/monitor/processed-messages.ts
2026-02-22 10:46:34 +01:00

34 lines
743 B
TypeScript

import { createDedupeCache } from "openclaw/plugin-sdk";
export type ProcessedMessageTracker = {
mark: (id?: string | null) => boolean;
has: (id?: string | null) => boolean;
size: () => number;
};
export function createProcessedMessageTracker(limit = 2000): ProcessedMessageTracker {
const dedupe = createDedupeCache({ ttlMs: 0, maxSize: limit });
const mark = (id?: string | null) => {
const trimmed = id?.trim();
if (!trimmed) {
return true;
}
return !dedupe.check(trimmed);
};
const has = (id?: string | null) => {
const trimmed = id?.trim();
if (!trimmed) {
return false;
}
return dedupe.peek(trimmed);
};
return {
mark,
has,
size: () => dedupe.size(),
};
}