openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
32 lines (31 loc) • 1.88 kB
JavaScript
import { t as isFailedWorkerPlacementEnvironmentGone } from "./session-placement-lifecycle-7DQHpaT9.js";
import { i as readWorkerPlacementIdentity, n as projectWorkerPlacementMove, r as projectWorkerSessionPlacement } from "./placement-projector-C4zEtZS1.js";
//#region src/gateway/server-methods/session-placement-read-projection.ts
function projectSessionPlacementFields(params) {
const placement = params.sessionId ? params.placements?.get(params.sessionId) : void 0;
const move = params.sessionId ? params.moves?.get(params.sessionId) : void 0;
const failedRecoveryAction = placement?.state === "failed" ? isFailedWorkerPlacementEnvironmentGone({
environmentService: params.context.workerEnvironmentService,
placement
}) ? "restart" : "stop-first" : void 0;
return {
...placement ? { placement: projectWorkerSessionPlacement(placement, params.context.workerPlacementDiskSpaceReader?.read(placement), params.context.workerPlacementRunnerAvailabilityReader?.read(placement), readWorkerPlacementIdentity(placement, params.context.workerEnvironmentService), failedRecoveryAction) } : {},
...move ? { placementMove: projectWorkerPlacementMove(move) } : {}
};
}
function createSessionPlacementBatchProjector(context, sessions) {
const sessionIds = sessions.flatMap((session) => session.sessionId ? [session.sessionId] : []);
const placements = context.workerSessionPlacementService?.getMany(sessionIds);
const moves = context.workerSessionPlacementService?.getPlacementMoves?.(sessionIds);
return (sessionId) => projectSessionPlacementFields({
context,
sessionId,
placements,
moves
});
}
function readSessionPlacementFields(context, sessionId) {
return createSessionPlacementBatchProjector(context, sessionId ? [{ sessionId }] : [{}])(sessionId);
}
//#endregion
export { readSessionPlacementFields as n, createSessionPlacementBatchProjector as t };