import type { createDeliveryWorkCoordinator } from "./delivery-work-coordinator.js"; import { DELIVERY_QUEUES } from "./delivery-work-notifications.js"; import type { decisionService } from "./decisions.js"; export function registerDecisionTargetWork( coordinator: ReturnType, service: Pick, "sweepInvalidTargets" | "decisionTargetsChanged" | "hasDecisionTargetWork">, canRun: () => boolean, ) { return coordinator.register(DELIVERY_QUEUES.decisionTargets, { retryMs: 30_000, pausePassiveMaintenance: true, onSettled: service.decisionTargetsChanged, run: signal => canRun() ? service.sweepInvalidTargets(new Date(), signal) : Promise.resolve(), hasPending: async () => canRun() && service.hasDecisionTargetWork(), nextRunAt: () => service.hasDecisionTargetWork() ? Date.now() + 30_000 : null, }); }