UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

58 lines (57 loc) 2.63 kB
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 };