import { getRequiredEnv, getStdout, type HealthCheckInput, HealthCheckOutput, type IEither, type ITraceable, TraceUtil, } from "@emprespresso/pengueno"; export const healthCheck = ( input: ITraceable, ): Promise> => input.bimap(TraceUtil.withFunctionTrace(healthCheck)) .move(getRequiredEnv("LAMINAR_HOST")) // we need to test LAMINAR_HOST is propagated to getStdout for other procedures .map(({ item }) => item.moveRight(["laminarc", "show-jobs"])) .map((i) => i.item.mapRight(i.move.apply) .flatMapAsync(getStdout.apply) .then((gotJobs) => gotJobs.moveRight(HealthCheckOutput.YAASQUEEN)) ) .item;