import type { DurableTaskSupervisor } from "@agentium/core";
import {
DurableAgentQueue, DurableAgentWorker,
type DurableDriverRegistration, type DurableQueueConfig, type DurableWorkerConfig,
} from "@agentium/queue";
export function createDurableDelivery(options: {
connection: DurableQueueConfig["connection"];
supervisor: DurableTaskSupervisor;
admitTask: DurableQueueConfig["admit"];
recheckCurrentGrants: DurableWorkerConfig["admit"];
execute: DurableDriverRegistration["execute"];
}) {
const queue = new DurableAgentQueue({
connection: options.connection,
supervisor: options.supervisor,
admit: options.admitTask,
});
const worker = new DurableAgentWorker({
connection: options.connection,
supervisor: options.supervisor,
admit: options.recheckCurrentGrants,
drivers: [{ id: "save-document", version: 1, recoverable: true, execute: options.execute }],
});
return { queue, worker };
}