mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-04 11:01:16 +01:00
Reviewed and verified at 901c4c4bdc.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
20 lines
926 B
TypeScript
20 lines
926 B
TypeScript
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<typeof createDeliveryWorkCoordinator>,
|
|
service: Pick<ReturnType<typeof decisionService>, "sweepInvalidTargets" | "decisionTargetsChanged" | "hasDecisionTargetWork">,
|
|
canRun: () => boolean,
|
|
) {
|
|
const retryMs = 30_000;
|
|
return coordinator.register(DELIVERY_QUEUES.decisionTargets, {
|
|
retryMs,
|
|
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() + retryMs : null,
|
|
});
|
|
}
|