openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
59 lines (58 loc) • 3.96 kB
JavaScript
import { u as withExistingOpenClawStateDatabaseArtifactPreservingReadOnlyAsync } from "./openclaw-state-db-readonly-BLZyK3So.mjs";
import { S as loadDeliveryQueueEntryInDatabase } from "./openclaw-state-db-legacy-backfills-D9u-q2VB.mjs";
import { r as openOpenClawStateDatabase } from "./openclaw-state-db-VZFEEleX.mjs";
import { a as runOpenClawStateWorkerOperation } from "./openclaw-state-worker-store-C_wo5SMW.mjs";
import { d as prepareDeliveryQueueTerminalEntry, i as countPendingDeliveryQueueEntriesInDatabase, l as getDeliveryQueueEntryOwnersInDatabase, m as terminalizePendingDeliveryQueueEntryInDatabase, u as loadDeliveryQueueEntriesInDatabase } from "./delivery-queue-sqlite.kernel-DPfUiyM5.mjs";
import { n as resolveDeliveryQueueStateEnv, t as captureDeliveryQueueStateContext } from "./delivery-queue-state-context-xnQhPVYI.mjs";
//#region src/infra/delivery-queue-worker-store.ts
async function executeDeliveryQueueOperation(context, stateDir, command, options) {
const captured = context ?? captureDeliveryQueueStateContext(stateDir);
return await runOpenClawStateWorkerOperation(captured.workerContext, (scope) => scope.execute(command), options);
}
//#endregion
//#region src/infra/delivery-queue-sqlite.ts
function openStateDatabase(stateDir, context) {
return openOpenClawStateDatabase({ env: resolveDeliveryQueueStateEnv(stateDir, context) });
}
/** Load a single pending delivery queue entry. */
function loadDeliveryQueueEntry(queueName, id, stateDir, mode = "pending", context) {
return loadDeliveryQueueEntryInDatabase(openStateDatabase(stateDir, context), queueName, id, mode);
}
/** Read row status without hiding dead-lettered entries. */
function getDeliveryQueueEntryStatus(queueName, id, stateDir) {
return getDeliveryQueueEntryOwnersInDatabase(openStateDatabase(stateDir), [queueName], id).get(queueName)?.status;
}
/** Load all pending entries for a queue namespace in database order. */
function loadDeliveryQueueEntries(queueName, stateDir, mode = "pending", context) {
return loadDeliveryQueueEntriesInDatabase(openStateDatabase(stateDir, context), queueName, mode);
}
/** Count dead-lettered entries per queue namespace for coarse health reporting. */
async function countFailedDeliveryQueueEntries(stateDir, context) {
return executeDeliveryQueueOperation(context, stateDir, {
type: "deliveryQueue.countFailed",
input: void 0
});
}
/** Count pending entries across an exact set of queue namespaces. */
function countPendingDeliveryQueueEntries(queueNames, stateDir, context) {
if (queueNames.length === 0) return 0;
return countPendingDeliveryQueueEntriesInDatabase(openStateDatabase(stateDir, context), queueNames);
}
/** Inventory retired custody without opening a writer or creating state. */
async function countPendingDeliveryQueueEntriesReadOnly(queueNames, env = process.env) {
return await withExistingOpenClawStateDatabaseArtifactPreservingReadOnlyAsync((database) => countPendingDeliveryQueueEntriesInDatabase(database, queueNames), { env }) ?? 0;
}
/** Physically expire age-bounded delivery queue tombstones. */
async function pruneExpiredDeliveryQueueTombstones(stateDir, context) {
await executeDeliveryQueueOperation(context, stateDir, {
type: "deliveryQueue.pruneTombstones",
input: void 0
});
}
/** Atomically delete or tombstone a pending row only while its value is unchanged. */
function terminalizePendingDeliveryQueueEntry(params, context) {
const prepared = prepareDeliveryQueueTerminalEntry(params);
return terminalizePendingDeliveryQueueEntryInDatabase(openStateDatabase(params.stateDir, context), prepared);
}
//#endregion
export { loadDeliveryQueueEntries as a, terminalizePendingDeliveryQueueEntry as c, getDeliveryQueueEntryStatus as i, executeDeliveryQueueOperation as l, countPendingDeliveryQueueEntries as n, loadDeliveryQueueEntry as o, countPendingDeliveryQueueEntriesReadOnly as r, pruneExpiredDeliveryQueueTombstones as s, countFailedDeliveryQueueEntries as t };