UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

46 lines (45 loc) 2.5 kB
import { s as readConfigFileSnapshot } from "./io.runtime-B9iJRs3w.js"; import { a as getRuntimeConfigAppliedHash, d as hashRuntimeConfigValue } from "./runtime-snapshot-BaQikjTR.js"; import "./config-Cs0XXL3x.js"; import { f as getActivePluginRegistryVersion } from "./runtime-BL4wZfTq.js"; import { r as redactConfigSnapshot } from "./redact-snapshot-DcfZQ78H.js"; //#region src/gateway/config-get-response.ts let configGetResponseCache; function createConfigGetResponse(snapshot, uiHints, revisionProjector) { const redacted = redactConfigSnapshot(snapshot, uiHints); const appliedConfigHash = getRuntimeConfigAppliedHash(); return { ...redacted, hash: redacted.hash ? revisionProjector.projectRawHash(redacted.hash) : redacted.hash, configRevisionHash: revisionProjector.projectResolvedHash(hashRuntimeConfigValue(snapshot.sourceConfig)), appliedConfigHash: appliedConfigHash ? revisionProjector.projectResolvedHash(appliedConfigHash) : null }; } /** Reads and projects config.get once per watcher-owned runtime and plugin-schema revision. */ async function readConfigGetResponse(params) { const getHotReloadStatus = params.getHotReloadStatus; if (!getHotReloadStatus || getHotReloadStatus() !== "active") return createConfigGetResponse(await readConfigFileSnapshot(), params.loadUiHints(), params.revisionProjector); const appliedConfigHash = getRuntimeConfigAppliedHash(); const pluginRegistryVersion = getActivePluginRegistryVersion(); if (configGetResponseCache?.getHotReloadStatus === getHotReloadStatus && configGetResponseCache.revisionProjector === params.revisionProjector && configGetResponseCache.appliedConfigHash === appliedConfigHash && configGetResponseCache.pluginRegistryVersion === pluginRegistryVersion) return await configGetResponseCache.promise; const promise = (async () => createConfigGetResponse(await readConfigFileSnapshot(), params.loadUiHints(), params.revisionProjector))(); configGetResponseCache = { getHotReloadStatus, revisionProjector: params.revisionProjector, appliedConfigHash, pluginRegistryVersion, promise }; try { return await promise; } catch (error) { if (configGetResponseCache?.promise === promise) configGetResponseCache = void 0; throw error; } } /** Invalidates cached config.get work after the watcher accepts a config candidate. */ function invalidateConfigGetResponseCache() { configGetResponseCache = void 0; } //#endregion export { readConfigGetResponse as n, invalidateConfigGetResponseCache as t };