UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

58 lines (57 loc) • 3.02 kB
import { l as normalizeOptionalString } from "./string-coerce-6kR-86XC.mjs"; import { r as resolveStateDir } from "./state-dir-CfAW6S2K.mjs"; import "./paths-FklbMVOH.mjs"; import { t as createSubsystemLogger } from "./subsystem-BlrgtxyM.mjs"; import "./session-key-BC4m_Ly5.mjs"; import { l as resolveSessionStorePathCore } from "./paths-CAzSovN1.mjs"; import { b as listConfiguredSessionStoreAgentIds } from "./openclaw-state-db-VZFEEleX.mjs"; import { h as readAgentDatabaseAdmissionRefusal } from "./agent-database-admission-BBZaKb2P.mjs"; import { o as resolveSqliteTargetFromSessionStorePath } from "./session-sqlite-target-BGognaPy.mjs"; import { t as resolveAgentSessionDirs } from "./session-dirs-SATsXf4g.mjs"; import { a as resolveAllAgentSessionStoreTargetsSync } from "./targets-B3vrlQbX.mjs"; import { t as hasSessionEntriesByStatusReadOnly } from "./session-accessor.sqlite-entry-BuCmtpuj.mjs"; import "./session-accessor-BM3Wa1Bx.mjs"; import "./sessions-nJdQddS3.mjs"; import path from "node:path"; //#region src/agents/main-session-recovery/main-session-restart-recovery-shared.ts const mainSessionRecoveryLog = createSubsystemLogger("main-session-restart-recovery"); const DEFAULT_RECOVERY_DELAY_MS = 5e3; function resolveRestartRecoveryTerminalClientRunId(entry) { return entry.restartRecoverySourceIngress === "control-ui" ? normalizeOptionalString(entry.restartRecoveryDeliverySourceRunId) : void 0; } async function discoverRestartRecoveryStoreTargets(params) { const storeTargets = []; const stateDir = params.stateDir ?? resolveStateDir(process.env); const env = { ...process.env, OPENCLAW_STATE_DIR: stateDir }; if (params.cfg) { const configuredAgentIds = listConfiguredSessionStoreAgentIds(params.cfg); const configuredStorePaths = new Set(configuredAgentIds.map((agentId) => path.resolve(resolveSessionStorePathCore(params.cfg?.session?.store, { agentId, env })))); const configuredAgentIdSet = new Set(configuredAgentIds); for (const target of resolveAllAgentSessionStoreTargetsSync(params.cfg, { env })) { const storePath = path.resolve(target.storePath); if (!configuredAgentIdSet.has(target.agentId) && !configuredStorePaths.has(storePath)) continue; storeTargets.push({ ...target, storePath }); } } else for (const sessionsDir of await resolveAgentSessionDirs(stateDir)) { const storePath = path.join(sessionsDir, "sessions.json"); storeTargets.push({ agentId: resolveSqliteTargetFromSessionStorePath(storePath).agentId ?? "main", storePath }); } return storeTargets.filter((target) => !readAgentDatabaseAdmissionRefusal(target.agentId, { env }) && (!params.statuses || hasSessionEntriesByStatusReadOnly({ ...target, env }, params.statuses))).toSorted((a, b) => a.storePath.localeCompare(b.storePath) || a.agentId.localeCompare(b.agentId)); } //#endregion export { resolveRestartRecoveryTerminalClientRunId as i, discoverRestartRecoveryStoreTargets as n, mainSessionRecoveryLog as r, DEFAULT_RECOVERY_DELAY_MS as t };