openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
58 lines (57 loc) • 2.63 kB
JavaScript
import { t as resolveGatewayReloadSettings } from "./config-reload-settings-BUK2a-7x.js";
//#region src/gateway/server-shared-auth-generation.ts
/** Disconnect shared-auth clients whose generation no longer matches the expected one. */
function disconnectStaleSharedGatewayAuthClients(params) {
for (const gatewayClient of params.clients) {
if (!gatewayClient.usesSharedGatewayAuth) continue;
if (gatewayClient.sharedGatewaySessionGeneration === params.expectedGeneration) continue;
try {
gatewayClient.socket.close(4001, "gateway auth changed");
} catch {}
}
}
/** Disconnect every shared-auth client regardless of generation. */
function disconnectAllSharedGatewayAuthClients(clients) {
for (const gatewayClient of clients) {
if (!gatewayClient.usesSharedGatewayAuth) continue;
try {
gatewayClient.socket.close(4001, "gateway auth changed");
} catch {}
}
}
/** Resolve the generation clients must use, treating null as "current is required". */
function getRequiredSharedGatewaySessionGeneration(state) {
return state.required === null ? state.current : state.required;
}
/** Update current generation and clear stale required-generation markers. */
function setCurrentSharedGatewaySessionGeneration(state, nextGeneration) {
const previousGeneration = state.current;
state.current = nextGeneration;
if (state.required === nextGeneration) {
state.required = null;
return;
}
if (state.required !== null && previousGeneration !== nextGeneration) state.required = null;
}
/** Enforce shared auth generation behavior after a config write. */
function enforceSharedGatewaySessionGenerationForConfigWrite(params) {
const reloadMode = resolveGatewayReloadSettings(params.nextConfig).mode;
const nextSharedGatewaySessionGeneration = params.resolveRuntimeSnapshotGeneration();
if (reloadMode === "off") {
params.state.current = nextSharedGatewaySessionGeneration;
params.state.required = nextSharedGatewaySessionGeneration;
disconnectStaleSharedGatewayAuthClients({
clients: params.clients,
expectedGeneration: nextSharedGatewaySessionGeneration
});
return;
}
params.state.required = null;
setCurrentSharedGatewaySessionGeneration(params.state, nextSharedGatewaySessionGeneration);
disconnectStaleSharedGatewayAuthClients({
clients: params.clients,
expectedGeneration: nextSharedGatewaySessionGeneration
});
}
//#endregion
export { setCurrentSharedGatewaySessionGeneration as a, getRequiredSharedGatewaySessionGeneration as i, disconnectStaleSharedGatewayAuthClients as n, enforceSharedGatewaySessionGenerationForConfigWrite as r, disconnectAllSharedGatewayAuthClients as t };