openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
68 lines (67 loc) • 2.82 kB
JavaScript
import { n as canonicalizeMainSessionAlias } from "./main-session-BOUJdkxQ.mjs";
import { d as loadTranscriptHeaderSync } from "./session-accessor.sqlite-read-UBWmiUlC.mjs";
import { n as isTerminalSessionStatus } from "./types-BGDhC4_W.mjs";
import { r as readTranscriptMutationStateSync } from "./session-accessor.sqlite-metadata-read-BzhXpz0y.mjs";
import "./session-accessor-C3ljJ974.mjs";
import "./session-work-start-Bkld8CTK.mjs";
import { n as resolveTimestamp, t as resolveSessionLifecycleTimestampsWithHeader } from "./lifecycle-timestamps-j_lxdI5r.mjs";
//#region src/config/sessions/lifecycle.ts
function resolvePositiveTimestamp(value) {
const timestampMs = resolveTimestamp(value);
return timestampMs !== void 0 && timestampMs > 0 ? timestampMs : void 0;
}
function resolveSessionLifecycleTimestamps(params) {
return resolveSessionLifecycleTimestampsWithHeader({
...params,
readHeader: (scope) => params.readHeader ? params.readHeader(scope.sessionId) : loadTranscriptHeaderSync(scope)
});
}
function resolveTerminalMainSessionTranscriptRegistryCheck(params) {
if (!params.entry || !params.sessionKey) return;
const configuredMainSessionKey = canonicalizeMainSessionAlias({
cfg: { session: {
scope: params.sessionScope,
mainKey: params.mainKey
} },
agentId: params.agentId,
sessionKey: params.mainKey ?? "main"
});
if (canonicalizeMainSessionAlias({
cfg: { session: {
scope: params.sessionScope,
mainKey: params.mainKey
} },
agentId: params.agentId,
sessionKey: params.sessionKey
}) !== configuredMainSessionKey) return;
if (!isTerminalSessionStatus(params.entry.status)) return;
if (params.entry.status === "done") return;
if (params.entry.status === "failed") return;
const registryTimestampMs = resolvePositiveTimestamp(params.entry.updatedAt);
if (registryTimestampMs === void 0) return;
const sessionId = typeof params.entry.sessionId === "string" ? params.entry.sessionId.trim() : "";
if (!sessionId) return;
return {
sessionId,
registryTimestampMs
};
}
function hasTerminalMainSessionTranscriptNewerThanRegistrySync(params) {
const check = resolveTerminalMainSessionTranscriptRegistryCheck(params);
if (!check) return false;
try {
const mutation = readTranscriptMutationStateSync({
agentId: params.agentId,
sessionId: check.sessionId,
storePath: params.storePath
});
if (mutation.updatedAt === null) return false;
const transcriptMutationAtMs = Math.floor(mutation.updatedAt);
const registryTimestampMs = Math.floor(mutation.observedAt ?? check.registryTimestampMs);
return Number.isFinite(transcriptMutationAtMs) && transcriptMutationAtMs > registryTimestampMs;
} catch {
return false;
}
}
//#endregion
export { resolveSessionLifecycleTimestamps as n, hasTerminalMainSessionTranscriptNewerThanRegistrySync as t };