openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
44 lines (43 loc) • 2.1 kB
JavaScript
import { i as truncateWithMarker } from "./utf16-slice-D_ngcYKd.mjs";
import { _ as redactSensitiveText } from "./redact-BEIE6NCT.mjs";
import { n as sanitizeTerminalText } from "./safe-text-C6FhHCw7.mjs";
import { d as getAgentRunLifecycleGeneration } from "./agent-run-registry-RDoBEeyg.mjs";
//#region src/agents/main-session-recovery/main-session-restart-recovery-diagnostics.ts
let failureGeneration;
const failures = /* @__PURE__ */ new Map();
function restartRecoveryStoreTargetKey(target) {
return JSON.stringify([target.agentId, target.storePath]);
}
function currentFailures() {
const generation = getAgentRunLifecycleGeneration();
if (failureGeneration !== generation) {
failures.clear();
failureGeneration = generation;
}
return failures;
}
/** The marker records its outcome; diagnostics never infer successful recovery from a reread. */
function recordStartupRecoveryStoreResult(params) {
if (params.lifecycleGeneration !== getAgentRunLifecycleGeneration()) return;
const pending = currentFailures();
const key = restartRecoveryStoreTargetKey(params.target);
if (params.outcome.ok) pending.delete(key);
else pending.set(key, truncateWithMarker(sanitizeTerminalText(redactSensitiveText(`${params.target.agentId ?? "session store"}: ${String(params.outcome.error)}`, { mode: "tools" })), 2e3, {
marker: "… (see recovery log)",
reserve: 22,
trimEnd: true
}));
}
function readStartupRecoveryWarning(includeSensitive = true) {
const pending = currentFailures();
if (pending.size === 0) return;
const summary = `Startup session recovery is incomplete for ${pending.size} session store(s).`;
const hint = "Inspect the Gateway recovery logs and retry the affected session after repairing its store.";
return `${summary}${includeSensitive ? `\n${truncateWithMarker([...pending.values()].map((failure) => `- ${failure}`).join("\n"), 2e3, {
marker: "… (see recovery log)",
reserve: 22,
trimEnd: true
})}` : ""}\n${hint}`;
}
//#endregion
export { recordStartupRecoveryStoreResult as n, restartRecoveryStoreTargetKey as r, readStartupRecoveryWarning as t };