Files
openclaw/src/gateway/server-ws-runtime.ts
Peter Steinberger b80ab618c3 feat(cloud-workers): authenticated worker protocol with closed ingress and minted credentials (#104688)
* feat(cloud-workers): add authenticated worker protocol

* feat(cloud-workers): add worker credential primitives

* docs(gateway): document closed worker protocol

* test(cloud-workers): keep protocol fixtures lean

* fix(cloud-workers): bound live worker connections

* fix(cloud-workers): close admission and cleanup gaps

* docs: regenerate docs map for worker protocol page
2026-07-11 13:45:14 -07:00

52 lines
2.1 KiB
TypeScript

// WebSocket runtime adapter wires a built GatewayRequestContext into the lower
// level connection handler and shared gateway WebSocket plumbing.
import type { GatewayRequestContext } from "./server-methods/types.js";
import {
attachGatewayWsConnectionHandler,
type AttachGatewayWsConnectionHandlerParams,
} from "./server/ws-connection.js";
// Websocket runtime adapter wires the already-built GatewayRequestContext into
// the lower-level connection handler. This keeps startup context construction
// separate from per-connection websocket plumbing.
type GatewayWsRuntimeParams = Omit<
AttachGatewayWsConnectionHandlerParams,
"buildRequestContext" | "refreshHealthSnapshot"
> & {
context: GatewayRequestContext;
};
/** Attaches websocket handlers for an already-created gateway request context. */
export function attachGatewayWsHandlers(params: GatewayWsRuntimeParams) {
attachGatewayWsConnectionHandler({
wss: params.wss,
clients: params.clients,
preauthConnectionBudget: params.preauthConnectionBudget,
port: params.port,
gatewayHost: params.gatewayHost,
pluginSurfaceScheme: params.pluginSurfaceScheme,
getPluginNodeCapabilities: params.getPluginNodeCapabilities,
resolvedAuth: params.resolvedAuth,
getResolvedAuth: params.getResolvedAuth,
getRequiredSharedGatewaySessionGeneration: params.getRequiredSharedGatewaySessionGeneration,
rateLimiter: params.rateLimiter,
browserRateLimiter: params.browserRateLimiter,
nodeReapprovalCoordinator: params.nodeReapprovalCoordinator,
preauthHandshakeTimeoutMs: params.preauthHandshakeTimeoutMs,
isStartupPending: params.isStartupPending,
gatewayMethods: params.gatewayMethods,
events: params.events,
refreshHealthSnapshot: params.context.refreshHealthSnapshot,
logGateway: params.logGateway,
logHealth: params.logHealth,
logWsControl: params.logWsControl,
extraHandlers: params.extraHandlers,
getMethodRegistry: params.getMethodRegistry,
...(params.workerConnectionService
? { workerConnectionService: params.workerConnectionService }
: {}),
broadcast: params.broadcast,
buildRequestContext: () => params.context,
});
}