refactor: unify queue drop handling

This commit is contained in:
Peter Steinberger
2026-01-17 06:37:45 +00:00
parent a4178e4062
commit eb8a0510e0
3 changed files with 59 additions and 39 deletions

View File

@@ -6,8 +6,8 @@ import {
normalizeDeliveryContext,
} from "../utils/delivery-context.js";
import {
applyQueueDropPolicy,
buildCollectPrompt,
buildQueueSummaryLine,
buildQueueSummaryPrompt,
hasCrossChannelItems,
waitForQueueDebounce,
@@ -156,22 +156,15 @@ export function enqueueAnnounce(params: {
const queue = getAnnounceQueue(params.key, params.settings, params.send);
queue.lastEnqueuedAt = Date.now();
const cap = queue.cap;
if (cap > 0 && queue.items.length >= cap) {
const shouldEnqueue = applyQueueDropPolicy({
queue,
summarize: (item) => item.summaryLine?.trim() || item.prompt.trim(),
});
if (!shouldEnqueue) {
if (queue.dropPolicy === "new") {
scheduleAnnounceDrain(params.key);
return false;
}
const dropCount = queue.items.length - cap + 1;
const dropped = queue.items.splice(0, dropCount);
if (queue.dropPolicy === "summarize") {
for (const droppedItem of dropped) {
queue.droppedCount += 1;
const base = droppedItem.summaryLine?.trim() || droppedItem.prompt.trim();
queue.summaryLines.push(buildQueueSummaryLine(base));
}
while (queue.summaryLines.length > cap) queue.summaryLines.shift();
}
return false;
}
const origin = normalizeDeliveryContext(params.item.origin);