openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
74 lines (73 loc) • 4.27 kB
JavaScript
import { r as openOpenClawStateDatabase } from "./openclaw-state-db-DJZ7EKoI.mjs";
import { c as withExistingOpenClawStateDatabaseArtifactPreservingReadOnlyAsync } from "./openclaw-state-db-readonly-ywwvuxdQ.mjs";
import { o as runOpenClawStateWorkerOperation } from "./openclaw-state-worker-store-BxZXTKna.mjs";
import { d as loadDeliveryQueueEntriesInDatabase, f as prepareDeliveryQueueTerminalEntry, h as terminalizePendingDeliveryQueueEntryInDatabase, i as countPendingDeliveryQueueEntriesInDatabase } from "./delivery-queue-sqlite.kernel-cI0xXqnW.mjs";
import { n as resolveDeliveryQueueStateEnv, t as captureDeliveryQueueStateContext } from "./delivery-queue-state-context-CpJOlAo7.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) });
}
/** Select receipt and pending custody together, preserving bounded receipt expiry. */
async function inspectDeliveryQueueReceipt(queueName, id, includePending, context) {
const result = await executeDeliveryQueueOperation(context, void 0, {
type: "deliveryQueue.inspectReceipt",
input: {
queueName,
id,
includePending
}
});
context.workerContext.admission.assertCurrent();
return result;
}
/** 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. */
async function countPendingDeliveryQueueEntries(queueNames, stateDir, context) {
if (queueNames.length === 0) return 0;
const captured = context ?? captureDeliveryQueueStateContext(stateDir);
const count = await executeDeliveryQueueOperation(captured, void 0, {
type: "deliveryQueue.countPending",
input: { queueNames: [...queueNames] }
});
captured.workerContext.admission.assertCurrent();
return count;
}
/** Doctor's offline migration retains its admitted native database owner. */
function countPendingDeliveryQueueEntriesForMaintenance(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 { inspectDeliveryQueueReceipt as a, terminalizePendingDeliveryQueueEntry as c, countPendingDeliveryQueueEntriesReadOnly as i, executeDeliveryQueueOperation as l, countPendingDeliveryQueueEntries as n, loadDeliveryQueueEntries as o, countPendingDeliveryQueueEntriesForMaintenance as r, pruneExpiredDeliveryQueueTombstones as s, countFailedDeliveryQueueEntries as t };